ホームページ >データベース >mysql チュートリアル >2 つの mysql マスターとスレーブが同期されている場合はどうすればよいですか?

2 つの mysql マスターとスレーブが同期されている場合はどうすればよいですか?

(*-*)浩
(*-*)浩オリジナル
2019-05-10 11:10:563530ブラウズ

Mysql には 2 つのマスターとスレーブ、つまりマスターサーバーとスレーブサーバーがあり、マスターとスレーブが 1 つずつ、マスターとスレーブが 1 つずつある構造になっています。 1 つのマスターと複数のスレーブ: 1 つのマスターと複数のスレーブ。

おすすめコース: MySQL チュートリアル

2 つの 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。