メインサーバーのデータをセカンドサーバーに自動バックアップ(MySQL編)

 

毎日午前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

 

 

カテゴリー: CentOS7 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です