ホームページ >データベース >mysql チュートリアル >2 つの mysql マスターとスレーブが同期されている場合はどうすればよいですか?
Mysql には 2 つのマスターとスレーブ、つまりマスターサーバーとスレーブサーバーがあり、マスターとスレーブが 1 つずつ、マスターとスレーブが 1 つずつある構造になっています。 1 つのマスターと複数のスレーブ: 1 つのマスターと複数のスレーブ。
おすすめコース: MySQL チュートリアル
マスタースレーブ同期ソリューション
まずはマスター ライブラリに移動します。
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)
次に、スレーブを確認します。
mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: No
スレーブが同期していないことがわかります。
ここでは 2 つの解決策を示します。
方法 1: エラーを無視して同期を続行する
##この方法は、マスター/スレーブ データベース内のデータに大きな違いがない状況に適しています。または、データを完全に統合する必要がなく、データ要件が厳密な状況ではありません。 解決策:stop slave; #表示跳过一步错误,后面的数字可变 set global sql_slave_skip_counter =1; start slave; 之后再用mysql> show slave status\G 查看: 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
ここで注意してください: データベースバックアップは定期的に行う必要があります。シェル スクリプトまたは Python スクリプトを使用できます。データが確実に確実に保存されるようにするのに便利です。
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 root@192.168.128.101:/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.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
8. スレーブ同期の再起動
mysql> stop slave;
9. 同期ステータスの確認
mysql> show slave status\G 查看; Slave_IO_Running: Yes Slave_SQL_Running: Yes
以上が2 つの mysql マスターとスレーブが同期されている場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。