MYSQLレプリケーションレビュー
MYSQLでレプリケーション設定してある環境にてスレーブを追加する方法の再確認。
基本設定レビュー
MYSQL Replication Review
メンテナンス時の動作・挙動レビュー
MYSQL Replicationスレーブ停止と再開
環境
——————————
├─マスターDB(HOME001)
├─スレーブDB(HOME002)
└─スレーブDB (colinux) 新規追加
[root@HOME002 ~]# mysql -e "select @@version" -u root -p Enter password: +------------+ | @@version | +------------+ | 5.5.29-log | +------------+ [root@HOME002 ~]#
スレーブDB(colinux)にインストールされていたMYSQLは古いバージョンだったので、
削除してHOME002からMYSQLフォルダー全部(MYSQLバイナリー、データ)を新しいスレーブにコピー。
my.cnfも既存スレーブからコピーしてserver-id だけ変更して利用。
コピー時は一時的にHOME002のMYSQLサービスを停止しましたが、STOP SLAVEしてバックアップ取得しても良い。
新規スレーブにコピーしたフォルダーの権限をMYSQLユーザーに所有権変更
[root@colinux mysql]# chown -R mysql:mysql mysql-5.5.29-linux2.6-i686/
既存スレーブのserver-id on my.cnf
[root@HOME002 ~]# hostname HOME002.localdomain [root@HOME002 ~]# cat /etc/my.cnf | grep server-id | egrep -v ^# server-id = 2 [root@HOME002 ~]#
新規スレーブのserver-id on my.cnfを変更して既存スレーブと衝突しないよう調整
[root@colinux data]# hostname colinux [root@colinux data]# cat /etc/my.cnf | grep server-id | egrep -v ^# server-id = 3 [root@colinux data]#
マスターDBに新しいスレーブが接続出来るようにアカウントの追加
mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@'colinux' IDENTIFIED BY 'パスワード'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
新規追加したスレーブにてMYSQLのサービスを起動してエラーが無いことを確認
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: HOME001 Master_User: slave_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000014 Read_Master_Log_Pos: 1100 Relay_Log_File: relay-bin.000019 Relay_Log_Pos: 1246 Relay_Master_Log_File: mysql-bin.000014 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: mysql,performance_schema Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1100 Relay_Log_Space: 1396 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 1 row in set (0.00 sec) mysql>
上記設定が完了したら、実際にマスターDBにデータを入れて基本動作を確認してみる。
マスターと各スレーブが同期されエラーログが記録されて無い事を確認して終了。
「留意」
マスターはマルチスレッド処理だが、スレーブ側処理はシングルスレッドなのでマスターが
64bitやメモリー増設して処理が高速化するとスレーブ側は遅延する可能性がある。
スレーブへのレプリケーションのタイムラグを解消
innodb_flush_log_at_trx_commit=2