2012年10月31日水曜日

バックアップサーバーを構築

バックアップサーバーの概要

  • 本体のサーバーからレプリケーションをする(mysql)
  • 毎日1回ダンプする
  • ダンプファイルはzipに変換し一週間分貯め古いモノから削除
  • autosshで切れても自動で接続する
  • サーバーが止まっても起動時にトンネルを自動で掘る
  • サーバーはubuntu1(マスター)とubuntu2(スレーブ)とする(両方VPSで違うサーバー)
1、sshの設定

スレーブ側からマスターへログイン出来るようにする
http://www.oiax.jp/rails3book/public_key.html(ssh公開鍵の設置方法)
スレーブ側からマスターへトンネルを貼る
autossh -M 10002 -f -N -L 23306:マスターIP:3306 ログインユーザー@マスターIP
(autosshは接続が切れた場合自動でつなげてくれるもの)
mysql -h 0.0.0.0 -P 23306 -u root(マスターのmysqlにログイン)
エラー発生
Lost connection to MySQL server at 'reading initial communication packet', system error: 0
my.confに以下を記入
bind-address            = 0.0.0.0

2,レプリケーションの設定(マスター)

my.confの設定
vi /etc/mysql/my.cnf
server-id = 1
log-bin = mysql-bin
replユーザーの作成
GRANT REPLICATION SLAVE ON *.* TO repl@% IDENTIFIED BY '';
テーブルをロックして実行
>FLUSH TABLES WITH READ LOCK;
>SHOW MASTER STATUS;
+-----------------------+----------+------------------+----------------------+
 | File                             | Position| Binlog_Do_DB| Binlog_Ignore_DB |
+-----------------------+----------+------------------+----------------------+
 | mysql-bin.000003 |      256   |                             |                                   |
+-----------------------+----------+------------------+----------------------+
1 row in set (0.00 sec)
テーブルロック解除
UNLOCK TABLES;

3,レプリケーションの設定(スレーブ)

my.confの設定
vi /etc/mysql/my.cnf
server-id = 2(マスターと違う数字)
log-bin = mysql-bin
レプリケーション先指定
CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_PORT=23306,
MASTER_USER='repl',
MASTER_PASSWORD='',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=256;
先ほどのステータスで確認したファイルとポジションを記入
レプリケーションのステータス確認
SHOW SLAVE STATUS\G
ここが
Slave_IO_RunningがYes
Slave_SQL_RunningがYes
となればOK
レプリケーションの開始
START SLAVE;
何か一つ増やして中身をお互い確認し変更が同じであればOK

4,システム起動時にトンネルを掘る

/etc/rc.localに追記すればシステムが起動した際に実行してくれる
先ほどのautosshのコマンドをフルパスで、他ユーザーを指定するならば
sudo -u ユーザー名を追加

5,cronスクリプトでダンプを行う設定


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#MAILTO=root
MAILTO=""
HOME=/

# run-parts
0 4 * * * root/シェルファイル名.sh

上から5行を追加することでメールを送る必要がなくなる。
(最初にpostfixがインストールされていない為に実行されなかったので追記)
この内容であれば毎日午前4時にシェルが実行される

6、実行シェルの記述
以下を参考に。
http://d.hatena.ne.jp/alexam/20120609/1339228291

以上。結構こういうの頻繁に使いそうな予感・・・

0 件のコメント:

コメントを投稿