【Linux】NASへデータベースのバックアップを定期的に保存する方法
2023.08.11 /
本記事ではLinuxにおける、NASへデータベースのバックアップを定期的に保存する方法について解説していきます。
Linuxサーバーで万が一に備えてバックアップを取っておくことは必須です。サーバーの故障やデータの破損、人為的なミスなどデータが消失するリスクは様々です。
データベースのバックアップをNASに定期的に保存しておき、問題が起きたときに即座に対応できるようにしておきましょう。
本記事では以下の環境でバックアップを実行しております。
- OS:Ubuntu Server
- NAS:Synology NAS
- データベース:MySQL
Linuxのバックアップ
バックアップとは
バックアップとはサーバー等の機器の故障やデータ破損に備えて対象のコピーを作っておくことです。万が一問題が発生しても、バックアップがあることで素早く復旧が可能になることが多いです。
バックアップが必要となる問題としては次のようなことが考えられます。
- 機器の故障
- ウイルスやサイバー攻撃(ランサムウェア)によるデータの消失や暗号化
- 人為的なミスによるデータ消失
- 地震や火事などの災害
バックアップしたデータを使って環境をバックアップデータの時点に戻すことを「リストア」と呼びます。
バックアップを保存しておく場所は様々です。サーバーのハードディスク内であったり、外付けディスク、NASなどがあります。本記事ではNAS(Synology NAS)をバックアップ先として利用しています。
バックアップの種類
バックアップには大きく分けると「システムバックアップ」と「データバックアップ」の2つに分けられます。
システムバックアップとはシステムが動いている環境そのもののバックアップを取ることです。イメージバックアップとも呼ばれます。システムバックアップを利用することでシステムの迅速な復旧や環境の複製が可能になります。システムそのもののバックアップなので、ファイルサイズは非常に大きくなります。
データバックアップとはファイルやデータベースに保存されたデータのバックアップを取ることです。本記事で扱うバックアップはデータバックアップになります。MySQLのデータベースをNASにバックアップしていきます。
LinuxのデータベースをNASにバックアップする方法
Linuxのデータベース(MySQL)をNASに定期的にバックアップする流れは以下の通りです。
- NASとマウントするディレクトリの作成する
- 作成したディレクトリをNASとマウントする
- シェルスクリプト(shファイル)を作成する
- cronによるジョブスケジューリングを作成する
上記の各操作について次項より詳しく解説していきます。
NASとマウントするディレクトリの作成する
まずNASとマウントするためのディレクトリを作成します。
マウントとは特定のディレクトリにディスク装置を接続することです。マウントをすることにより、Linuxからディスク装置のファイル読み込み・ダウンロード・アップロードが可能になります
ディレクトリの作成にはmkdirコマンドを以下構文に沿って使用します。
mkdir ディレクトリ名
ここでは/home/ubuntu内にディレクトリ名office54を作成します。
$ cd /home/ubuntu
$ mkdir office54
作成したディレクトリをNASとマウントする
マウント用のディレクトリを作成したら、そのディレクトリとNASをマウントします。マウントにはmountコマンドを使用します。
mount [オプション] [ディスク装置名(ファイルシステム)] [マウントポイント]
LinuxでのNASとのマウントについて詳しくは以下記事をご参照ください。
【Linux】共有フォルダ(NAS)にSMBでアクセスする方法:mountコマンド
例として、作成したディレクトリをNAS(192.168.0.54)のOFFICEフォルダとマウントするコマンドを記します。ここではNAS側にはユーザーofficeが作成されているとします。
$ sudo mount -t cifs //192.168.0.54/OFFICE /home/ubuntu/office54 -o user=office,pass=fivefour
SMB3.0をサポートしていない場合は「vers=2.0」などを追加してコマンドを実行してみてください。
シェルスクリプト(shファイル)を作成する
次にNASへのバックアップを行うコマンドを記述したシェルスクリプトを作成します。
シェルスクリプトとはシェル上で実行できるコマンドが記述されたプログラムです。ちなみにシェルとはLinuxカーネルとユーザーの仲立ちをするユーザーインターフェースです。詳しくは以下記事をご参照ください。
【Linux】.shファイルとは?実行方法とシェルスクリプトの記述について
好きな場所に以下コードが記述されたシェルスクリプトを作成してください。ここではbackup.shとして保存したとします。
#!/bin/sh
date=$(date '+%Y%m%d')
file="${date}.dump"
sudo mysqldump --single-transaction -u office -p fivefour database > /home/ubuntu/office54/${file}
上記プログラムではまずfileに本日の日付+拡張子(.dump)が格納されます。バックアップファイルはmysqldumpコマンドで生成され、それをマウントしたディレクトリ内に保存しています。
mysqldumpコマンドはデータベース内のテーブルをバックアップ・リストアするコマンドです。詳しい使い方は以下記事をご参照ください。
【MySQL】データベースのバックアップとリストア(復元):mysqldumpコマンド
cronによるジョブスケジューリングを作成する
最後にcronを使ってシェルスクリプトbackup.shを定期的に実行するように登録します。
cronとはLinux系OSで用意されている、定期的にプログラムを実行するための機能です。バッチ処理やバックアップといったプログラムを指定した時間に走らせる用途に利用されます
【Ubuntu】cron(crontab)でプログラムを定期的に実行:ジョブスケジューリング
cronによるジョブスケジューリングを設定するために以下コマンドを実行します。
$ crontab -e
cronの設定ファイルが表示されるのでスケジュールを追記してください。以下コードでは毎日6時にbackup.shが実行されます。
00 06 * * * /bin/bash /home/ubuntu/backup.sh
ここまでの操作により、毎日指定した時間にバックアップを取得し、NASに保存することができるようになります。
まとめ
本記事「【Linux】NASへデータベースのバックアップを定期的に保存する方法」はいかがでしたか。
サーバーであればデータベースのバックアップを取っておくことは必須になります。万が一に備えて本記事を参考にして、バックアップを定期的に取るようにしておきましょう。