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

覚書。
初めてAnsibleを触ってて少し躓いたところがあったので。

 

環境

・Ansible 2.3.0
・Percona server 5.7 (MySQL 5.7_

 

 

my.cnfを配置

Master用とSlave用のmy.cnfをリモート先へ送る。

 

 

 

rootパスワードを取得

MySQL 5.7から/var/log/mysqld.logにパスワードが記載されているので
これを使って初期設定を行うらしい。

 

 

 

.my.cnfを/rootに設置

Ansibleのmysqlモジュールを使うために/root/.my.cnfにファイルを設置

temp_my.cnf.j2

connect-expired-passwordが地味に大事

 

 

 

rootパスワードを設定する

一時的なパスワードでは覚えられないので変更します。
パスワードの要件が厳しくなって大文字小文字記号数字で8桁以上とかだった気がする(覚えてない)

 

 

 

新しい.my.cnfを/rootに設置

new_my.cnf.j2

connect-expired-passwordを削除したバージョン

 

 

 

anonymousユーザーを削除

 

 

 

レプリケーションユーザーを作成

 

 

 

FlushコマンドってAnsibleじゃ使えないよね…?

 

 

 

マスターDBからダンプして、スレーブにインポート

 

 

 

マスターのファイル名とポジションの取得

ここが一番詰まった。
Ansibleは異なるホスト間で変数の参照ができないので
ファイル名とポジションの取得はスレーブのときに実行して、実際に実行するコマンドはマスター側で処理をする。

 

Change master

 

 

 

スレーブの開始

 

 

 

スレーブの状況確認

Slave_IO_Running と Slave_SQL_RunningがどっちもYesであることを確認

 

 

 

マスターでロックしていたのを解除

 

コメントを残す

メールアドレスが公開されることはありません。