mysql_replication

AnsibleとMySQL 5.7で準同期レプリケーションを張る

覚書。 初めてAnsibleを触ってて少し躓いたところがあったので。   環境 ・Ansible 2.3.0 ・Percona server 5.7 (MySQL 5.7_     my.cnfを配置 Master用とSlave用のmy.cnfをリモート先へ送る。 [crayon-5b28879fa9583576000612/]       rootパスワードを取得 MySQL 5.7から/var/log/mysqld.logにパスワードが記載されているので これを使って初期設定を行うらしい。 [crayon-5b28879fa959a143839664/]       .my.cnfを/rootに設置 Ansibleのmysqlモジュールを使うために/root/.my.cnfにファイルを設置 [crayon-5b28879fa95a1496331885/] temp_my.cnf.j2 connect-expired-passwordが地味に大事 [crayon-5b28879fa95a5589644098/]       rootパスワードを設定する 一時的なパスワードでは覚えられないので変更します。 パスワードの要件が厳しくなって大文字小文字記号数字で8桁以上とかだった気がする(覚えてない) [crayon-5b28879fa95aa850027573/]       新しい.my.cnfを/rootに設置 [crayon-5b28879fa95ad403767913/] new_my.cnf.j2 connect-expired-passwordを削除したバージョン [crayon-5b28879fa95af951102287/]       anonymousユーザーを削除 [crayon-5b28879fa95b5442909071/]       レプリケーションユーザーを作成 [crayon-5b28879fa95b7692027413/]       FlushコマンドってAnsibleじゃ使えないよね…? [crayon-5b28879fa95b9945414241/]       マスターDBからダンプして、スレーブにインポート [crayon-5b28879fa95bb303261258/]       マスターのファイル名とポジションの取得 ここが一番詰まった。 Ansibleは異なるホスト間で変数の参照ができないので ファイル名とポジションの取得はスレーブのときに実行して、実際に実行するコマンドはマスター側で処理をする。 [crayon-5b28879fa95be164859920/]   Change master [crayon-5b28879fa95c0376244342/]       スレーブの開始 [crayon-5b28879fa95c1724803971/]       スレーブの状況確認 Slave_IO_Running と Slave_SQL_RunningがどっちもYesであることを確認 [crayon-5b28879fa95c3045310274/]       マスターでロックしていたのを解除 [crayon-5b28879fa95c6355238725/]