web-dev-qa-db-ja.com

InnoDBテーブルでデータベースをバックアップするのに十分なdatadirディレクトリをコピーしていますか?

8000万行のinnodbテーブルがあり、mysqldumpでは非常に遅いため、バックアップ/転送のためにdatadirディレクトリをコピーすることを考えています。

MySQLのWindowsバージョンでMyISAMテーブルのみを使用してデータベースをコピーしていましたが、完全に機能しました。 LinuxからWindowsにInnoDBテーブルとMyISAMテーブルが混在するデータベースディレクトリをコピーしているので、このアプローチも機能しますか?

私は現在これをやっていますが、何か足りないものがあるかどうか知りたいですか? InnoDBテーブルのデータは、ibdata1などのさまざまな場所に広がっていませんか? ibdata1などをバックアップする必要はありませんか?

7
datasn.io

ください使用していない(そしてとは思わないの)を使用していないことを教えてください稼働中のデータベースサーバーでファイルシステムをコピーしていますか?これは事実上保証されてコピーの破損につながり、バックアップを無用のままにします。エラーは発生しません-もちろん、復元しようとした場合を除きます:-)

あなたの投稿からはあまり明確ではありませんが(私が間違っている場合は修正してください)、Linuxでデータベースを実行していますか?その場合は、Pernoの XtraBackup をInnoDBテーブルに使用します。このツールは、InnoDBテーブルのノンブロッキングホットバックアップを実行します。MySQLバックアップオプションについては、私の答え here を参照してください。 MyISAMの場合、mysqldumpのパフォーマンスが低い場合は MyDumper を確認できます。

サーバーがまだWindows上にある場合は、運が悪いです。 XtraBackupはWindowsでは機能せず、MyDumper(AFAIK)でも機能しません。 this をチェックアウトできます(免責事項-使用されていません)。

繰り返しになりますが、ここであなたが何を意味しているのか、完全には明確ではありません。

LinuxからWindowsにInnoDBテーブルとMyISAMテーブルが混在するデータベースディレクトリをコピーしているので、このアプローチも機能しますか?

LinuxからWindowsにmysqldumpをコピーする場合は、はい、それはファイルコピーとして機能します。一方、実行中のサーバーでデータファイルを(ファイルシステムを使用して)コピーし、それらのコピーをLinuxからWindowsに転送する場合は、両方のシステムで "バックアップ"は役に立ちません。

InnoDBテーブルのデータは、ibdata1などのさまざまな場所に広がっていませんか? ibdata1などをバックアップする必要はありませんか?

Mysqldumpを使用してデータベースをバックアップしている場合は、それで十分です。実行中のデータベースサーバー上のある場所から別の場所にファイルを単にコピーする場合は、バックアップが役に立たないため、何を行っても、何をコピーしなくてもかまいません。

[編集]元の投稿者のコメントに応じて。

From here (正解)

mysqldump -uuser -ppass --single-transaction --routines --triggers --all-databases> backup_db.sql

--all-databasesをスキーマ名に置き換えてください。あなたの「テーブル」はInnoDBであると言います-データベース/スキーマの残りはInnoDBですか?そうでない場合は、そうする必要があります。 datadirは何らかの形でコピーする必要があると考えているようです-それはしないでください。ダンプには、データベースを再構築するために必要なデータが含まれています。

問題が発生した場合は、データベースを最後の[〜#〜] backup [〜#〜]から復元します(つまり、ダンプ)。 PITR(ポイントインタイムリカバリ)を可能にする他のソリューションがありますが、それらはより複雑であり、レプリケーションもこの問題に対処できます。

これらの投稿( 12 )も参照してください。

これらの投稿の内容に対する私の見方(投稿者の評判を確認してください)は、InnoDBでは、上記のコマンドによりバックアップが可能になると同時に、データベースへの読み取りと書き込みが許可されます-パフォーマンスが影響を受ける可能性があることに注意してください。

5
Vérace

MySQLマニュアルのコールドバックアップセクション( http://dev.mysql.com/doc/refman/5.6/en/innodb-backup.html )によると、ibdata1、ib_logfilesが必要です。

明らかに、これにはサーバーを停止してすべてのキャッシュをディスクにフラッシュする必要があります。

2
vschum