mysql_user

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

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