クエリがあります。2つの異なるサーバーに2つのテーブルがあります。どちらのテーブルも同じ構造です。あるサーバーのマスターテーブルは毎日更新されるので、cronジョブまたはphpスクリプトcronで別のサーバーの2番目のスレーブテーブルを更新する必要があります。私はたくさんのスクリプトを見てきましたが、どれも私の要件を解決しませんでした。
2 に答える
これを行うのに適したスクリプトが見つからなかったとは信じられません。サーバー間の帯域幅と接続性、およびテーブルのデータサイズに応じて、次のことができます。
テーブル全体を直接転送します。
mysqldump [options] sourcedatabase tablename \ | mysql [options] --host remoteserver --user username ...
MySQL圧縮でテーブルを転送する
# same as above, mysql has the "-C" flag
SSH暗号化と圧縮を使用した転送。mysqlはリモートで実行されます
mysqldump [options] sourcedatabase tablename \ | ssh -C user@remoteserver 'mysql [options]'
中間SQLファイルとrsyncを使用して転送し、変更のみを転送します
mysqldump [options] sourcedb tbl > dump.sql rsync [-z] dump.sql user@remoteserver:/path/to/remote/dump.sql ssh user@remoteserver "mysql [options] < /path/to/remote/dump.sql"
上記はすべて単純なテーブルの上書きであり、リモートデータは失われ、マスターコピーに置き換えられます。mysqldump-plus-rsync-plus-sshは、変更にほぼ比例した時間で実行されます。つまり、10 GBのSQLダンプがあり、12個のINSERTを追加した場合、転送ステージで同期するには最大で数秒かかります。 2つのSQLファイル。
挿入段階も最適化するには、完全なMySQLレプリケーションを実行するか、同期時に手動でレプリケートするためにテーブルの操作を識別する方法が必要になります。これには、テーブル構造の変更が必要になる場合があります。たとえば、「last-synced-on」列と「needs-deleting」列を追加したり、補助テーブルを導入したりする必要があります。
1つの簡単なソリューションを使用できます-dbForgeStudioforMySQLのデータ同期ツール。
- 2つの異なるMySQLサーバー上の2つのテーブルを比較および同期するデータ比較プロジェクトを作成します。
- 作成したデータ比較プロジェクトドキュメント(* .dcompファイル)を使用して、コマンドラインモードでアプリケーションを実行します。