MySQL InnoDB Cluster練習 - Qiita
前回の続き
概要
- MySQL routerは冗長構成にするのではなく、アプリケーションサーバー上でローカルUNIXドメインソケット接続するのが推奨らしい
- 引き続きRedhat系のAlmaLinux8での検証
結果
-
--conf-use-sockets
を付けてbootstrapすることでrouter起動時にsocketファイルが出来上がる - ただしそのままだとsocketファイルのパスはsystemdのprivate-tmp内になってしまう
- mysqlrouterの
--directory
オプションで変更は可能だが、設定ファイル等も移動してしまうのでsystemdのmysqlrouterユニットファイル変更が必要になってしまう - bootstrap後に
/etc/mysqlrouter/mysqlrouter.conf
を書き換えるのが現状の良さげな解か? -
config_generator.cc
にsocketsdir
というオプションがあり、これが使えれば書き換えしなくて済みそうだが、引数を受け付ける実装が無いため使えなかった。
設定
--conf-use-sockets
を付けてbootstrapすることでsocketファイルが出来上がる
// router
# mysqlrouter --bootstrap root@node1 --user=mysqlrouter --conf-use-sockets
# cat /etc/mysqlrouter/mysqlrouter.conf | grep sock
socket=/tmp/mysql.sock
socket=/tmp/mysqlro.sock
socket=/tmp/mysqlx.sock
socket=/tmp/mysqlxro.sock
# systemctl start mysqlrouter
// systemdのprivate-tmpにより実体は以下になる
# ll /tmp/systemd-private-2a0d5074208b46fdbb4fad9862a4b0c4-mysqlrouter.service-WHFHbS/tmp/
total 0
srwxrwxrwx 1 mysqlrouter mysqlrouter 0 May 4 17:35 mysqlro.sock
srwxrwxrwx 1 mysqlrouter mysqlrouter 0 May 4 17:35 mysql.sock
srwxrwxrwx 1 mysqlrouter mysqlrouter 0 May 4 17:35 mysqlxro.sock
srwxrwxrwx 1 mysqlrouter mysqlrouter 0 May 4 17:35 mysqlx.sock
// Unixドメインソケットで接続可だが期待したパスではない
# mysql -u root -p -S /tmp/systemd-private-2a0d5074208b46fdbb4fad9862a4b0c4-mysqlrouter.service-WHFHbS/tmp/mysql.sock
mysql>
// パスを書き換えてみる
# vi /etc/mysqlrouter/mysqlrouter.conf
-socket=/tmp/mysql.sock
+socket=/var/lib/mysqlrouter/mysql.sock
-socket=/tmp/mysqlro.sock
+socket=/var/lib/mysqlrouter/mysqlro.sock
-socket=/tmp/mysqlx.sock
+socket/var/lib/mysqlrouter/mysqlx.sock
-socket=/tmp/mysqlxro.sock
+socket=/var/lib/mysqlrouter/mysqlxro.sock
# systemctl retart mysqlrouter
# mysql -u root -p -S /var/lib/mysqlrouter/mysql.sock
bootstrap時に変更するオプションがあるようだが、引数を受け付ける実装が無かった。
mysql-8.0.24/router/src/router/src/config_generator.cc
if (user_options.find("socketsdir") == user_options.end())
options["socketsdir"] = "/tmp";
MySQL Routerの冗長化について - 2000秒後の私へ
MySQL Routerを使用して、InnoDB Clusterを構成する(MySQL Routerの設定主体) - CLOVER🍀
MySQL :: MySQL Router 8.0 :: 3 Deploying MySQL Router