【MariaDB】バックアップ/リストア mariadb-backupコマンド編
データベースのバックアップとリストアは、システム管理者や開発者にとって重要な業務です。本ブログではMariaDB(Community Edition版)でのバックアップとリストアの基本的な方法を、初心者/中級者向けに紹介します。
MariaDB(Community Edition版)のバックアップ方法には主に「mysqldump」と「mariadb-backupコマンド」がありますが、本ブログでは「mariadb-backupコマンド」を紹介します。
【MariaDB】mariadb-backupコマンドとは
MariaDBのmariadb-backupコマンドは、データベースのデータを物理フォルダごとコピーするバックアップ手法です。
この方法はmysqldumpのようにSQLテキストを生成するのではなく、バイナリデータをそのまま保存するため、大規模データに適しています。
- 主な特徴
- 物理バックアップをサポート
- データベース内のすべてのデータファイルを直接コピーする方法
- 大規模なデータベースでも高速にバックアップが可能
- 物理バックアップをサポート
- フルバックアップと増分バックアップに対応
- フルバックアップ
- データベース全体のデータをバックアップ(初回のバックアップとして推奨)。
- フルバックアップ
- 増分バックアップ
- 前回のバックアップ以降に変更されたデータのみをバックアップします。ストレージを節約しつつバックアップスピードを向上できます。
- トランザクションの一貫性を維持
- InnoDBストレージエンジンのトランザクションログを含めてバックアップするため、トランザクションの一貫性を確保できます。
- 稼働中でもバックアップが可能(ホットバックアップ対応)
- バックアップ後のデータ検証が可能
- バックアップファイルが正しい状態かどうかを検証できます。
- MyISAMとAriaストレージエンジンもサポート
- デフォルトではInnoDBストレージエンジンに最適化されていますが、MyISAMやAriaなど他のストレージエンジンにも使用可能です。
- 主な利用場面
- データベースが大規模で、運用中にバックアップを取得する必要がある場合
- 定期的なインクリメンタルバックアップを利用したい場合
- バックアップファイルのセキュリティやストレージ効率を重視する場合
【MariaDB】mariadb-backupの基本的な使い方
mariadb-backupの基本
フルバックアップの作成
C:¥>mariadb-backup --backup --target-dir=D:\Backup --user=root --password=your_password
- –backup:バックアップモードを指定
- –target-dir:バックアップファイルを保存するディレクトリを指定
- –user/–password:MariaDBの接続情報を指定
■実行例
C:¥>C:\>mariadb-backup --backup --target-dir=H:\Backup --user=root --password=********
[00] 2025-01-29 20:37:05 Connecting to MariaDB server host: localhost, user: root, password: set, port: 3306, socket: C:\Program Files\MariaDB 11.4\data\mysql.sock
・
・
・
[00] 2025-01-29 20:37:17 All tables unlocked
[00] 2025-01-29 20:37:17 Backup created in directory 'H:\Backup\'
[00] 2025-01-29 20:37:17 Writing backup-my.cnf
[00] 2025-01-29 20:37:17 ...done
[00] 2025-01-29 20:37:17 Writing mariadb_backup_info
[00] 2025-01-29 20:37:17 ...done
[00] 2025-01-29 20:37:17 Redo log (from LSN 74243 to 74259) was copied.
[00] 2025-01-29 20:37:17 completed OK!
C:\>
インクリメンタルバックアップの作成
- フルバックアップ後に変更された部分だけをバックアップする場合
- –incremental-basedir
- フルバックアップ(または前回のバックアップ)のディレクトリを指定。
- –incremental-basedir
C:\>mariadb-backup --backup --target-dir=D:\Backup\incremental --incremental-basedir=D:\Backup\full --user=root --password=your_password
圧縮したバックアップ
- バックアップを7-zip等の圧縮ソフトで圧縮するとディスク容量を節約できます。
C:¥>mariadb-backup --backup --target-dir=D:\Backup --user=root --password=your_password && 7z a D:\Backup\backup.7z D:\Backup
- 説明
- MariaDB Backup
- –backup: バックアップモードを指定
- –target-dir=D:\Backup: バックアップデータの保存先
- –user=rootと–password=your_password:MariaDBの認証情報
- 7-zipのオプション
- a
圧縮ファイルを作成します(add) - D:\Backup\backup.7z
作成される圧縮ファイルのパス - D:\Backup
圧縮対象のディレクトリ
- a
- &&
1つ目のコマンド(MariaDB Backup)が成功した場合にのみ、2つ目のコマンド(7-Zipの圧縮)が実行される
- MariaDB Backup
バックアップファイルだけを圧縮したい場合
- mariadb-backupのバックアップ出力を標準出力(–streamオプション)で直接圧縮することも可能です。
C:¥>mariadb-backup --backup --stream=xbstream --user=root --password=your_password | 7z a -si D:\Backup\backup.7z
- 説明
- –stream=xbstream
標準出力にバックアップデータを出力。 - -si
標準入力(stdin)からデータを受け取る。
- –stream=xbstream
mariadb-backupコマンドの主なオプション
- –backup
バックアップを作成するモードを有効にします。
c:\>mariadb-backup --backup --target-dir=D:¥Backup\to\backup --user=root --password=your_password
- –prepare
バックアップデータを復元可能な状態に準備する(トランザクションログを適用し一貫性を確保)
c:\>mariadb-backup --prepare --target-dir=D:¥Backup\to\backup
- –copy-back
準備済みのバックアップデータを元のデータディレクトリに復元します
※)MariaDBサーバーを停止した状態で使用する
c:\>mariadb-backup --copy-back --target-dir=D:¥Backup\to\backup
- –target-dir
バックアップデータを保存するディレクトリを指定します。
c:\>mariadb-backup --backup --target-dir=D:¥Backup\to\backup
- –incremental-basedir
増分バックアップを作成する際に、基となるフルバックアップや以前の増分バックアップのディレクトリを指定します。
c:\>mariadb-backup --backup --incremental-basedir=D:¥Backup\to\full_backup --target-dir=D:¥Backup\to\incremental_backup
- –parallel
バックアップを並列処理するスレッド数を指定します。大規模なデータベースでバックアップの速度を向上させる際に有用です。
c:\>mariadb-backup --backup --parallel=4 --target-dir=D:¥Backup\to\backup
- –stream
バックアップデータを標準出力(STDOUT)に送信します。他のツール(例: gzipや7-Zip)とパイプ処理する場合に使用します。
C:\>mariadb-backup --backup --stream=xbstream --user=root --password=your_password | 7z a -si D:\Backup\backup.7z
- –databases
特定のデータベースだけをバックアップします。
c:\>mariadb-backup --backup --databases="db1 db2" --target-dir=D:\Backup\backup
- –tablespaces
特定のテーブルスペースのみをバックアップします。
c:\>mariadb-backup --backup --tablespaces=ts1,ts2 --target-dir=D:\Backup\backup
- –no-lock
テーブルのロックをスキップします。バックアップ中にデータベースを利用可能にしたい場合に使用します(ただし、一貫性が保証されない場合があります)。
c:\>mariadb-backup --backup --no-lock --target-dir=D:\Backup\backup
【MariaDB】mariadb-backupリストアの手順
MariaDBサーバーの停止
データを安全に復元するため管理者権限でMariaDBサーバーを停止します。
c:\>net stop mariadb
バックアップデータを準備する(–prepare)
バックアップデータをリストア可能な状態に準備します。
c:\>mariadb-backup --prepare --target-dir=D:\Backup\Full
データをリストアする(–copy-back)
バックアップデータの保存先または復元元のディレクトリを指定する(–target-dir)
データディレクトリにバックアップデータをコピーします。データディレクトリが既存の場合、空にしておく必要があります。
c:¥>mariadb-backup --copy-back --target-dir=D:\Backup\Full
データディレクトリの権限を修正する
MariaDBサービスが正しく動作するよう、データディレクトリの権限を確認・修正します(Windowsでは通常不要ですが、エラー発生時等に確認)
MariaDBサーバーを起動する
リストア後、管理者権限でMariaDBサーバーを起動します。
c:\>net start mariadb
【MariaDB】mariadb-backup リストア時の注意点
データディレクトリの場所
MariaDBのmy.ini設定ファイルでデータディレクトリ(datadir)がカスタマイズされている場合、その場所を確認する必要ありますす。
バックアップが圧縮されている場合
gzipや7-Zipで圧縮したバックアップを使用する場合は、まず解凍してからリストアを実行します。
c:¥>7z x backup.7z -oD:\Backup\Full
増分バックアップの適用順序
- 最初にフルバックアップを–prepareで準備
- 次に、順番に増分バックアップを–prepare –incremental-dirで適用
まとめ
MariaDBのデータを安全に保護するためには適切なバックアップ計画と実行が欠かせません。
特に、mariadb-backup は物理バックアップを取得できる強力なツールであり大規模なデータベースの運用に欠かせません。
本記事では、mariadb-backup を使ったフルバックアップ・増分バックアップの取得方法と、それをリストアする手順について紹介しました。
バックアップの頻度や方法は、データベースの規模や業務要件に応じて調整する必要があります。定期的なバックアップとテストリストアを行い、「いざという時」に確実に復元できる状態を維持しましょう。