2011-08-16 12 views
4

私は約80gbsのサイズのデータ​​ベースの複製を設定しようとしています。私が読んで、すべてのドキュメントから、あなたがダンプ後binlogの位置を記録し、グローバルロックなしでMySqlマスター/スレーブレプリケーションを設定していますか?

FLUSH TABLES WITH READ LOCK 

を行う必要がスレーブにデータを取得するために、あなたはinitalのmysqldumpをするときのように思えます。データベースをロックせずにレプリケーションをセットアップする方法はありますか?または少なくともテーブルレベルのロックを行う?

+0

InnoDBまたはMyISAM? –

答えて

0

すべてのテーブルをロックすることなく、一貫性のあるダンプを作成することはできません。単一のテーブルをロックすることは意味をなさない。

データベースにMyISAMテーブルのみが含まれている場合は、単純にデータディレクターをスレーブにコピーできるはずです。 InnoDBのためにこれを実現する方法がありますが、これらのツールは無料ではありません。例: innodb hotcopyの場合

+0

[XtraBackup](http://www.percona.com/docs/wiki/percona-xtrabackup:start)は、InnoDB Hot Backupの無料代替品です。 –

-1

MyISAMテーブルには、これは、一貫性のあるダンプのデータベース上の短いロックが必要になりますmysqldump

mysqldump --single-transaction --master-data DATABASE_NAME 

使用することができますが、あなたが正しいを設定するには、スレーブ上で実行できるSQLファイルを与えます複製位置。詳細については、を参照してください。

InnoDBを使用している場合、XtraBackupは仕事をする無料のユーティリティです。このblog postは、完全なプロセスの概要を示しているようです。

どちらの場合でも、一貫したダンプを確保するには、にはのロックが必要です。しかし、ロックの持続時間はかなり短く、パフォーマンスに影響を与えるべきではありません。

7

InnoDBテーブルのみを使用している場合は、Percona XtraBackupを使用できます。 MyISAMテーブルをお持ちの場合は、少なくとも簡単なロックが必要です。 MyISAMテーブルのみがあり、である必要があり、ダウンタイムを避ける必要がある場合は、汚いトリックが必要です。詳細は状況によって大きく異なり、一般的に、このようなフォーラムで議論する決定木には微妙なやり方があります。

関連する問題