web-dev-qa-db-ja.com

ライブMySQLデータベースをバックアップする方法は?

12 GBのMySQL InnoDBデータベースを使用しており、1秒あたり約800のクエリがあります。バックアップを作成するために「mysqldump」を開始してすぐに、自分のWebサイトで「503」を取得し始めます。

サイトのパフォーマンスに影響を与えずにライブデータベースのバックアップを作成するにはどうすればよいですか?

5

データベースのサイズは小さくないため、次のコマンドを試してください。

mysqldump -u USER -p --single-transaction --quick --lock-tables=false --all-databases (or) DATABASE | gzip > OUTPUT.gz
5
Ahmad Abuhasna

Percona Toolkitを使用してデータベースをバックアップし、データベースをブロックしないようにする必要があります。

Sudo innobackupex --user=root --password=rootPASSWORD --Host localhost /tmp/
Sudo innobackupex --apply-log --use-memory=2G /tmp/$TIMESTAMP/

/tmpに十分なディスク容量が必要です。完了したら、ディレクトリ全体を別のサーバーにコピーできます。

xtrabackup_binlog_infoには、レプリケーション情報があります。 (スレーブ複製をセットアップする必要がある場合に役立ちます)

4
Gea-Suan Lin

Percona XtraBackupツールを使用する必要があります。巨大なデータセットの魅力のように機能し、MySQLの操作を中断しません。 http://www.percona.com/doc/percona-xtrabackup/2.2/innobackupex/creating_a_backup_ibk.html いくつかのトリックがありますが、それだけの価値があります。

4
vfedorkov

-single-transaction オプションを使用する必要があります

mysqldump -uroot -p --single-transaction databasename > dump.sql

データのポイントインタイムスナップショットを可能にします。 mysqldumpが起動すると、すべてのInnoDBテーブルが時間内に凍結されます。 mysqldumpを2:30 PMに開始して、3:00 PMに終了するとします。ダンプされるすべてのInnoDBテーブルは午後2時30分からになります。他のすべての変更(INSERT、UPDATE、DELETE)は中断されて続行され、ダンプには含まれません。

MyISAMテーブルがINSERT、UPDATE、またはDELETEによって更新されている場合、MyISAMはポイントインタイムバックアップを妨害します。 MyISAMテーブルが読み取り専用の場合、 -single-transaction でも問題ありません。

提案

MySQLレプリケーションを設定している場合は、スレーブに移動してこれを実行できます

mysql -uroot -p... -ANe"STOP SLAVE"
mysqldump -uroot -p --single-transaction databasename > dump.sql
mysql -uroot -p... -ANe"START SLAVE"

マスターは進行中のバックアップを知りません。

2
RolandoMySQLDBA