Jun 25th, 2012

setup to dumper.io for wordpress

dumper.ioの紹介

概要

dumper.io

@kenn さん謹製のデータベースをバックアップするサービス dumper.io がつい先日始まりました。 設定は必要ですが、毎日自動でバックアップを実行してくれるという時流に乗ったサービスです。

現時点ではRailsアプリ向けがメインという事もあり、 Rails以外で利用する場合には以下のような制約が付きますので注意してください。

  • database server の binding を変更出来る事(おそらく必須)
  • iptables 等のファイアウォールについて知識がある事(必須)
  • DB用ユーザを別途作成できる事(必須ではないが激しく推奨)

上記制限から基本的に専用サーバもしくはそれに準じるサーバ(例:VPSなど)でのみ有効ですが、以下の単位で保持してくれます。

  • today
    当日分のバックアップ
  • this week
    今週のバックアップ(最初にとったバックアップを起点とした曜日のバックアップ)
  • last week
    先週のバックアップ(同上)
  • manual
    マニュアルで実施したバックアップ

料金設定はその日のストレージ容量及びダウンロード毎に課金される仕組みになっています。
バックアップするサイト単位での課金はありませんので、小さいサイトを複数設定するとよりお得になる仕組みです。

今回は mysql server に限定して Wordpress のようなRailsアプリ以外での使用方法を紹介します。

アカウント作成

特に書くべきこともないので省略しますが、アカウントを作成するとボーナスとして $1 がクレジットに追加されます。 これはblogのようなバックアップであれば、100日は有効なクレジットですので、その間に有効かどうかを見極められます。

ターゲットサーバ追加

Railsアプリ用にはgemが用意されていますが、それ以外のアプリの場合には自分でセットアップする必要があります。 Serversをクリックして、Your non-Rails servers の下にある Add a new database をクリック → MySQL を選択します。

1st step.

Firewall 設定

dumper.ioは直接mysqlサーバに接続して、バックアップを取る仕組みなので、 接続を許可する必要がありますが、そのためには iptables などのファイアウォール機構を有効にすることは必須となります。

サイトの設定ウィザード途中にも書いてありますが、debian/ubuntuで利用可能な iptables フロントエンドの ufw であれば次のようなコマンドでポートを開けることができます。 mysqlサーバのポートを変更している場合には適宜変更してください。

$ sudo ufw allow from `dig +short dumper.io` to any proto tcp port 3306 

上記コマンドは dumper.ioから3306/tcp (デフォルトの場合)を接続を有効にする という内容になります。 上記の結果、status表示が以下のような表示になればOKです。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
Apache                     ALLOW       Anywhere
Apache Secure              ALLOW       Anywhere
OpenSSH                    LIMIT       Anywhere
3306/tcp                   ALLOW       49.212.144.32

CentOSなどでは別途以下のように iptables を直接設定し sudo service iptables save などと入力し保存し sudo service iptables restart として再起動してください。

$ iptables -A INPUT -s 49.212.144.32 -p tcp --dport 3306 -j ACCEPT

MySQL Binding 設定

mysqlのデフォルトの設定では ローカルホストにしか binding しないため、これを変更する必要があります。

$ sudo netstat -lnt | grep 3306
tcp        0      0 127.0.0.1:3306            0.0.0.0:*               LISTEN

とコマンドを打った場合に上記のように 127.0.0.1 と出ている場合には /etc/mysql/my.cnf を(一例として)以下のように(例ではコメントアウト)変更する必要があります。

#bind-address = 127.0.0.1

この設定変更後には mysql サーバを再起動する必要が出てきますが、その際にファイアウォールの設定が有効であることを必ず確認してください。 そして mysql 再起動の結果以下のようになることを確認してください。

$ sudo netstat -lnt | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

ここまで作業ができたらStep1の入力が行えるようになるので、ホスト名とポート番号を入れて continue をクリックしてください。 エラーが出ているようでしたら、もう一度設定を確認してください。

2nd step.

データベース接続可能なユーザ名とパスワード

ここで利用するパスワードについてサイトに以下のように説明されています。

パスワードはデータベースサーバに接続するために、暗号化はされているが復元可能な生のパスワードが必要であることに注意してください。

mysqlにユーザを別途作成出来る場合には以下のように作成しておくことで、セキュリティリスクが軽減します。 サーバの設定の都合上ユーザを作成出来ない場合には、以下の作業を飛ばして、普段使っているmysqlユーザ名を入れる事で対応可能ですが、あまりおすすめはできません。

$ mysql -u root -p
mysql> GRANT SELECT, PROCESS, REPLICATION CLIENT, LOCK TABLES, RELOAD ON *.* TO 'your_user'@'%' IDENTIFIED BY 'your_password';

それぞれのオプションの意味は以下の通りです。

  • SELECT is required to make a backup of your data. If you're using only InnoDB and takes simple backup this is the only mandatory privilege.
  • PROCESS is required to check internals of the database. We'll add some "doctor" feature in the future.
  • REPLICATION CLIENT is required for the --master-data option. If you have or plan to have a replication setup, make sure this is enabled.
  • LOCK TABLES is required for MyISAM to take a consistent backup with FLUSH TABLES WITH READ LOCK.
  • RELOAD is required for MyISAM to take a consistent backup with FLUSH TABLES WITH READ LOCK.

よって、 InnoDB のみを利用している場合には、

mysql> GRANT SELECT ON *.* TO 'your_user'@'%' IDENTIFIED BY 'your_password';

だけでも可能です。 将来的なアップデートで、内部チェックが実装された場合には、PROCESSを追加すると良いかもしれません。

3rd step.

バックアップを取得したいデータベース名を入力すると設定は終わりとなります。
お疲れ様でした。

これで、指定したデータベースについて、指定した時間に毎日 Amazon S3 に保存されていくこととなります。
他にまだデータベースがあるようでしたら、上記ステップを繰り返すこととなりますが、(書くまでもないですが)同じサーバ内であれば、 Step3までサーバ上での作業は必要ありません。

その後は?

実際にバックアップが取れるかどうか、 manual backup を一度実行してみるといいかもしれません。

Servers → Database選択 → Take a manual backup now をクリックすることでバックアップジョブのキューに乗りますので、しばらくたってから確認してください。そしてバックアップがとれているかどうか Download をクリックすることでその時点でのバックアップをダウンロードすることが出来ます。

また、自動で1日1回取得する時間帯を Schedule から設定変更することも可能なので、適宜変更すると良いでしょう。

良きバックアップライフを

2012/06/28 06:13 誤字脱字修正。
2012/06/28 18:25 コマンドをミスっていたので修正。
2012/06/29 14:50 見栄え訂正と画像の追加。
2013/01/25 01:43 ufw コマンドミスの訂正