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

Upload: jonah-berry

Post on 04-Jan-2016

216 views

Category:

Documents


3 download

TRANSCRIPT

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!