毎日午前2時にメインサーバーのtestデータベースをサーバー内でバックアップを取り、2時15分にこのバックアップデータをネットワーク内のセカンドサーバーにrsyncでコピーし、さらに2時30分にバックアップデータからセカンドサーバーのtestデータベースに復元する。
例:
メインサーバーIPアドレス:192.168.1.100
セカンドサーバーIPアドレス:192.168.1.200
バックアップするデータ:
/var/lib/mysql/test
●準備
メインサーバーに内部ネットワークからrootでSSHログイン出来るように設定しておく。
1.メインサーバーの設定
●MySQLデータを自動バックアップ
バックアップするデータベース名:test
バックアップ先ディレクトリ:/root/sqlbackup/
バックアップ先ディレクトリを作成
# mkdir sqlbackup
データベースの自動バックアップスクリプト作成
[root@server1 ~]# vi testdump.sh
#! /bin/sh
mysqldump test -u root -pパスワード –default-character-set=binary > /root/sqlbackup/testdump.sql
バックアップスクリプトに実行権限付与
# chmod 700 testdump.sh
バックアップスクリプト実行
# ./testdump.sh
バックアップの確認
# ls sqlbackup
testdump.sqlがあればOK
バックアップスクリプトをcron.dに登録して、毎日午前2時に自動実行
# echo “0 2 * * * root /root/testdump.sh” > /etc/cron.d/testdump
2.セカンドサーバーの設定
rsyncをインストール。
# yum install rsync
鍵の作成
# ssh-keygen -t rsa
空エンター×3回で終了
公開鍵をメインサーバーにコピー
# scp /root/.ssh/id_rsa.pub root@192.168.1.100:/root/
root@192.168.1.100’s password: → rootのpassword入力
3.メインサーバーの設定
.sshディレクトリを作成し、コピーされたid_rsa.pubをauthorized_keysにリネーム
# mkdir .ssh
# cat id_rsa.pub >> /root/.ssh/authorized_keys
authorized_keysのパーミッションの変更
# chmod 600 /root/.ssh/authorized_keys
以上でrsyncの設定完了。
4.セカンドサーバーの設定
●メインサーバーのtestdump.sqlをセカンドサーバーに自動コピー
コピー先ディレクトリ作成
# mkdir sqlbackup
自動コピースクリプト作成
# vi testcopy.sh
#! /bin/sh
RSYNC=’rsync -avz -e ssh –delete’
$RSYNC 192.168.100.100:/root/sqlbackup/testdump.sql /root/sqlbackup/testdump.sql
自動コピースクリプトに実行権限付与
# chmod +x testcopy.sh
自動コピースクリプト実行テスト
# ./testcopy.sh
/root/sqlbackup/にtestdump.sqlがあればOK
自動コピースクリプト自動実行化(毎日午前2時15分に実行)
# echo “15 2 * * * root /root/testcopy.sh” > /etc/cron.d/testcopy
●コピーしたバックアップデータをMySQLに自動復元
自動復元スクリプト作成
# vi restore.sh
#! /bin/bash
mysql -u root -pパスワード test –default-character-set=binary < /root/sqlbackup/testdump.sql
自動復元スクリプトに実行権限付与
# chmod +x restore.sh
自動復元スクリプト実行テスト
# ./restore.sh
mysqlコマンド等を使って、コピーしたメインサーバーのMySQLデータがセカンドサーバーのMySQLに復元されているか確認
復元スクリプト自動実行化
# echo “30 2 * * * root /root/restore.sh” > /etc/cron.d/restore