MySQL 5.7

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

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