近几个月,依次遗失5个网址数据信息和网站模板程序流程,大多数是因为VPS硬盘损坏导致,RAID10为了更好地速率是很不商业保险的。近期的2次分别是DirectSpace和BuyVM,因此,必不可少备份数据,做好VPS随时随地提前准备遗失数据信息的提前准备。
昨日花了一整天,把现阶段全部的站干了每日同歩,下列共享给大伙儿操作过程方式。在网上有关rsync的材料也许多,但大部分我觉得会把你看看晕的,下列我就用案例来解读,关键的地区我能详细描述,期待让大伙儿都是会用。
下列,假定网址所属的VPS为A,存储备份的VPS为B,系统软件均为CentOS。
备份数据方式为 B 按时向 A 拉数据信息来备份数据
一、VPS A 上边的实际布署
1. 安裝 rsync
yum -y install rsync
把rsync添加开机运行
echo ‘rsync –daemon’ >> /etc/rc.d/rc.local
2. 设定rsync登陆密码
echo ‘你的登录名:你的登陆密码’ > /etc/rsyncd.scrt
chmod 600 /etc/rsyncd.scrt
这儿的账户密码,在VPS B上把会使用
3. 配备rsync
vim /etc/rsyncd.conf
放进以下几点, #后边就是我的注解
免费下载:rsyncd.conf
uid = root
gid = root
use chroot = no
read only = yes
max connections = 10
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
#log file = /var/log/rsync.log # 偶不愿纪录log
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[www]
path = /var/www/
comment = AAA.com
ignore errors
read only = yes
list = no
auth users = andy
secrets file = /etc/rsyncd.scrt
#exclude = AAA.com/blog/cache/ #不用备份数据的文件目录,我应用exclude from方式来清除
exclude from = /etc/rsync_exclude.txt
hosts allow = 备份数据网络服务器的IP
hosts deny = *
4. 清除不备份数据的文件目录
vim /etc/rsync_exclude.txt
键入不备份数据的文件目录,每排一个,不能用相对路径,而务必用上边环境变量中path的绝对路径,如
AAA.com/blog/cache/
AAA.com/manual/
这一清除文档有更高等级的 -书写,大家不用,简易足够就行,用 exclude from 方式,益处取决于随时随地要加上不用备份数据的信息时,便捷加上,且不用重新启动rsync过程
5. 制做一个重新启动rsync的脚本制作
vim /root/rsyncd_restart.sh
放进以下几点
kill -9 `cat /var/run/rsyncd.pid`
rm -f /var/run/rsyncd.pid
rm -f /var/run/rsyncd.lock
rsync –daemon
chmod 600 /root/rsyncd_restart.sh
chmod x /root/rsyncd_restart.sh
如今立即用 /root/rsyncd_restart.sh 来重启 rsync 过程
6. 备份数据 MySQL 的脚本制作
此脚本可与此同时备份数据好几个数据库查询,并开展gzip压缩,按日期文件目录储存,3天以前的备份数据将被全自动删掉
vim /root/mysql_backup.sh
免费下载: mysql_backup.sh
#!/bin/bash
# 下列配备信息内容请自身改动
mysql_user=”USER” #MySQL备份数据客户
mysql_password=”PASSWORD” #MySQL备份数据客户的登陆密码
mysql_host=”localhost”
mysql_port=”3306″
mysql_charset=”utf8″ #MySQL编号
backup_db_arr=(“db1” “db2″) #要备份数据的数据库查询名字,好几个用空格符分离分隔 如(”db1” “db2” “db3″)
backup_location=/var/www/mysql #备份资料储放部位,结尾请不要带“/”,该项可以维持默认设置,程序流程会全自动创建文件夹
expire_backup_delete=”ON” #是不是打开到期备份数据删掉 ON为打开 OFF为关掉
expire_days=3 #到期時间日数 默认设置为三天,该项仅有在expire_backup_delete打开时合理
# 行内逐渐下列不用改动
backup_time=`date %Y%m%d%H%M` #界定备份数据详尽時间
backup_Ymd=`date %Y-%m-%d` #界定备份数据文件目录中的年月日時间
backup_3ago=`date -d ‘3 days ago’ %Y-%m-%d` #3天以前的日期
backup_dir=$backup_location/$backup_Ymd #备份数据夹全途径
welcome_msg=”Welcome to use MySQL backup tools!” #欢迎标语
# 分辨MYSQL是不是运行,mysql沒有运行则备份数据撤出
mysql_ps=`ps -ef |grep mysql |wc -l`
mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`
if [[$mysql_ps == 0] -o [$mysql_listen == 0]]; then
echo “ERROR:MySQL is not running! backup stop!”
exit
else
echo $welcome_msg
fi
# 联接到mysql数据库,无法连接则备份数据撤出
mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password <
use mysql;
select host,user from user where user=’root’ and host=’localhost’;
exit
end
flag=`echo $?`
if [ $flag != “0”]; then
echo “ERROR:Can’t connect mysql server! backup stop!”
exit
else
echo “MySQL connect ok! Please wait.。。。。。”
# 分辨是否有界定备份数据的数据库查询,假如界定则逐渐备份数据,不然撤出备份数据
if [“backup_db_arr”!= “” ]then
#dbnames=$(cut -d ‘,’ -f1-5 $backup_database)
#echo “arr is (${backup_db_arr[@]})”
for dbname in ${backup_db_arr[@]}
do
echo “database $dbname backup start.。。”
`mkdir -p $backup_dir`
`mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname –default-character-set=$mysql_charset | gzip 》 $backup_dir/$dbname-$backup_time.sql.gz`
flag=`echo $?`
if [ $flag == “0”];then
echo “database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz”
else
echo “database $dbname backup fail!”
fi
done
else
echo “ERROR:No database to backup! backup stop”
exit
fi
# 假如打开了删掉到期备份数据,则开展删掉实际操作
if [“$expire_backup_delete” == “ON” -a “$backup_location”!= “” ]then
`find $backup_location/ -type d -o -type f -ctime $expire_days -exec rm -rf {} ;`
echo “Expired backup data delete complete!”
fi
echo “All database backup success! Think you!”
exit
fi
chmod 600 /root/mysql_backup.sh
chmod x /root/mysql_backup.sh
好啦,添加 crontab 每日00:00按时一键备份
00 00 * * * /root/mysql_backup.sh
至此,网址所属VPS A上的布署早已都完成了!下面在备份数据VPS B上开展设定来拉备份数据。
二、VPS B 上边的实际布署
1. 安裝 rsync
yum -y install rsync
这儿不用添加开机运行了,由于是手机客户端,并不是服务器端
2. 设定rsync登陆密码
echo ‘你在A上放置的登陆密码’> /etc/rsync.pass
chmod 400 /etc/rsync.pass
3. 测试一下同歩
先建个存储备份的地区
mkdir -p /var/rsync/
测试一下同歩
rsync -avzP –delete –password-file=/etc/rsync.pass [email protected]/* */::www /var/rsync/AAA.com/
这条指令,我表明一下好多个关键点
-avzP是什么,自身检索我网站内部详细介绍
–delete 是为了更好地例如A上删除了一个文档,同歩的情况下,B会自行删掉那一个文档
–password-file 刚刚VPS B中 /etc/rsync.pass 设定那一个登陆密码,要和VPS A的 /etc/rsyncd.scrt 中的密码一样,那样cron运作的情况下,就不用登陆密码了
这条指令中的“登录名”为VPS A的 /etc/rsyncd.scrt 中的用户名
这条指令中的 192.168.0.100 为VPS A的IP地址
::www,留意是2个 : 号,www为VPS A的环境变量 /etc/rsyncd.conf 中的[www],意思是依据A上的/etc/rsyncd.conf来同歩在其中的[www]段內容,一个 : 号的情况下,用以不依据环境变量,立即同歩特定文件目录
4. 添加crontab每日00:30同歩
30 00 * * * rsync -avzP –delete –password-file=/etc/rsync.pass [email protected]/* */::www /var/rsync/AAA.com/ > /dev/null 2>&1
OK!至此做好了!不害怕丢数据信息了,每天一键备份!
假如还需要再保险一点,加上个VPS C。
C来同歩B,双向备份数据,哪一个挂掉都不害怕!