このセクションでは、MariaDB データベースのバックアップについて紹介します。

■ mysqldumpを使ったバックアップ

全てのデータベースをフルバックアップ

全てのデータベースをフルバックアップしたい場合には、以下コマンドを実行します。–all-databases オプションを使います。

[root@hp ~]# mysqldump --user=root -p --all-databases > /tmp/backup/full-backup-$(date +%Y%m%d).sql
Enter password: 
[root@hp ~]#

指定の場所にバックアップされていることを確認します。

[root@hp ~]# ls -la /tmp/backup/
合計 123880
drwxr-xr-x   2 root root       76  7月 18 17:34 .
drwxrwxrwt. 17 root root     4096  7月 18 03:50 ..
-rw-r--r--   1 root root 66048592  7月 18 17:34 full-backup-20230718.sql
[root@hp ~]# 

圧縮してバックアップ

圧縮してバックアップをしたい場合は、以下コマンドを実行します。ここでは、gzipにパイプしてバックアップファイルを圧縮しています。

[root@hp ~]# mysqldump --user=root -p --all-databases | gzip > /tmp/backup/full-backup-$(date +%Y%m%d).sql.gz
Enter password: 
[root@hp ~]# 

バックアップファイルが圧縮されていることを確認します。

[root@hp ~]# ls -la /tmp/backup/
合計 130552
drwxr-xr-x   2 root root      111  7月 18 17:43 .
drwxrwxrwt. 17 root root     4096  7月 18 03:50 ..
-rw-r--r--   1 root root  6828489  7月 18 17:43 full-backup-20230718.sql.gz
[root@hp ~]# 

特定のデータベースをフルバックアップ

特定のデータベースをフルバックアップしたい場合には、以下コマンドを実行します。–database オプションを使います。ここでは、wpという名前のデータベースを指定しているので、適宜変更してください。

[root@hp ~]# mysqldump --user=WP_yuji_0527 -p --database wp > /tmp/backup/wp-backup-$(date +%Y%m%d).sql
Enter password: 
[root@hp ~]# 

指定の場所にバックアップされていることを確認します。

[root@hp ~]# ls -la /tmp/backup/
合計 189952
drwxr-xr-x   2 root root      141  7月 18 17:51 .
drwxrwxrwt. 17 root root     4096  7月 18 03:50 ..
-rw-r--r--   1 root root 60825219  7月 18 17:52 wp-backup-20230718.sql
[root@hp ~]# 

データの整合を保ちながらバックアップ

データの整合を保ちながらオンラインでバックアップしたい場合には、以下コマンドを実行します。–single-transactionオプションを使用します。

–single-transactionオプションを指定せずデフォルトの状態でバックアップした場合、データの整合がないダンプファイルが作成される可能性があります。データの不整合が起こるのはテーブルをロックせずに、オンラインでダンプをするケースで発生します。

[root@hp ~]# mysqldump --user=WP_yuji_0527 -p --single-transaction --database wp > /tmp/backup/wp-backup-$(date +%Y%m%d).sql
Enter password: 
[root@hp ~]# 

補足)–single-transactonオプションを指定すればオンラインでもデータの整合性を保ちながらバックアップできますが、トランザクションに対応していないストレージエンジン(MyISAMストレージエンジンなど)を利用している場合、–single-transactionオプションでもデータの一貫性を保つことが保証されません。

MySQL 5.5以前の場合、ストレートエンジンとしてMyISAMが使われていたのですが、それより新しいバージョンであれば標準のストレージエンジンとしてInnoDBが採用されていますので、この問題は解消されます。