私がこの問題を解決した方法は、
月次 (または週次/日次) のバックアップを取得し、マスターをリセットしてログ ファイルを再起動することでした。バックアップをマスターにパイプして、一度に 1 つのテーブルでデータベースを補充します。スレーブを再起動します。
さらに多くのスレーブがあり、テーブルのリロードにそれほど時間はかかりませんでした。バックアップに時間がかかりすぎる場合は、これを別の方法で行うことをお勧めします。
スレーブを失った場合、テーブルのリロードでスレーブを開始する限り、ログ ファイルからスレーブを再起動することができます。スレーブの 1 つからバックアップする場合は、最初にマスターと同期していることを確認することが重要です。
これを行う方法は他にもあるかもしれませんが、定期的にログ ファイルを新たに開始することは非常に便利です。
cron で使用するマスター コード (これは以前のものです。動作することを確認する必要があります):
#!/usr/bin/ksh
date=`date +%y%m%d`
mysql -u root db_name -e "flush tables with read lock;"
mysqldump -u root -pYrPass --add-drop-table --add-locks natl_inv > /path/to/backup/db_name$date
mysql -u root -e "reset master;"
mysql -u root db_name -e "unlock tables;"
mysql -u root –pYrPass db_name < /path/to/backup/db_name$date
mysql -u root -e "flush logs;"
スレーブの場合: show slave status コマンドを使用して、マスターと同期していることを確認します。マスターに再同期する場合は、次を実行します。
slave stop;
reset slave;
slave start;
mysql を停止し、スレーブ ビン ログ ファイルを削除してから、再起動して上記を実行する必要がある場合があります。