Mysql 5.6主従同期構成とソリューション
6338 ワード
メインライブラリIP:192.168.1.10
ライブラリIP:192.168.1.1.1から
1、メインライブラリの構成編集my.cnf:
2、同期アカウントの作成
3、メインライブラリの状態
バイナリ・ログ・ファイル名と場所の記録
4、ライブラリプロファイルからの構成
5、接続マスターライブラリの構成
6、同期を開始する
7、正常状態
8、主従の不同期を解決する
まずMasterライブラリにアクセスします.
mysql>show processlist; 次のプロセスがSleepが多すぎるかどうかを確認します.発見は正常です.
show master status; 正常です.
mysql> show master status;+-------------------+----------+--------------+-------------------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+-------------------------------+| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |+-------------------+----------+--------------+-------------------------------+1 row in set (0.00 sec)
Slaveで確認
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
Slaveが同期していないことがわかります
次の2つの解決方法について説明します.
メソッド1:エラーを無視して同期を続行
この方法は,プライマリ・スレーブ・ライブラリのデータの差が大きくない場合や,データが完全に統一されていない場合,データの要求が厳しくない場合に適用される.
解決:
stop slave;
#ステップをスキップしたエラーを示し、後の数字は可変です.
set global sql_slave_skip_counter =1;
start slave;
その後mysql>show slave statusGで確認します.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
OK、現在主従同期状態は正常です
方式2:主従をやり直し、完全に同期する
この方法は,プライマリ・スレーブ・ライブラリのデータの差が大きい場合や,データの完全な統一が要求される場合に適用できる.
解決策は次のとおりです.
1.まずメインライブラリに入り、ロックテーブルを行い、データの書き込みを防止する
コマンドを使用:
mysql> flush tables with read lock;
注意:ここでは、大文字と小文字を区別せずにロックされた読み取り専用ステータスです.
2.データバックアップ
データをmysqlにバックアップします.bak.sqlファイル
[root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql
ここで注意したいのは、データベースのバックアップは必ず定期的に行い、データが万全であることを確保することです.
3.マスターステータスの表示
mysql> show master status;+-------------------+----------+--------------+-------------------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+-------------------------------+| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |+-------------------+----------+--------------+-------------------------------+1 row in set (0.00 sec)
4.mysqlバックアップファイルをスレーブマシンに転送し、データ復旧を行う
#scpコマンドの使用
[root@server01 mysql]# scp mysql.bak.sql [email protected]:/tmp/
5.ライブラリから停止した状態
mysql> stop slave;
6.次に、ライブラリからmysqlコマンドを実行し、データバックアップをインポート
mysql> source/tmp/mysql.bak.sql
7.ライブラリからの同期を設定し、そこにある同期点に注意すると、メインライブラリshow master status情報の|File|Positionの2つになります
change master to master_host = '192.168.128.10', master_user = 'slave', master_port=3306, master_password='123456', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
8.スレーブ同期を再開
mysql> start slave;
9.同期ステータスの表示
mysql>show slave statusG表示:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
転載先:https://www.cnblogs.com/kezf/p/mysql-slave.html
ライブラリIP:192.168.1.1.1から
1、メインライブラリの構成編集my.cnf:
#
log_bin = mysql-bin
server-id = 111
log-bin-index=mysql-bin.index
sync_binlog=1
binlog_format=mixed
binlog-do-db = testdb //
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema
binlog_checksum=NONE
2、同期アカウントの作成
mysql> grant replication slave on *.* to slave@192.168.1.11 identified by '123456'
3、メインライブラリの状態
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 | 337 | | |
+------------------+----------+--------------+------------------+
バイナリ・ログ・ファイル名と場所の記録
4、ライブラリプロファイルからの構成
# [ ]
log-bin=mysql-bin
# [ ] ID, 1, IP
server-id=222
relay-log-index = slave-relay-bin.index
relay-log = slave-relay-bin
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1
5、接続マスターライブラリの構成
mysql> change master to master_host='192.168.1.10',master_user='slave',master_password='123456', master_log_file='mysql-bin.000008',master_log_pos=337;
6、同期を開始する
mysql> start slave;
mysql> show slave status\G;
7、正常状態
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
8、主従の不同期を解決する
まずMasterライブラリにアクセスします.
mysql>show processlist; 次のプロセスがSleepが多すぎるかどうかを確認します.発見は正常です.
show master status; 正常です.
mysql> show master status;+-------------------+----------+--------------+-------------------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+-------------------------------+| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |+-------------------+----------+--------------+-------------------------------+1 row in set (0.00 sec)
Slaveで確認
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
Slaveが同期していないことがわかります
次の2つの解決方法について説明します.
メソッド1:エラーを無視して同期を続行
この方法は,プライマリ・スレーブ・ライブラリのデータの差が大きくない場合や,データが完全に統一されていない場合,データの要求が厳しくない場合に適用される.
解決:
stop slave;
#ステップをスキップしたエラーを示し、後の数字は可変です.
set global sql_slave_skip_counter =1;
start slave;
その後mysql>show slave statusGで確認します.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
OK、現在主従同期状態は正常です
方式2:主従をやり直し、完全に同期する
この方法は,プライマリ・スレーブ・ライブラリのデータの差が大きい場合や,データの完全な統一が要求される場合に適用できる.
解決策は次のとおりです.
1.まずメインライブラリに入り、ロックテーブルを行い、データの書き込みを防止する
コマンドを使用:
mysql> flush tables with read lock;
注意:ここでは、大文字と小文字を区別せずにロックされた読み取り専用ステータスです.
2.データバックアップ
データをmysqlにバックアップします.bak.sqlファイル
[root@server01 mysql]#mysqldump -uroot -p -hlocalhost > mysql.bak.sql
ここで注意したいのは、データベースのバックアップは必ず定期的に行い、データが万全であることを確保することです.
3.マスターステータスの表示
mysql> show master status;+-------------------+----------+--------------+-------------------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+-------------------------------+| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |+-------------------+----------+--------------+-------------------------------+1 row in set (0.00 sec)
4.mysqlバックアップファイルをスレーブマシンに転送し、データ復旧を行う
#scpコマンドの使用
[root@server01 mysql]# scp mysql.bak.sql [email protected]:/tmp/
5.ライブラリから停止した状態
mysql> stop slave;
6.次に、ライブラリからmysqlコマンドを実行し、データバックアップをインポート
mysql> source/tmp/mysql.bak.sql
7.ライブラリからの同期を設定し、そこにある同期点に注意すると、メインライブラリshow master status情報の|File|Positionの2つになります
change master to master_host = '192.168.128.10', master_user = 'slave', master_port=3306, master_password='123456', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
8.スレーブ同期を再開
mysql> start slave;
9.同期ステータスの表示
mysql>show slave statusG表示:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
転載先:https://www.cnblogs.com/kezf/p/mysql-slave.html