Mantener la consistencia de los datos en la replicación

Las replicaciones necesitan de un chequeo constante en la integridad de los datos. Fallos de disco, corrupción de de logs, mezcla de tablas transaccionales y no transaccionales y otros problemas pueden tumbar la consistencia de nuestros datos. Por lo tanto, podemos tener una replicación funcionando, pero los datos, si no hay una comprobación activa, pueden ser diferentes en las dos máquinas. MySQL no tiene comprobaciones activas de consistencia, por lo que es trabajo nuestro. Para ello, instalamos las herramientas maatkit de Percona:

apt-get install maatkit

Las herramientras que usaremos serán mk-table-checksum y mk-table-sync. El funcionamiento de la herramienta se basa en la replicación en base a sentencias de mysql. mk-table-checksum realiza una comprobación mediante un algoritmo de hashing en las tablas, escribiendo los resultados en la base de datos. Estas sentencias se replicarán en el esclavo y se volverán a ejecutar, realizando por lo tanto el mismo hashing en las tablas del esclavo. De esta forma, unicamente debemos comparar los resultados en el maestro y en el esclavo para comprobar si los datos son exactamente iguales o no.

Tenemos dos MySQL en Master-Slave.

NODO 1:

Puerto TCP 19369

master [localhost] {msandbox} (vida) > select * from producto;
+---+--------+
| i | nombre |
+---+--------+
| 1 | VPS    |
| 2 | Cloud  |
+---+--------+
2 rows in set (0.00 sec)

NODO 2:

Puerto TCP 19370

slave1 [localhost] {msandbox} (vida) > select * from producto;
+---+---------+
| i | nombre  |
+---+---------+
| 1 | VPS     |
| 2 | Cloud   |
| 3 | Storage |
+---+---------+
3 rows in set (0.00 sec)

¿Como comprobamos si los datos son o no consistentes?

Primero, le decimos a mk-table-checksum que haga un checksum de todas las tablas de la base de datos vida y guarde el resultado en test.checksum.

~$ mk-table-checksum u=root,p=msandbox
--socket=/tmp/mysql_sandbox19369.sock --databases=vida
--replicate test.checksum --create-replicate-table
Cannot connect to P=19369,S=/tmp/mysql_sandbox19369.sock,h=SBslave1,p=...,u=root
Cannot connect to P=19369,S=/tmp/mysql_sandbox19369.sock,h=SBslave1,p=...,u=root
DATABASE TABLE    CHUNK HOST        ENGINE      COUNT         CHECKSUM TIME WAIT STAT  LAG
vida     producto     0 soporteit69 InnoDB          2         935b4964    0 NULL NULL NULL

Comprobamos los resultados en Master:

master [localhost] {msandbox} (test) > select * from checksum;
+------+----------+-------+------------+----------+----------+------------+------------+
| db   | tbl      | chunk | boundaries | this_crc | this_cnt | master_crc | master_cnt |
+------+----------+-------+------------+----------+----------+------------+------------+
| vida | producto |     0 | 1=1        | 935b4964 |        2 | 935b4964   |          2 |
+------+----------+-------+------------+----------+----------+------------+------------+
1 row in set (0.00 sec)

Comprobamos los resultados en Slave:

slave1 [localhost] {msandbox} (test) > select * from checksum;
+------+----------+-------+------------+----------+----------+------------+------------+
| db   | tbl      | chunk | boundaries | this_crc | this_cnt | master_crc | master_cnt |
+------+----------+-------+------------+----------+----------+------------+------------+
| vida | producto |     0 | 1=1        | 6120c018 |        3 | 935b4964   |          2 |
+------+----------+-------+------------+----------+----------+------------+------------+
1 row in set (0.00 sec)

Como podemos ver, el crc del slave (this_crc) es diferente al del master (master_crc) por lo tanto, tenemos incosistencias en los datos de la tabla producto de la base de datos vida.

¿Cómo lo arreglamos?

Podriamos hacerlo volviendo a montar la replicación de cero usando un dump de mysqldump. Esto vale si tu BBDD ocupa solo unos cientos de megas, pero si hablamos de gigas, puedes tardar horas y provocar caidas del sistema. Así que haremos uso de mk-table-sync.

~$ mk-table-sync --execute --replicate test.checksum 
--sync-to-master u=root,p=msandbox --socket=/tmp/mysql_sandbox19370.sock

Comprobamos si ahora los datos son consistentes:

master [localhost] {msandbox} (vida) > select * from producto;
+---+--------+
| i | nombre |
+---+--------+
| 1 | VPS    |
| 2 | Cloud  |
+---+--------+
2 rows in set (0.00 sec)
slave1 [localhost] {msandbox} (vida) > select * from producto;
+---+--------+
| i | nombre |
+---+--------+
| 1 | VPS    |
| 2 | Cloud  |
+---+--------+
2 rows in set (0.00 sec)
slave1 [localhost] {msandbox} (test) > select * from checksum;
+------+----------+-------+------------+----------+----------+------------+------------+
| db   | tbl      | chunk | boundaries | this_crc | this_cnt | master_crc | master_cnt |
+------+----------+-------+------------+----------+----------+------------+------------+
| vida | producto |     0 | 1=1        | 935b4964 |        2 | 935b4964   |          2 |
+------+----------+-------+------------+----------+----------+------------+------------+
1 row in set (0.00 sec)

Listo! Replicación consistente y en marcha 😀


Comments

    gucciのiphone手帳カバー値段,gucci ネイルシール,グッチ 財布 ヘビ トリーバーチ レザーバッグ amanda classic handle hobo,トリーバーチ 財布 赤,トリーバーチ キャサリンバレー ヴィトン 財布 メンズ ダミエ コバルト,ヴィトン 黒とグレーのチェック,ルイヴィトン ボストン スーパーコピー セリーヌ バッグ ラゲージコピー,セリーヌ バッグ 38no,セリーヌ キャンバス 汚れ ティンバーランド ヌバック,ティンバーランド ブーツ 赤,ティンバーランド インソール クロエ マーシー 秋冬 2011,クロエ エルシー財布,クロエ エデン 長財布 フェンディ ブックバンド,フェンディバック ニコールリッチー愛用,大草直子フェンディ コンバース 人気,コンバースフットウェア,コンバース オンライン ケイトスペード ゴールドトートバッグ2013,ケイトスペード バッグ ビニールバック,ハワイ kate spade 財布 値段 nike sneakers 2011 芸能人 iphoneケース メンズ,ボッテガ クラッチ コピー,ボッテガヴェネタ ニューヨーク ニューバランス メイドインusa,ニューバランス996 格安,ニューバランス 996 ベージュ ハワイアグ価格,nyはアグ-は安いですか?,ugg ニットムートン ニーハイ ブルガリディアゴノ プロフェッショナル タキメトリッククロノ?,ブルガリ福岡大丸店分割払い,ブルガリ香水 徳島

    ブルガリディアゴノ プロフェッショナル タキメトリッククロノ?,ブルガリ福岡大丸店分割払い,ブルガリ香水 徳島 on

    ナイキ ルナフォース,ティエンポ ナイキ フットサル,ナイキ tシャツ コーデ カルティエベニゅワールブログ,カルティエサントスガルベ革ベルトバンド,カルティエ 渋谷 ネックレス miumiu リボントート,miumiu バッグ rn1031 新宿,メガネ ミュウミュウ 店舗 ケイトスペード チェーンバック,ボストンバック 黒 katespade,引き出物 ケイトスペード ブログ ベビーシューズ コンバース,黒コンバース タイツ,コンバース ゲートルブーツ アウトレット 鳥栖 シャワー,d&g iphoneケース 激安,iphone5s ケース 激安 シーバイクロエ 三つ折り財布,有楽町 クロエ 財布,シーバイクロエ キーリング メンズ m1300 ニューバランス,ニューバランス 人気 なぜ,ニューバランス cm1600 グッチ アクセサリーポーチ 本物見分け方,gucci かばん 洗濯,gucciバッグジーンズ素材 ボッテガベネタ 今年の色,マネークリップ財布金の挟み方,ボッテガヴェネタ カバン 名古屋 ルイヴィトンタダオレザー,ルイヴィトン エピ ボストン コピー,本物 ヴィトン コンチネンタル 画像 ティンバーランド リュック,ティンバーランド レインブーツ,ティンバーランド マウンテンブーツ オールドコーチ 赤 お手入れ,コーチ 折りたたみバック メンズ,コーチ ポーチ チェック

    オールドコーチ 赤 お手入れ,コーチ 折りたたみバック メンズ,コーチ ポーチ チェック on

    本蛇皮財布沖縄,韓国 ボッテガ風,レザーベルト 洗濯 セリーヌ 通常価格,セリーヌ トリオ クラッチ,celineコピー ドルチェアンドガッバーナ 香水 ライトブルー免税店,カゴバック クランチ,ドルチェアンドガッバーナ バック 2011 ナイキ ダンクロー プレミアム sb シュプリーム,エアフォース ナイキ,バッシュ ナイキ 海外モデル コーチ クロコ アウトレット,通勤用カバンコーチ,コーチ(coach)メンズ ブリーフケース ビジネスバッグ 御殿場アウトレット Nike Air Max 90 Mężczyźni Running Biały Czarny Czerwony ミュウミュウ 長財布 白,miumiu ラウンドファスナー,ミュウミュウ バッグ パリ,ミュウミュウ 財布 大宮,ミュウミュウ 長財布 ハートチャーム,miumiu 公式 カタログ,ミュウミュウ メンズ バッグ miumiu ベネチア reebok dash runner シャネル ボーイシャネル 定価,韓国 シャネル コピー品 写真,シャネル iphoneカバー 手帳型 Nike Air Max 1 Essential Femme Chaussures Noir/Laser Crimson/Blanche モンクレール パリ モンクレール 店舗 松山 モンクレール アニメタグ 修理,モンクレール レディース サイズ1,モンクレール ダウン xxl ニューバランス トレッキング,ニューバランス メイドインusa,ニューバランス2002 激安 エルメス ブガッティ トゴ,エルメス 2つ折り 小銭入れ有り,エルメスバーキン25中の色違い Nike Roshe Trainers Kobiety Czarny Czerwony Obuwie

    Nike Roshe Trainers Kobiety Czarny Czerwony Obuwie on

    コンバース 子供用 スニーカー,コンバースフットウェア,コンバース ローカット 靴下 モンクレール ユベール,モンクレール バッグ,モンクレール ダウン ベージュ モンクレール ダウンベスト tib サッカー ナイキ リュック,ナイキ スニーカー 夏,ナイキ フリー 3.0 フライニット 感想 dior カード,dior addictリップスティック 178,ミスディオール時計コピー シャネル シール,シャネル アイシャドウ チップ,シャネル 紙袋 アイフォン5c トリーバーチ,パロディ トリーバーチポーチ,トリーバーチ ブランド カルティエ スリーフープ ネックレス,カリブル ドゥ カルティエ クロノグラフ ss ブレス,カルティエ トリニティ カフス ドルガバネックレスメンズ,d&g 長財布 レオパードブルー メンズ,キーケース 梟 ugg australia adirondack プラダ ライトブルー スリッポン,御殿場アウトレット セール プラダ,韓国 プラダ 偽物 キーリング 使い方,amazon メンズショルダーポーチ,ブランド ボッテガヴェネタ 財布ポーチ 新作 ブルー ボッテカベネタ,ボッテガヴェネタ イントレミラージュ クラッチ,ボッテガヴェネタ偽 hermes ハンカチ レディース 白,エルメス 手帳カバー a5,エルメス トカゲグレー

    hermes ハンカチ レディース 白,エルメス 手帳カバー a5,エルメス トカゲグレー on

    ナイキ おすすめ,サッカースパイク ナイキ マエストリ,ナイキ ダンク スニーカー アグ ブーツ 新作,ugg ミニ グレー コーデ,ugg ブーツ 日本で買ったら? フェンディ 財布 クリスマス,フェンディ偽物 本物との違い,フェンディ チャーム ラムスキン シャネル お財布 がま口,シャネルlogoリボン,シャネル パロディ パーツ 韓国 通販 ティンバーランド 公式,ティンバーランドカスタムメイドブーツ,ティンバーランド バウンス prada 財布 剥がれる,プラダの財布 人気色は?,心斎橋 プラダ セレクトショップ ニューバランス サイクルジャージ,ニューバランス 登山靴,ニューバランス 1500 グレー 静岡のブルガリ,ブルガリ メンズ 財布 買取り,ブルガリセルペンティ財布定価 ボッテガヴェネタキーリングピンク,キーチェーン付きサンダル レディース,財布 人気ランキング ボッテガ ヴィトン トート 生地,ルージュフォービスト ヴィトン キーケース 新品,シンガポールヴィトンショップ 桜木町 バーバリー ハンカチ,バーバリーマリッジリング,バーバリー ビニール プローサム Chaussures Nike Air Max Tailwind+4 コンバース ベルト,コンバース スリッポン キッズ,海外限定 コンバース ケイトスペード グレー 財布,ケイトスペード アイフォンケース 偽物,マザーズバッグ ケイトスペード 口コミ

    ケイトスペード グレー 財布,ケイトスペード アイフォンケース 偽物,マザーズバッグ ケイトスペード 口コミ on
Next → Page 1 of 2