mariabackup を使用して単一のデータベースをバックアップしますか?

mariabackup を使用して単一のデータベースをバックアップしますか?

私はデータベースのバックアップ ルーチンをやり直す作業を行っており、スキーマのサイズを考えると mysqldump ではもう十分ではないため、mariabackup を検討しました。バックアップが必要なスキーマは複数あり、サイズもバックアップ頻度も異なります (6 時間間隔でバックアップする必要があるものもあれば、1 日おきにバックアップする必要があるものもあります)。さらに、データベースはマスター スレーブ構成で実行される 2 つのデータベース サーバーで構成されています。

まず、スキーマの 1 つに対して次のコマンドを実行しました。

mariabackup --backup --user root --password <pass> --databases db1

これにより、'db1' スキーマのデータ ファイルのコピーと、MariaDB 自体で使用されるいくつかのファイル (aria_log、ib_buffer_pool、ib_logfile、ibdata など) が生成されました。これは完璧に機能し、各スキーマの個別のバックアップを作成できます。

ただし、復元は別の話のようです。バックアップを '--prepare' して mariabackup --copy-back コマンドを発行すると、データ ディレクトリが空でなければならないというエラーが表示されます。バックアップを分けた場合、それらのスキーマを 1 つのデータベース (または 1 つの MariaDB インスタンス) で復元することは可能でしょうか? さらに明確に言うと、スキーマ 'db1'、'db2'、および 'db3' のバックアップを作成した場合、同じデータベース インスタンスでそれらすべてを復元することはできないようです。何か理解していないことがあるのでしょうか?

答え1

あなたのような部分的なバックアップは、--prepare --export でのみ復元できます。これにより、.ibd ファイルだけでなく、いくつかの .cfg ファイルが生成されます。「復元」とは、ターゲット システム上のすべてのテーブルに対して「ALTER TABLE .. DISCARD TABLESPACE」、「ALTER TABLE IMPORT TABLESPACE」を実行することを意味します。残念ながら、これは 100% 自動化されていません。ターゲット システム上のテーブルスペースを破棄するには、まず同じ「CREATE TABLE」を使用して、ターゲット システム上にテーブルスペースを作成する必要があるためです。

関連情報