
これはここでの私の最初の質問であり、英語は私の母国語ではありませんが、説明してみたいと思います。
プロバイダーのインフラストラクチャでパブリック 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 つのデータベースだけではなく、すべてのデータベースをダンプしたほうがよいかもしれません。