MySQLのserver-idの振り方 - blog.nomadscafe.jp
本番環境に突っ込むときはセットアップスクリプトがよしなにやってくれるようにしてあるんですが、DockerだとCMDでセットアップスクリプトを毎回流すの…? とかなってもんにょりしたのでmysqld_safeにパッチを書きました。結構前ですが。
Docker_image_for_MySQL_Fabric_aware/mysqld_safe.patch at master · yoku0825/Docker_image_for_MySQL_Fabric_aware
[mysqld_safe]セクションにauto-server-idを渡すと、IPアドレスの3バイト目と4バイト目からserver-idを計算してmysqldに渡してくれます。report-hostをくっつけるのは完全に単なる趣味ですが、report-hostはデフォルトでくっつけてくれてもいいんじゃないかなぁ。
このパッチを適用したmysqld_safeを使うと、
bash-4.1# ip a 592: lo:mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 593: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 02:42:ac:11:00:6b brd ff:ff:ff:ff:ff:ff inet 172.17.0.107/16 scope global eth0 # bin/mysqld_safe --no-defaults --auto-server-id & [1] 6 bash-4.1# 150210 13:19:48 mysqld_safe Logging to '/var/lib/mysql/b283bcd9b8b9.err'. 150210 13:19:48 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql bash-4.1# ps auxww | grep mysqld root 6 0.0 0.1 11304 1472 ? S 13:19 0:00 /bin/sh bin/mysqld_safe --no-defaults --auto-server-id mysql 97 14.0 44.0 1127276 448972 ? Sl 13:19 0:00 /usr/sbin/mysqld --no-defaults --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --server-id=107 --report-host=b283bcd9b8b9 --user=mysql --log-error=/var/lib/mysql/b283bcd9b8b9.err --pid-file=/var/lib/mysql/b283bcd9b8b9.pid root 121 0.0 0.0 6380 648 ? S+ 13:19 0:00 grep mysqld mysql> SELECT @@server_id; +-------------+ | @@server_id | +-------------+ | 107 | +-------------+ 1 row in set (0.00 sec)
こうなります。 DockerでMySQL Fabricをさっくり試すための整備をしたつもり のときに作ってたんですが、Oracleが公式にDocker HubにMySQLのイメージを作るとか言ってるので、ゆるい感じでFeature Requestを出してみました。便利なので。
MySQL Bugs: #75832: Add function to mysqld_safe for setting server-id automatically.
( ´-`).oO(FR出したあとに、思いっきりbash特有の書き方だったことに気付いた。。
0 件のコメント :
コメントを投稿