Oracleが主催している MySQLセミナーに参加しました。会場はOracle大阪オフィス。
本当は3月にあった「MySQL 8.0 入門セミナー ~チューニング基礎編、SQLチューニング編~」の方が参加したかったですが、都合がつかず・・・。
今回は「MySQL 8.0 入門セミナー ~インストール&アーキテクチャ基礎編~」で、昨年夏の開催にも参加したのであまり内容は変わっていないだろうなぁという感じ。実際にはメインに8.0を据えていることもあり5.7への言及はなく、資料もボリュームアップしていました。
個人的には入門編ということもあり知っていることも多かったですが、よい復習になりました。
そんな中でもいくつかキャッチアップできたポイントがあるので紹介します。
インストール時の依存関係
rpmでmysql8.0をインストールする場合は、依存関係があるので、以下の3つを同時にインストールする必要がある、というもの。
mysql-community-libs-compat
mysql-community-libs
mysql-community-common
以前 ubuntu に APT でインストールした時には特に依存関係でハマったことはないし、インストールガイドも充実してるので大丈夫なんじゃないかなあという印象。最近はDockerで使うことも多くなってるし。
コマンド例
shell> tar xvf mysql-8.0.16-2.el7.x86_64. rpm-bungle.tar shell> rpm -Uvh mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm \ mysql-community-libs-8.0.16-2.el7.x86_64.rpm mysql-community-common-8.0.16-2.el7.x86_64.rpm shell> rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm \ mysql-community-client-8.0.16-2.el7.x86_64.rpm \ shell> sudo systemctl start mysqld shell> sudo systemctl stop mysqld
innodb_dedicated_server
MySQL8.0から追加されたパラメータで、innodb_buffer_pool_size
などを自動で設定してくれるオプションです。デフォルトでは OFFとなります。
サーバーマシンがMySQL専用として使える場合に利用できるもので、WebサーバーやAppサーバーが一緒に動いているサーバーマシンで利用すると良くないことが起こる可能性があります。
innodb_buffer_pool_size
はデフォルトの設定(128MB)では大抵の場合に小さすぎるため、リソースの消費量をホストにマッチさせられないかどうか、という課題に対して導入されたパラメータのようです。
このパラメータを ON にすると以下のルールに従っていくつかのパラメータが自動で設定されます。
**innodb_buffer_pool_size** server_memory < 1G ? 128M (デフォルトと同じ) server_memory <= 4G ? server_memory * 0.5 server_memory > 4G ? server_memory * 0.75 **innodb_log_file_size** buffer_pool_size < 8GB ? 512M buffer_pool_sieze <=128GB ? 1024M buffer_pool_size > 128GB ? 2048M **innodb_log_files_in_group** buffer_pool_size < 8GB ? ROUND(buffer pool size) buffer_pool_size <= 128GB ? ROUND(buffer pool size * 0.75) buffer_pool_sieze > 128GB ? 64 **innodb_flush_method** innodb_flush_method = O_DIRECT_NO_FSYNC
あまり使うことないかなぁと思ったけど、コンテナで使う場合によさそうです。 まだ不勉強なので dockerコンテナのメモリ割り当てがどうなってるかわからないけど、このオプションをつけて、MySQLに任せてしまってもいいかもしれない。
ドキュメントはこちら。 dev.mysql.com
1台のマシンで複数のmysqldを動かすには
1台のサーバーで複数のmysqldを動かすには以下のパラメータをそれぞれ変えて起動すれば良いとのこと。
- datadir
- port
- socket
- pid-file
- log-error
- log-bin
- server_id
これらのパラメータをそれぞれ変えて設定した my.cnf
を用意して以下のように実行すれば良いです。
$ mysqld --defaults-file=my1.cnf $ mysqld --defaults-file=my2.cnf
Master-Slave のレプリケーションや InnoDB Cluster を試す時にはこれでOKですね。
フリスビーもらえた
途中で質問コーナーがあったので、「複数マシンでmysqldを動かすときに innodb_dedicated_server
をONにするとまずいですよね」という旨の質問をしました(セミナー中には専有マシンで使える、ということは理解できていなかった)。
最前列に座っていたからか、最初に質問したからかわかりませんがMySQLロゴ入りのフリスビーをいただきました。これ結構レアなんじゃないか。ボールペンと合わせて2つのノベルティをゲットしました。
次回の開催は
今回のセミナー資料は こちら で公開されるとのことです。 また7月頃にも関西で別のセミナーが開催されるようです。またいこう。