トップページ > 保守運用 > サーバ > MySQL のデータベースをダンプしてバックアップする方法
MySQL のデータベースをダンプしてバックアップする方法
データベースは企業で使われるシステムの他、最近ではブログなど個人サイトでも利用されることが増えており、バックアップの方法はプログラムや画像のようにファイルでコピーする方法ではないので、MySQL を例にバックアップ(ダンプ)を定期的に行う方法を紹介する。
このページの目次
1. データベースをバックアップ(ダンプ)したほうがよい理由
MySQL や postgreSQL などデータベースをバックアップしたほうがよい理由としては、サーバやデータベース自体が破損してデータの読み書きができなくなることが稀にあるため、大切なデータを元に戻してシステムが正常稼働するように復旧できる体制を整えることにある。
また、稼働しているシステムの OS が古くなったなどで新しい環境に移し替える際にも、バックアップしたデータベース内のデータを用いることで新システムでも利用することが可能になる。
データベースのバックアップにはテーブルの構造とその中に格納されているデータをテキストファイルに出力することを「ダンプ」と呼び、反対にダンプしたファイルをデータべースに入れることを「リストア」と呼ぶ。
2. MySQL のダンプの方法
データベースの MySQL をダウンプする場合は下記のコマンドで行うことができる。
RedHat など Linux 系のサーバの場合、MySQL を SQL で操作する場合は一度 mysql コマンドで MySQL にログインするが、ダンプする場合は mysqldunmp コマンドで直接ファイルに書き出すことが可能である。
# mysqldump -u {データベースに接続するユーザ名} -p {データベース名} > /{ダンプ先のパス}/{ダンプファイル名}.{指定する拡張子} Enter password:
データベースにログインする際にパスワード認証をかけている場合は、「Enter password」が表示されるので設定しているパスワードを入力してエンタキーを押下するとダンプが実行される。
3. MySQL を定期的にダンプする方法
MySQL を定期的にダンプする方法は、ダンプするコマンド(mysqldump)を Linux 系のサーバであれば定期的に動作させる cron に設定を入れることで実施できる。
今回はダンプの他に、ダンプしてから一週間経過したファイルは自動的に削除するコマンドも実行することから、それらの処理を 1 つにまとめたシェルを用意する。
3-1. ダンプと一定期間経過したファイルを削除するシェルを用意
ダンプと一定期間経過したファイルを削除するシェルを下記の手順で用意する。
まず、シェルファイルを設置するディレクトリに移動してから vi コマンドで処理を記入する。
# cd /usr/local/bin/ # vi mysql_db_backup.sh ↓ i キーで記入モードにして下記を記述する #!/bin/bash DATE=`date "+%Y%m%d"` BAKDIR=/{保存するディレクトリ} DB_USER={データベースに接続するユーザ名} DB_PASS={データべースに接続するパスワード} DB_NAME={データベース名} mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${BAKDIR}/${DB_NAME}_${DATE}.sql find ${BAKDIR} -type f -name "${DB_NAME}_*.sql" -mtime +7 -exec rm -f {} \;
mysqldump の行ではデータベースへ接続する際にパスワード認証がある場合を想定して -p${DB_PASS} を加えている。
この時、-p と ${DB_PASS} の間にはスペースなど何も入れないようにする。
また、ダンプしたファイルの拡張子は .sql にしているがダンプした内容はテキストファイルなので .log や .txt など好みの拡張子を指定することができる。
find の行ではダンプファイルが作成された日時から一週間経過したファイルを検索し、該当すれば rm コマンドで削除するようにしている。
これによりダンプファイルは最大 7 つを常に保つようになるため、ダンプファイルでディスクの空き容量が無く事態を防ぐ。
次に用意したシェルファイルをコマンドで実行できるように実行権限をパーミッションの変更により付与する。
# chmod 755 mysql_db_backup.sh
最後に上記で用意したシェルが正常に動作するかは下記のコマンドで確認することができる。
# /usr/local/bin/mysql_db_backup.sh mysqldump: [Warning] Using a password on the command line interface can be insecure.
シェルを実行した後に「[Warning] Using a password on the command line interface can be insecure.」が表示されるが、これはシェル内にデータベースに接続するためのユーザ名とパスワードを直接記入していることの警告であるが、これが表示されても指定のディレクトリにはダンプファイルが生成される。
Warning を消す場合は、ユーザ名とパスワードのみを記入したファイルを別途用意し、シェルでその別ファイルを読み込むことで解消される。
3-2. cron で定期的に実行する設定を行う
前述でデータべースをダンプして一定期間経過したファイルを削除するシェルを用意したが、これを定期的に動作させるために cron を用いて実行させる。
cron の設定は次のようにする。
# vi /var/spool/cron/root ↓ i キーで記入モードにして下記を記述する 0 1 * * * /usr/local/bin/mysql_db_backup.sh > /dev/null 2>&1
cron の設定では vi コマンドで設定ファイルを開いているが、「# crontab -e」でも設定することが可能である。
尚、上記の設定では毎日 01:00 にシェルが動作する仕様になっている。
cron が設定されているかどうかは下記のコマンドで確認することができる。
# crontab -l 0 1 * * * /usr/local/bin/mysql_db_backup.sh > /dev/null 2>&1
関連記事
IT/Web 総合
Flash とはブラウザ上で再生することができる動画またはインターフェイスの一種で多くのウェブサイトやクリエイターの作品作成のツールとして利用されてきたが 2020 年に提供を終了し、その後継ソフトや活用方法について紹介する。
IT/Web 総合
インターネットはブラウザでウェブサイトを見たり、SNS やスマホゲームなどさまざまなことができるが、それらは全てサーバと呼ばれるシステムによる実現できている。ここではサーバの概要とインターネットには欠かせない理由について説明する。
IT/Web 総合
サイト内検索は Google など検索サイトと違い特定のウェブサイトやブログ内のコンテンツのみを対象に検索する機能で、一見するとウェブサイトにアクセスした閲覧者向けに思えるが、サイト運営者の方に大きなメリットがある理由について紹介する。
ウェブサイトをインターネット公開するまでのゼロから始めた全体の流れ
IT/Web 総合
ウェブサイトやブログを初めて公開する場合や、既に公開しているもののリニューアルする場合など、実際にページを作る前に考慮すべき点によりウェブサイトの構成と作成方法が異なるため、企画してインターネット上に公開するまでの流れを紹介する。
IT/Web 総合
ウェブ制作者やシステムエンジニアは IT 系の業種として理系の学校に通う学生に人気があり、独学でもスキルを習得できることから文系学部の卒業者でもエンジニアとして活躍する人が少なく、このウェブ制作者やシステムエンジニアになる方法について紹介する。