マスターとは別のネットワークにあるMySQLスレーブサーバーを初期化する

マスターとは別のネットワークにあるMySQLスレーブサーバーを初期化する

これはここでの私の最初の質問であり、英語は私の母国語ではありませんが、説明してみたいと思います。

プロバイダーのインフラストラクチャでパブリック IP アドレスを持つマスター MySQL サーバーを実行しており、テスト目的ですべてのデータを複製するローカル MySQL スレーブ サーバーをオフィスで実行したいと考えています。

レプリケーションの設定は完璧に機能し、スレーブがマスターからバイナリログを読み取るように SSH トンネルを作成しました。ここではすべて正常です。

私の問題は、マスターからのデータを設定することです。通常、マスターから同じネットワーク上の任意のスレーブにデータをロードする場合は、マスターで次のコマンドを実行します。

mysqldump 'master' --master-data=1 | mysql 'slave' 

しかし、ここではスレーブが一連の NAT ルーターの背後にあるオフィスに配置されているため、スレーブに IP を割り当てることができません...

マスターを停止できず、約 50 GB のデータが存在することを承知していますが、解決策を持っている人はいますか。マスターからスレーブへの「ホット」データ転送を行うための他の解決策があれば、私も非常に興味があります。

よろしくお願いします。

答え1

マスターに ssh できると仮定すると、スレーブからはどうでしょうか。

ssh master 'mysqldump \'master\' --master-data=1' | mysql 'slave'

これにより、マスター上で dump コマンドが実行されますが、ローカルでリロードされます。

答え2

scpそれを aan ファイルに転送して、後でまたはで転送しないのはなぜですかrsync?

mysqldump master --master-data=1 >master.dump

奴隷に

mysql <master.dump

代わりに、mysqldumpマスターではなくスレーブでコマンドを実行します。おそらく、上記のエラーが発生せずに、よりうまく動作するでしょう。

ヒント: 1 つのデータベースだけではなく、すべてのデータベースをダンプしたほうがよいかもしれません。

関連情報