web-dev-qa-db-ja.com

/ var / lib / mysqlをコピーすることはmysqldumpに代わるものですか?

私はdebianシステム全体の完全バックアップを作成しているので、/var/lib/mysqlディレクトリのコピーを作成することは、mysqldumpを使用してテーブルをダンプする代わりに実行可能な方法かどうかを考えていました。

  • 必要なすべての情報がそのディレクトリに含まれていますか?
  • 単一のテーブルを別のmysqlにインポートできますか?
  • (おそらく少し)異なるmysqlサーバーバージョンでこれらのファイルを復元するときに問題が発生する可能性はありますか?
35
Matteo Riva
  • はい
  • テーブルがMyISAM(デフォルト)エンジンを使用している場合は、はい。 InnoDBを使用している場合は例外です。
  • おそらくそうではなく、ある場合は、mysql_upgradeを実行して修正する必要があります。

データベースが不整合な状態になるのを回避するには、MySQLをシャットダウンするか、バックアップの前にLOCK TABLESを使用してからFLUSH TABLESを使用します。 2番目のソリューションは、MySQLサーバーがバックアップ中(読み取り専用ですが)利用可能なままなので、少し優れています。

32

このアプローチは、最初にデータベースをシャットダウンした場合にのみ安全に機能します。そうしないと、後で一貫性のない状態になる可能性があります。最初に/etc/init.d/mysql stopコマンドを使用します。その後、バックアップが取られた後で再起動できます。

4
AlBlue

最初にMySQLサーバーをシャットダウンし、まったく同じバージョンを使用して「バックアップ」を取得する限り、問題はありません。それ以外の場合はそうではありません。

3
Joonas Pulakka

2つの戦略の完全な説明については、これを読む必要があります: https://dev.mysql.com/doc/refman/5.5/en/backup-types.html

現在最高の無料でオープンソースのソリューションは、Perconaのようです: http://www.percona.com/software/percona-xtrabackup

1
TomDogg

私は強いNOで行きます。

私の経験から、生のmysqlデータファイルのバックアップ/復元は、同じos/serverバージョンでのみ使用できます。同じサーバーバージョンのクロスプラットフォーム(ubuntu/macosなど)でも、mysqlサーバーのバージョンが同じプラットフォームでも異なる場合は機能しません。

Percona XtraBackup(innobackupex) PerconaのMySQLディストリビューションでは、ライブおよび差分mysqlバックアップを実行し、/var/lib/mysql/にコピーすることで復元できるバックアップファイルを提供できます。これらすべてを使用するには、Percona Server for MySQLを実行している必要があります。

0
seven