web-dev-qa-db-ja.com

Percona XtraBackupを使用してMyISAMテーブルをバックアップする非ブロッキング操作はありますか?

私は Percona XtraBackupのWebサイト を読んでいます。

Percona XtraBackupは、バックアップの最後に書き込みを一時停止することで、MyISAM、Merge、Archiveなどのストレージエンジンをバックアップできます。

この機能を実現するためにxtrabackupバイナリで見逃したフラグまたはオプションはありますか?

より詳しい情報...

CentOS 7.2サーバーとMySQL 5.6.30にXtraBackup 2.3.4をインストールしました。約3200万行の新しいMyISAMテーブルを作成し、以下を使用してバックアッププロセスを開始しました。

xtrabackup --user=user --password=password --no-timestamp --compress --backup --target-dir /tmp/my_backup

バックアップの進行中に、テーブルに新しい行を書き込もうとしましたが、これはWebサイトが示唆するとおり、テーブルに挿入されることを十分に期待しています。しかし、そうではありませんでした。バックアッププロセス全体の間、MyISAMテーブルはロックされます。

テーブルがロックされている理由を理解しているため、XtraBackupが最後まで大きな書き込みの一時停止なしでバックアップを実行できることを読んだので、とても興奮しました。この機能を実現する方法がわかりません。

2
Marc

いいえ-MyISAMアーキテクチャはホットバックアップを禁止しています-ロックメカニズムを使用しています。 関連スレッド での私の応答に興味があるかもしれません。

データベースのmysqldumpを取得し、ENGINE = MyISAMと表示されているビットをENGINE = InnoDB(InnoDBはMVCCアーキテクチャーを使用)に変更してから復元します。XtraBackupはホットバックアップを実行します。 sedを使用して、私が提案した編集を行うのは比較的簡単です。

mysqldump [options] | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' > my_schema.sql 

次に、通常の方法でダンプファイルを復元します。

MyISAMは近い将来に 非推奨 になります! [編集-2018年4月19日追加]-MySQL 8のシステムテーブルは 現在はInnoDB

PerconaのXtraBackupページが「完全な製造」であるというOPの質問に答えて、「バックアップの最後に書き込みを一時停止することで、次のストレージエンジンをバックアップできます」と述べています。

そのページのキーワードは「簡単」だと思います! :-)見てください ここ -ビル・カーウィンはこのフォーラムの大打者です。

また、Shlomi Noach says のMyISAMホットバックアップ(または不足)についても確認してください。彼はMySQLの世界でも大打者です。彼が参照しているファイルシステムのスナップショットは mylvmbackup です-これはかなり良い担当者のようです。ここに。

2
Vérace