beta

MYSQLサーバーのバックアップを自動でGoogle Driveに日次保存する

MySQLのバックアップファイルを、日次でGoogle Driveにバックアップして、バージョン管理する方法です。

公開日:2019年6月20日

やりたいこと

  • DBサーバー(CentOS)から日次でSQLをバックアップ
  • バックアップサーバーにアップロード
  • バージョン管理もしたい
  • 全部全自動で行いたい
  • 無料がいい

ということで、Google Driveなら簡単にできそうなので、トライしてみました。

gdriveをインストール & アカウント認証

gdriveをインストール

まずは、CentOSのDBサーバーにコマンドでGoogle Driveの操作ができる「gdrive」をインストールします。

Githubのgdrive-org/gdrive の、README.md内にある、「Downloads」ブロックの「gdrive-linux-x64」のリンク先URLをコピーします。

DBサーバー上で、

wget -O gdrive 先程のURL
sudo mv gdrive /usr/sbin/gdrive
sudo chmod 755 /usr/sbin/gdrive

と実行すれば、gdriveコマンドが使えるようになります。

アカウント認証

そのままでは使えないので、アカウント認証をします。

gdrive

と打つと、認証用のURLが表示されるので、コピーしてブラウザに貼り付けて認証します。

認証が終わると、認証コードがブラウザに表示されるので、コピーしてターミナルにコピペすれば認証完了です。

DBをバックアップするフォルダを作成する

既存のフォルダを使ってもできますが、今回はgdriveでフォルダを作ってそこに保存します。

gdrive mkdir db_bk

Directory 1PKTjbDgWtCgquXV8mcn_zCpvdRe created

「1PKTjbDgWtCgquXV8mcn_zCpvdRe 」が、このフォルダのfileIdなので、控えておきます。

MySQLをバックアップして、Google Driveにアップロードするスクリプトを用意する

bashスクリプトで一発で行きたいので、db_gdrive_sync.shという実行ファイルを作成します。

#!/bin/bash
# バックアップディレクトリに移動
cd /path/to/backup

# データベースのバックアップ
mysqldump -uユーザー名 -pパスワード データベース名 > db_bk.sql

# Google Driveのバックアップ用に作ったフォルダに同期する
/usr/sbin/gdrive sync upload . アップロードするフォルダのfileId --keep-local

MySQLのバックアップをGoogle Driveに同期する

やってることは、mysqldumpして、gdriveで同期しているだけです。

実行して、Google Driveにアップロードができていれば完成です。

cronに登録する

あとは、デイリーでcronでdb_gdrive_sync.shを実行すればいいだけなので、cronに登録します。

1 5 * * * /bin/bash /path/to/db_gdrive_sync.sh

上記の例では、毎日5時1分に実行するようにしています。

bashの場所はOSによって違うので、

which bash

で出てきたパスを記述します。


MySQLデータベースの日次自動バックアップがの仕組みができました。

やりたかったことの「バージョニング」ですが、Google Driveが勝手にやってくれます。

調べたところ、バージョニングしても使用容量は消費しないようです。

ファイルに複数の版がある場合、すべてが容量にカウントされますか?

オンラインではファイルの複数の版を利用できますが、パソコンでは最新版のみ利用できます。オンラインの版は、保存容量にはカウントされません。ただし、古い版を保持することを明示的に選択した場合はカウントされます。 ドライブに関するよくある質問(管理者向け)

無料でバージョニングもできて、やりたいことが出来ました!

: