- 追加された行はこの色です。
- 削除された行はこの色です。
-MySQLのレプリケーションについて
#contents
*設定 [#o64fbf93]
参考ページ
https://www.server-world.info/query?os=CentOS_7&p=mariadb&f=3
http://qiita.com/suzutsuki0220/items/e5be03ea8f44ad2f6533
**遅延対策 [#gea39cca]
救われた面もあるのでなんともだが、遅延が酷いと1時間近くにもなることがある。
slave stop & start すると復帰するが、原因は突き止めたい。
***slaveの状態を確認 [#acb193a4]
-Seconds_Behind_Masterの値が0であればよい。
SHOW SLAVE STATUS¥G
中略
Seconds_Behind_Master: 1
***Seconds_Behind_Masterが0なのに、遅延が発生している場合 [#w11220d5]
-master側のbinログのポジションを確認
SHOW MASTER STATUS¥G
|master|slave|
|File: mysql-bin.000024|Master_Log_File: mysql-bin.000023|
|Position: 198937070|Read_Master_Log_Pos: 198837070|
ファイルに差分があれば、ネットワーク転送でボトルネックがあることになる。
**AWSのRDSの場合(専用のプロシージャーを利用する) [#g1fe5e4c]
http://takeshiyako.blogspot.jp/2014/12/mysqlamazon-rds.html
mysql> CALL mysql.rds_set_external_master('100.100.100.100',3306,'userrds','passwordrds','mysql-bin.000855',846543983,0);
mysql> CALL mysql.rds_start_replication;
すべてのデータベースをdumpするとmysqlデータベースインポート中にエラーになるので個別にやるしかない。databasesオプションを利用して、移行対象を絞るべし
**マスターの設定 [#ke095c1f]
***ユーザーの追加(IPをスレーブのものに限定) [#bf336d22]
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.2/255.255.255.255' IDENTIFIED BY 'hogehoge';
***マスターのmy.cnf変更して再起動 [#l47d04ec]
[mysqld]
log-bin=mysql-bin
server-id=1
expire_logs_days=7
mysql-binでバイナリログを有効にして、server-idはかぶらないものをつける。expire_log_daysは7日間はバイナリログを保存する(それ以上にレプリケーションがとまるとダンプしなおし)
**スレーブの設定 [#kc2387a4]
[mysqld]
log-bin=mysql-bin
server-id=102
read_only=1
# 自身のホスト名を定義
report-host=slavehost
**ダンプとリカバリー [#pfca2f5f]
***マスター [#q4a95ea7]
MariaDB [(none)]> flush tables with read lock;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 22826177 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
-別ターミナルでdump
$ mysqldump -u root -p --all-databases --lock-all-tables --events | gzip > mysql_dump.sql.gz
-終わったらunlock
unlock tables;
-状態の確認
***スレーブ [#w8dfc974]
$ mysql -u root -p < /var/tmp/mysql_dump.sql
MariaDB [(none)]> change master to master_host='MASTER_IP', master_user='repl', master_password='hogehoge',master_log_file='mysql-bin.000001',master_log_pos=22826177;
-レプリケーションスタート
MariaDB [(none)]> start slave;
-状態の確認
show slave status\G
#counter