Top Banner
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
24

MySQL Proxy Boston MySQL User Group Monday, September 24th, 2007 Sheeri Kritzer, MySQL DBA [email protected] Technocation, Inc. .

Jan 04, 2016

Download

Documents

Jonah Berry
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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!