定时执行rsync同步数据以及mysql备份
需求:把机器A中的附件、图片等,备份到备份机B中。将数据库进行备份
附件备份
在A中,启动rsync服务,编辑/etc/xinetd.d/rsync文件,将其中的disable=yes改为disable=no,并重启xinetd服务(需安装xinetd)
vi /etc/xinetd.d/rsync
/etc/init.d/xinetd restart
手动创建rsync的主配置文件: vi /etc/rsyncd.conf ,输入
uid=root gid=root max connections=4 log file=/var/log/rsyncd.log pid file=/var/run/rsyncd.pid lock file=/var/run/rsyncd.lock secrets file=/etc/rsyncd.passwd hosts allow=10.46.xx.xx [databak] comment= backup web path=/xx/xx/mybak read only = no exclude=test auth users=worker
(主机)创建密码文件
echo "work:abc12" > /etc/rsyncd.passwd chmod 600 /etc/rsyncd.passwd
(备份机)创建备份机密码
vi /etc/rsync_client.pwd,输入abc12 chmod 600 /etc/rsync_client.pwd
备份机创建文件/home/bakdata.sh,赋予可执行权限 chmod +x bakdata.sh 。bakdata.sh的内容为
echo '--------------------------------------------------------------' >> /home/data.log rsync -avz --progress --exclude "xxx" --password-file=/etc/rsync_client.pwd worker@10.46.1.62::data /home/bak/databak/ >> /home/data.log 2>& 1 & time=` date +%Y%m%d%H%M ` echo $time >> /home/data.log
数据库备份
备份机创建文件/home/bakmysql.sh 赋予可执行权限:chmod +x bakmysql.sh。bakmysql.sh的内容为
backupdir=/home/bak/databasebak time=` date +%Y%m%d%H%M ` /home/server/mysql/bin/mysqldump -h10.xx.x.xx -ubackup -pbackup XXXX| gzip > $backupdir/database$time.sql.gz find $backupdir -name database"*.sql.gz" -type f -mtime +30 -exec rm -rf {} \; > /dev/null 2>&1
crontab定时任务
备份机设置定时任务,vi /etc/crontab ,加入:
00 03 * * * root /home/bakmysql.sh 00 04 * * * root /home/bakdata.sh
表示每天凌晨3点进行备份数据库,4点同步data数据
问题:
1、出现 “rsync: opendir "/." (in data) failed: Permission denied (13)”
解决: 不必重启Linux: setenforce 0;但开机后会恢复,则在/etc/sysconfig/selinux 中设置 SELINUX=disabled,将它关闭