2011-01-18 10 views
4

私は2つのMySqlデータベースを持っており、それらを同期させておきたい。問題は、私は "マスター"データベースを実行するマシンにアクセスできないということです。私は読み取り権限しか持っていません。Sync 2 MySQLデータベース

私はセカンダリデータベースを作成したので、毎日午前12時にマスタと同期するcronジョブを作成したいとします。

これを行うにはどのような方法が最適ですか?

+0

あなたはMySQLレプリケーションを動作させる権利を_get_できますか? – Alnitak

+0

nop ...すべて私はそのビューを持っています... – void

答えて

0

最もシンプルですが、おそらく最もオーバーヘッドが大きいものは、単にmysql-dumpを実行して2番目のデータベースにデータを再インポートするだけです。

+0

私はマスターデータベースを実行するマシンにアクセスできません... – void

+0

mysqldump:1044:ユーザー 'user'のアクセスが拒否されました@ '%'へLOCK TABLESをしているときにデータベース 'database'があります。 – void

+0

うーん...あなたはそこにくっついていると思います。 – BastiBen

0

私の解決策は、すべてのデータを再インポートするためのpythonスクリプトを作成することでした。とにかくdjango-appのテーブル名を変更する必要がありました。

6

MySQL用Maatkitツールキットのmk-table-syncを使用してください。

ドキュメントから:

Make slave1 have the same data as its replication master: 

    mk-table-sync --execute --sync-to-master slave1 

自動的に同期にテーブルを持って来ることができることに加えて、それはそれを手動で行うことが必要になるだけで、出力SQL文--dryラン引数を持っています。 mk-table-syncの正しいコマンドライン引数を選択し、実際にテーブルを同期させたときに正しく動作することを確信するにはうってつけです。

+0

これをOSXにインストールする方法はありますか? – Kostas

+0

ダウンロードしてアーカイブを解凍します。インストール手順については、READMEファイルを参照してください。 Maatkitをインストールする前に、Perl MySQLドライバをインストールするには、sudo perl -MCPAN -e 'install DBD :: mysql'を実行する必要があります。 1年以上前に、Snow Leopardの32ビット版と64ビット版のPerlに関する注意点について、ブログに投稿しました。 http://www.wombatnation.com/2009/11/maatkit-install-on-os-x-snow-leopard –