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が勝手にやってくれます。
調べたところ、バージョニングしても使用容量は消費しないようです。
ファイルに複数の版がある場合、すべてが容量にカウントされますか?
オンラインではファイルの複数の版を利用できますが、パソコンでは最新版のみ利用できます。オンラインの版は、保存容量にはカウントされません。ただし、古い版を保持することを明示的に選択した場合はカウントされます。 ドライブに関するよくある質問(管理者向け)
無料でバージョニングもできて、やりたいことが出来ました!
新着ノート
-
Gitlabの2段階認証下でコンテナレジストリにPushする方法
gitlab
公開日:2020年12月23日
-
HUGO
公開日:2020年4月27日
新着コード
-
cURLでCloudflare APIでキャッシュを削除する
cloudflare
公開日:2020年5月1日
-
iOS Safariでselectを含む要素にoverflow-y:scrollすると横にスクロールする時の対応
iOS
公開日:2020年4月15日