【MariaDB】バックアップ/リストア mariadb-backupコマンド編

【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
      • フルバックアップ(または前回のバックアップ)のディレクトリを指定。
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
        圧縮対象のディレクトリ
    • &&
      1つ目のコマンド(MariaDB Backup)が成功した場合にのみ、2つ目のコマンド(7-Zipの圧縮)が実行される

バックアップファイルだけを圧縮したい場合

  • 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)からデータを受け取る。

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 を使ったフルバックアップ・増分バックアップの取得方法と、それをリストアする手順について紹介しました。

バックアップの頻度や方法は、データベースの規模や業務要件に応じて調整する必要があります。定期的なバックアップとテストリストアを行い、「いざという時」に確実に復元できる状態を維持しましょう。

タイトルとURLをコピーしました