MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA ...

24
MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA http://www.sheeri.com [email protected] Technocation, Inc. http://www.technocation.org

Transcript of MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA ...

Page 1: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

MySQL ProxyBoston MySQL User Group

Monday, September 24th, 2007

Sheeri Kritzer, MySQL DBAhttp://[email protected]

Technocation, Inc.http://www.technocation.org

Page 2: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Overview

➲ Architecture

➲ Lua

➲ Examples

Page 3: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Architecture

➲ Proxy

➲ Flexibility lies in simplicity Change what's sent Change what's received Change where it's sent Add functionality

Page 4: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Override Functions

➲ read_query()

➲ read_query_result()

➲ connect_server()

Page 5: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Override Functions (continued)

➲ read_handshake()

➲ read_auth()

➲ read_auth_result()

Page 6: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Starting mysql-proxy

➲ Specify lua script

➲ Default proxy_backend_address=127.0.0.1:3306

➲ Default proxy_address =:4040

Page 7: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

But First, Some Lua!

➲ Fast, small scripting language

➲ Stable, mature

➲ lua.org, lua-users.org

Page 8: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Lua Comments

➲ -- comment, whole or mid-line

➲ --[[ a➲ multi-line➲ comment --]]

➲ NOT #, // or /* */ !!

Page 9: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Lua Commands

➲ if ... then ... end statement

➲ == operator

➲ function <name> ( [args] ) ... end

Page 10: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Lua Commands

➲ if ... then ... end statement

➲ == operator

➲ function <name> ( [args] ) ... end Technically, <name> = function ( [args ] ) ... end

Page 11: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Lua Object Methods

➲ string:byte([i],[j]) i defaults to 1; j defaults to i

➲ string:sub(i,[j]) j defaults to -1 (length of string)

Page 12: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Specific to MySQL Proxy

➲ proxy.COM_QUERY

➲ Finally, the example!

Page 13: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Specific to MySQL Proxy

➲ proxy.COM_QUERY

➲ Finally, the example!

➲ Note: lua script can change on the fly!

Page 14: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Tokens

➲ mysql-proxy 0.6.0 (current)

➲ Avoids the need for regular expressions

➲ Adds knowledge

Page 15: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

read_query()

➲ Query modification/injection

➲ Query logging

➲ Query redirecting

Page 16: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

read_query_result()

➲ Must exist when proxy.PROXY_SEND_QUERY used in read_query()

➲ Monitoring/Auditing

➲ Query redirecting

Page 17: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

connect_server()

➲ proxy.connection backend_ndx thread_id

➲ proxy.servers address connected_clients state

Page 18: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

read_handshake()

➲ Server information

➲ mysqld_version

➲ thread_id

Page 19: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

read_handshake()

➲ scramble

➲ server_addr

➲ client_addr

Page 20: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

read_auth()

➲ username

➲ password (encrypted, nondeterministic)

➲ default db

Page 21: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

read_auth()

➲ The good stuff!

➲ Can reject logins

➲ Watch the watcher!

Page 22: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

read_auth_result()

➲ OK

➲ Error

➲ Result Packet, not Command Packet

Page 23: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

mysql-proxy wish list

➲ Startup scripts

➲ Integration with my.cnf, my.ini config files

➲ HA

Page 24: MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA  awfief@gmail.com Technocation, Inc. .

Feedback?

➲ Other ideas

➲ Questions

➲ Hackfest!