2017-04-07 14 views
3

Percona 5.7.16-10サーバーを使用しています。私は現在のソリューションをXtraDBクラスタで拡張したいと考えています。その間、私は他のマシンを作成し、クラスタ(5.7.17-11-57 Percona XtraDB Clusterバージョンで稼動)を起動し、そこでいくつかのテストを行いました(すべて正常に動作しているようです)。今私は実行中のサーバーから現在のデータベースをダンプし、クラスタに挿入したいと思います。クラスタを停止することは問題ありません(テストのためです)。しかし、私が慣れているようにmysqldumpを作成すると、pcx_strict_mode(info here)のためにクラスタに挿入することができません - Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE <table> WITH READ LOCK with pxc_strict_mode = ENFORCINGを強制して、mysqldumpはテーブルロックを含むスクリプトを作成するので禁止されています。だから私はいくつかのオプションをテストしました.MASTERはこのルールをチェックしてはいけませんが、ダンプからの挿入クエリが滞って何も起こっていないので、助けになりませんでした。データベースを新しいクラスタに復元する

テーブルロックのクエリを避けるためのmysqldumpオプションがありますか、またはXtraBackup経由で何らかの形でそれを復元し、現在実行中のサーバにXtraBackupを使用する必要がありますか?

私はいくつかのトピックhereを読みましたが、同じ問題を抱えている人はいませんでした。誰もが何らかの失敗からクラスタを復元する方法を、ゼロからではなく解決しています。

私は、mysqldumpの提案や、古いデータベースをクラスタに挿入するための適切な方法を喜ばしく思います。

答えて

2

あなたの現在のマシンを降ろすことができ、あなたは最初からクラスタを構築している場合、私は(mysqldump上)これらを考えるそのstrict_modeを避けるだろうし、場合によってはいくつかの他のしゃっくり:

--skip_add_locks --skip-lock-tables 

そして、他のノード上リットルを追加そして、また、データをロードし、クラスタの最初のノードを取得するのが賢明かもしれません

--single-transaction --lock-all-tables 

を使用していません彼らは自分自身をロードするためにSSTを使います。

現在のサーバーを有効にしておく必要がある場合は、そのサーバーをマスターにし、新しいクラスターの1つのノードをスレーブにすることについて議論する必要があります。 Plus XtraBackupはおそらくより適しています。しかし今、ロックと単一トランザクションが必要になります。したがって、strict_modeをDISABLEDに設定するのは、クラスタが構築されていて、まだ生きていないためです。

(警告:私は何の経験、あなたのタスクを実行する必要がありません。他の誰かが、より説得力の回答を提供する場合、彼らと一緒に行く)

+0

ありがとうございました!私の最後の試行で何が起こったのかはわかりませんが、あなたが想定していたように、strict_modeをDISABLEDに設定するには、2回目の試行のために働きました。将来のある読者のために、私は通常のダンプを--single-transactionで行い、DISABLEDモードでクラスタを再起動し、DBを復元します(テストのためにいくつかのライブデータを取得しているからです)。 利用可能になるとすぐに、私はあなたに恩恵を与えます、ありがとう! – Radim

関連する問題