Slide 1

Slide 1 text

出、出~ProxySQL奴~ なんと実は運用していません 2019/06/07 yoku0825 MySQL Casual Talks vol.11(未遂)

Slide 2

Slide 2 text

\こんばんわ/ yoku0825@とある企業のDBA オラクれない ‐ ポスグれない ‐ マイエスキューエる ‐ 生息域 Twitter: @yoku0825 ‐ Blog: 日々の覚書 ‐ 日本MySQLユーザ会 ‐ MySQL Casual ‐ 1/23

Slide 3

Slide 3 text

\こんばんわ/ yoku0825@とある企業のDBA +ときどき、コンサル オラクれない ‐ ポスグれない ‐ マイエスキューエる ‐ 生息域 Twitter: @yoku0825 ‐ Blog: 日々の覚書 ‐ 日本MySQLユーザ会 ‐ MySQL Casual ‐ 2/23

Slide 4

Slide 4 text

ProxySQL MySQLサーバとクライアントの間にプロキシとして仕込む Hostgroupという単位の中でのルーティング SHOW VARIABLES LIKE 'read_only' の戻り値でマスターとスレーブを切り替え Weightによる参照分散先の重みづけ Seconds_Behind_Master の値が一定以上になると参照分散から切り離す ‐ SQLクエリーの中身をパースして打ち分けや書き換え 監査ログの出力 ‐ コネクションプーリング ‐ 「将来的には」SSLターミネーションもやる予定っぽい ‐ 3/23

Slide 5

Slide 5 text

ProxySQL mysqld mysqld mysqld mysqld proxysql AP proxysql AP 4/23

Slide 6

Slide 6 text

ProxySQL mysqld MySQL_Session.cpp MySQL_Thread.cpp ProxySQL core MySQL Protoxol AP MySQL Protoxol DISK RUNTIME proxysql.conf MySQL_Monitor.cpp MySQL_Protocol.cpp 5/23

Slide 7

Slide 7 text

ゴツい 6/23

Slide 8

Slide 8 text

MySQL Router mysqld MySQL Protoxol AP MySQL Protoxol mysqlrouter.conf metadata_cache Routing 7/23

Slide 9

Slide 9 text

薄い… 8/23

Slide 10

Slide 10 text

ProxySQLのすごいところ MySQLプロトコルをガチでしゃべるだけじゃなく、 MySQLのSQLをかなりエミュレートしている 9/23

Slide 11

Slide 11 text

ProxySQL Admin Interface SHOW DATABASES で見たい情報の系統を調べて $ mysql -P6032 -h127.0.0.1 -uadmin -padmin Server version: 5.5.30 (ProxySQL Admin Module) mysql> SHOW DATABASES; +-----+---------------+-------------------------------------+ | seq | name | file | +-----+---------------+-------------------------------------+ | 0 | main | | | 2 | disk | /var/lib/proxysql/proxysql.db | | 3 | stats | | | 4 | monitor | | | 5 | stats_history | /var/lib/proxysql/proxysql_stats.db | +-----+---------------+-------------------------------------+ 5 rows in set (0.00 sec) 10/23

Slide 12

Slide 12 text

ProxySQL Admin Interface SHOW TABLES FROM .. でその系統のテーブル一覧を調べて mysql> SHOW TABLES FROM stats; +--------------------------------------+ | tables | +--------------------------------------+ | global_variables | | stats_memory_metrics | | stats_mysql_commands_counters | | stats_mysql_connection_pool | | stats_mysql_connection_pool_reset | | stats_mysql_errors | | stats_mysql_errors_reset | | stats_mysql_global | | stats_mysql_gtid_executed | | stats_mysql_prepared_statements_info | | stats_mysql_processlist | | stats_mysql_query_digest | | stats_mysql_query_digest_reset | | stats_mysql_query_rules | | stats_mysql_users | | stats_proxysql_servers_checksums | | stats_proxysql_servers_metrics | | stats_proxysql_servers_status | +--------------------------------------+ 18 rows in set (0.00 sec) 11/23

Slide 13

Slide 13 text

ProxySQL Admin Interface SELECT * FROM .. で情報にアクセスする mysql> SELECT * FROM stats.stats_mysql_global; +-----------------------------------------+----------------+ | Variable_Name | Variable_Value | +-----------------------------------------+----------------+ | ProxySQL_Uptime | 3786903 | | Active_Transactions | 0 | | Client_Connections_aborted | 1 | | Client_Connections_connected | 0 | | Client_Connections_created | 24 | .. 12/23

Slide 14

Slide 14 text

ProxySQLの悪いところ 重厚すぎる MySQLプロトコルをエミュレートしてAdminインターフェイスにア クセスできるのは嬉しいけど ‐ 確かにSSLターミネーションが計画に入っているくらい、バックエン ドとフロントエンドでそれぞれしゃべり分けるとかそれはゴツすぎな いか ‐ コネクションをプールされると逆に悪いことがある LAST_INSERT_ID()がカジュアルに死ぬ ‐ キャラクターセットを勝手に書き換えるんじゃない skip_character_set_client_handshake さえしてなければ… ‐ 13/23

Slide 15

Slide 15 text

ProxySQLで覚えておいていただきたい mysql> SELECT * FROM main.runtime_mysql_users\G *************************** 1. row *************************** username: root password: active: 1 use_ssl: 0 default_hostgroup: 0 default_schema: schema_locked: 0 transaction_persistent: 1 fast_forward: 1 ### これ! backend: 0 frontend: 1 max_connections: 10000 comment: 14/23

Slide 16

Slide 16 text

16ページ目で 明かされる衝 撃の真実 15/23

Slide 17

Slide 17 text

実は俺、 ProxySQL運 用してません 16/23

Slide 18

Slide 18 text

  17/23

Slide 19

Slide 19 text

最近ProxySQLの ソースコードと仲良 くなってきました 18/23

Slide 20

Slide 20 text

楽しそうなネタ があったら教え てください! 19/23

Slide 21

Slide 21 text

ただしバー ジョンは1.4系 です! 20/23

Slide 22

Slide 22 text

1.4系…? 21/23

Slide 23

Slide 23 text

Fin(?) 22/23

Slide 24

Slide 24 text

Any Questions and/or Suggestions? 23/23