マスターデータチェック/修理からのMySQL

 

 

マスターデータチェックから

外形寸法:

  既存のデータ・ネットワーク・データのチェックを行うには、月

  データチェックを行うための日からメインスイッチがあれば

検証ツール:

  PT-テーブルのチェックサム

修復ツール:

  PT-テーブル同期

 

 

PT-テーブルのチェックサム 

原則

データベース内のテーブルを作成します。チェックサム

ID> 0とid <= 1000データ(this_cnt)は、hash_code操作を行う各服用回数(*)(this_crc)

主库:SELECT COUNT(*)ID> 0とid <= 1000 TBから。

マスタおよびスレーブ機能が実行され、それぞれのCNT、CRCの値を生成します 

 

セットbinlog_format =「ステートメント」

percona.checksum(デシベル、TB1、チャンク、chunk_index、lower_boundary、upper_boundary、this_cnt、this_crc)に置き換えるXXXXXXを選択 

this_cnt、master_cntように更新メイン図書館のthis_crc値、master_crc年。

ここで、DB = 'XX' 及びTB = 'XX' 及びチャンク= XXチェックサムからthis_cnt、this_crcを選択します。

チェックサム・セットmaster_cnt = this_cnt.value、master_crc = this_crc.valueを更新する場合、DB = 'XX' 及びTB = 'XX' 及びチャンク= XX。

比較this_cntライブラリ、this_crc値master_cnt、master_crcから 

DB、TB1によってTOTAL_ROWSとしてDB、TB1、和(this_cnt)を選択し、(*)カウントチェックサムからのチャンクとして(master_cnt <> this_cnt又はmaster_crc <> this_crcまたはISNULL(master_crc)<> ISNULL(this_crc))基です。

 

使用

--recursion法=ホスト:
私たちは、ライブラリ設定ファイルからライブラリーからの情報を追加する必要があります。
report_host = 172.18.10.198
メインライブラリーショーのスレーブがホストする場合は、ライブラリーから見つけることができるようになります。

PT-テーブル・チェックサム--host = 172.18.10.197 --port = 3306 --databases = xxxxの-uxxxx -p --nocheck複製・フィルタ--replicate = percona.checksums --nocheck-binlogのフォーマット--nocheck -plan --recursion法=ホスト

--nocheck複製・フィルタを:フィルタをチェックしませんコピーが可能にすることをお勧めします。--databasesは、データベースをチェックするために、後で指定することができます。
--no-チェック-binlogの形式:binlogのレプリケーションモードをチェックしないでください、とのbinlogモードがROWであれば、それはエラーになります。
--replicate-チェックのみ:のみの情報が同期されません表示されます。
--replicate =:データベースをチェックするために直接書き込むことが推奨され、指定されたテーブルのチェックサムに情報を書き込みます。 
--databases =:データベースは、コンマで区切られた複数の確認する必要が指定します。
--tables =:カンマで区切られた複数のテーブルをチェックする必要が指定
H = 127.0.0.1:マスター住所
U =ルート:ユーザー名
P = 123456:パスワード
P = 3306:ポート
 
TS:タイム・チェックが完了しています。
エラー:チェックする際にエラーと警告の数が起こります。
DIFFS:0、1、矛盾を全会一致表明しました。--no-複製チェックを指定する場合、それはゼロだったでしょう、指定された--replicate-チェックイン時にのみ異なる情報が表示されます。
ROWS:表の行数。
チャンクは:テーブル内のブロックに分割されます。
SKIPPED:エラーや警告、または大きすぎるのために、ブロックの数がスキップされます。
TIME:実行時。
TABLE:チェックするテーブル名。

 

 

PT-テーブル同期

原則

 チャンクで見つけたPt table_checksumエラー、エラーログを見つけるためにバイナリ検索を行います。

メインライブラリの設定

binlog_format = 'ステートメント'

メインのインベントリでは、ライブラリーから存在していません。どこのid = xxxのTBから削除を実行するための主要なライブラリ。

代わるメインライブラリ内のインベントリから主要株式では、一度記録を再挿入。ライブラリは、正しいデータに挿入されます。

 

使用

データ回復は:hは、hは第2スレーブ最初のマスターである、テーブルは主キーを持たなければなりません。見ると、最初の--printを行います
プリントSQL
PT-テーブル同期--charset = UTF8 --databases --no-チェックスレーブDSN = U =ルート、P =ルート、H = 172.18.10.198、P = 3306 DSN = U =ルート、P =ルート、H = 172.18.10.198、P = 3307 --print
実行
PT-テーブル同期--charset = UTF8 --databases = DB1 --no-チェックスレーブDSN = U =ルート、P =ルート、H = 172.18.10.198、P = 3306 DSN = U =ルート、P =ルート、H = 172.18.10.198、P = 3307 --execute
 
データベース---ignore =ライブラリを無視するように指定します
--databases =指定されたライブラリ
--tables =指定したテーブル
 実行文を表示--print
--execute実行
--no-チェックスレーブは、ライブラリーからdesitinationかどうかをチェックしません。 

 

おすすめ

転載: www.cnblogs.com/yujiaershao/p/11270897.html