MySQLデータベースはかなり大きくなり、マスターレプリケーションで実行しています。レプリケーションが壊れています。 mysqldumpを実行する際に、最初のマスターをフリーズせずに2番目のマスターを再構築しようとしています。データベースは、ダンプに数時間かかるほどの大きさであり、その間データベースをオフラインにすることはできません。
マスターをダンプせずにMySQLレプリケーションを再構築するにはどうすればよいですか?
Percona Toolkit を見てください。 pt-table-checksum
は、同期していないテーブルを見つけるのに役立ち、pt-table-sync
その後。
@quantaの回答に加えて、レプリケーションを比較して修復しようとして運がなかった場合は、 percona xtra-backup ツールに付属のinnobackupexツールを使用して、の高速コピーを作成できます。マスター。スレーブに復元できます。 (実行には時間がかかりますが、mysqldump
よりもはるかに短い時間でテーブルをロックします)
基本的に、innobackupexはinnodbテーブルとmyisamテーブルの両方で機能し、基盤となる実装を利用してエクスポート時間を大幅に改善し、最小限のロック時間で一貫したバックアップを作成します。
サイトのマスターからスレーブを作成するウォークスルーの例があります。 http://www.percona.com/doc/percona-xtrabackup/howtos/setting_up_replication.html
トムHの提案も素晴らしいです。 Xtraを動作させることができれば、それは非常に素晴らしいことです。この場合、何が最善かわからないので、知っておくと役立ちます。
MySQLのバージョンすべてInnoDB?すべてのMyISAM?または混合? InnoDBの場合、テーブルごとのファイルを使用していますか?どれくらいの大きさですか? (50GB対500GB?)
何らかの理由でXtrabackupが機能しない場合、またはptツールで@quantaのアドバイスが得られない場合は、古い学校に行ってmysqlを停止し、データディレクトリをスレーブにコピーして、それに応じて調整し、replのバックアップを開始する必要があります。あなたが数百GBを扱っていて、ネットワーク経由でコピーを行う必要があり、マルチコア/ CPUがある場合、コピーにpigzを使用することを検討する必要があるかもしれません http://zlib.net/pigz / これは、ダンプファイルORディレクトリをコピーするのに4.5時間かかっていた場所で、2時間に短縮することで役立ちました。
幸運なことに、これがどれほどストレスになるか知っています。
MysqlパーティションがLVM上にある場合、 mylvmbackup を使用できます。スナップショットを撮り、座標も保存します。 mysqlを再構築する最速の方法は、データディレクトリのバックアップを使用することです。次に、optimizeを実行して最適化できます。
LVMがなく、mysqlサーバーをシャットダウンできる場合。
1。マスターで読み取りロックを実行し、位置を書き留めます。
2。 mysqlをシャットダウンする
3。データディレクトリをターゲットマシンにコピーします。データディレクトリのローカルコピーを作成できます。これは通常、ネットワーク転送よりも高速で、mysqlのダウンタイムを最小限に抑えます。
4。 mysqlを起動
5。ターゲットマシンで、ib_logfileの設定がマスターの設定と同じであることを確認します。そうしないと、mysqlが問題を報告します。
まれにデータのコピーが正常に行われないため、再試行する必要がある場合があります。
これはmysqlのドキュメントに書かれています-> http://dev.mysql.com/doc/refman/5.5/en/replication-howto-rawdata.html