一貫性のないデータベースマスターとスレーブデータの解決策

マスター: 

スリーププロセスが多すぎるかどうかを確認する

show processlist;

マスターステータスの表示:

show master status;



奴隷

ステータスを表示:

show slave status\G

Slave_IO_Running:はい 
Slave_SQL_Running:いいえ 

スレーブが同期していないことがわかります。
ソリューション: 


方法1:エラーを無視した後、同期を続行します。 
この方法は、マスターデータベースとスレーブデータベースのデータにほとんど差がない場合、またはデータが完全に統合されていない可能性があり、データ要件が厳密でない場合は
同期停止します 

stop slave; 

ステップエラーのスキップを示します。次の数値は可変です。

set global sql_slave_skip_counter =1;

同期を開始します。

start slave;

ステータスをもう一度見てください。

Slave_IO_Running: Yes 
Slave_SQL_Running: Yes

OK、マスターとスレーブの同期ステータスは正常です。。 

方法2:マスターとスレーブを再同期し、完全に同期します。 
この方法は、マスターライブラリとスレーブライブラリのデータがまったく異なる場合、またはデータを完全に統合する必要がある場合に
適しています。  解決策の手順は次のとおりです 
。1.マスターライブラリを最初に入力し、テーブルをロックして、データの書き込みを禁止します:
テーブルのロック: 

mysql> flush tables with read lock; 

注:この場所は読み取り専用としてロックされており、ステートメントでは大文字と小文字が区別されません 
2.データのバックアップ:
#mysql.bak.sqlファイルにデータをバックアップします 

mysqldump -uroot -p -hlocalhost > mysql.bak.sql

ここで注意すべき点の1つは、データベースのバックアップを定期的に実行する必要があることです。シェルスクリプトまたはpythonスクリプトを使用できます。これは、データが確実に確実であるようにするのに便利です。3 
.マスターステータスを表示します。

show master status;

4. scpコマンドを使用して、mysqlバックアップファイルをデータ復旧のためにスレーブマシンに転送します。

scp mysql.bak.sql [email protected]:/tmp/

5.ライブラリから状態を停止します 

stop slave;

6.次に、ライブラリからmysqlコマンドを実行して、データバックアップをインポートします。 

mysql> source /tmp/mysql.bak.sql

7.スレーブライブラリの同期を設定し、そこにある同期ポイントに注意してください。|ファイル|マスターライブラリのshow master status情報の位置 

change master to master_host = '192.168.128.100', master_user = 'root', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260; 

8.スレーブ同期を再開します 

stop slave;

9.同期ステータスを表示する 

show slave status\G

Slave_IO_Running:はい 
Slave_SQL_Running:はい 
OK、同期が完了しました。

おすすめ

転載: blog.csdn.net/qq_36850813/article/details/102746932