一:前期准备

至少需要两台主机

192.168.175.200       vip
192.168.175.250       node1

做密钥否则不能拷贝过去

命令:[root@vip ~]#cd /root/.ssh
命令:[root@vip ~]#ssh-keygen
或[root@vip ~]#ssh-keygen -t rsa -b 2048 -N '' -f key
#
命令:[root@vip .ssh]#ssh-copy-id -i id_rsa.pub 192.168.175.250
测试一下,命令:[root@vip .ssh]# ssh 192.168.175.250             #不需要密码直接连接

异机备份mysql 异机备份脚本_vim

1.另一台主机最好提前创建一个数据存放地

命令:[root@node1 ~]# mkdir -p /data/rsyncdata/databak/

 

2..备份脚本内容

命令:[root@vip ~]# vim databak.sh
#!/bin/bash
date=$(date +%Y%m%d%H%M%S)              #设置时间变量,括号内是设置时间的格式
mysqldump -uroot -p'123456' -A > /root/$date-192.168.175.200.sql                                          
#MySQL所有数据导出复制到/root/$date-192.168.175.200.sql文件中
#注意:yum安装最好是用命令mysqldump的绝对路径而用tar包安装,可以不用
if [ $? -eq 0 ];then      #判断上次执行命令是否正确,正确为0,不正确非0
echo "数据备份完成"       #正确执行,输出结果
scp /root/$date-192.168.175.200.sql 192.168.175.250:/data/rsyncdata/databak/
#将导出的文件远程复制到192.168.175.250主机上的/data/rsyncdata/databak/文件中
sleep  4    #睡眠4秒
echo "远程备份完成"      #输出结果
rm -rf /root/$date-192.168.175.200.sql       #删除本地主机导出的数据
fi      #结束

异机备份mysql 异机备份脚本_异机备份mysql_02

 

 

3.设置执行计划任务

(1)先将脚本加执行权限(x)

命令:[root@vip ~]# chmod +x databak.sh

 

(2)周期性任务要用的命令是crontab,那么这里有个选项-e(edit)表示编辑输入

命令:[root@vip ~]# crontab -e

0 * * * * sh /root/databak.sh             #分时日月周的顺序,这是每小时执行一次脚本

异机备份mysql 异机备份脚本_数据_03

 

 

 

(3)编写完这个计划任务以后,还是要检查一下这个任务是否在启动

命令:[root@vip ~]# ps -le | grep cron

异机备份mysql 异机备份脚本_bash_04

 

 

S表示确实是启动的,如果没有启动可以输入命令:/etc/rc.d/init.d/cron start就可以了

远程复制数据库就已经搭建好了,接下来在192.168.175.250上需要搭建rsync同步服务然后通过防火墙映射出去

 

二:搭建rsync同步服务

1.安装rsync并查看端口号

命令:[root@vip ~]# yum -y install xinetd rsync
命令:[root@vip ~]# rsync --daemon
命令:[root@vip ~]# netstat -antup | grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2897/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      2897/rsync

     

2.[root@vip ~]# vim /etc/rsyncd.conf

uid = root     #运行进程的身份
gid = root     #运行进程的组
address =192.168.1.64      #监听IP是南阳IP
port=873        #监听端口
hosts allow=192.168.0.0/24        #允许同步客户端的IP地址,可以是网段,或者用*表示所有192.168.1.0/24或192.168.1.0/255.255.255.0
use chroot = yes       #是否囚牢,锁定家目录,rsync被黑之后,黑客无法再rsync运行的家目录之外创建文件,选项设置为yes
max connections=5     #最大连接数
pid file =/var/run/rsyncd.pid     #进程PID,自动生成
lock file =/var/run/rsync.lock       #指max connectios参数的锁文件
log file =/var/log/rsyncd.log    #日志文件位置
motd file =/etc/rsyncd.motd
#客户端登陆之后弹出的消息,需要创建[wwwroot] #共享模块名称
path =/web-back/ #路径
comment=used for web-data root  #描述
readonly=false  #设置服务端文件读写权限
list=yes  #是否允许查看模块信息
auth users=rsyncuser  #备份的用户,和系统用户无关
secrets file=/etc/rsync.passwd  #存放用户的密码文件,格式是用户名:密码

创建客户端弹出消息文件和用户密码

命令:[root@vip ~]# echo "Welcome to Backup Server" > /etc/rsyncd.motd             #提示文件
命令:[root@vip ~]# vi /etc/rsync.passwd
rsyncuser:password123
命令:[root@vip ~]# chmod 600 /etc/rsync.passwd

测试说明:格式(不需要操作)

命令:[root@vip ~]# rsync -avz --delete /var/www/html rsyncuser@192.168.1.64::wwwroot --password-file=/etc/rsync.passwd


   #rsync语法:rsync选项 用户名@备份源服务器IP::共享模块名 目标目录,新建一个文件保存好密码,然后在rsync命令中使用--password-file指定此文件即可

 

3.启动服务使配置生效

命令:[root@vip ~]# rsync --daemon --config=/etc/rsyncd.conf              
命令:[root@vip ~]# netstat -antup | grep :873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2897/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      2897/rsync

异机备份mysql 异机备份脚本_异机备份mysql_05

 

 

 

4.设置脚本

(1)南阳数据到本地执行脚本

命令:[root@vip ~]# mkdir -p /data/nanyang
命令:[root@vip ~]# cd /data/ && vim /data/nanyangto-bendi.sh
#!/bin/bash
export RSYNC_PASSWORD="password123"
rsync -avz --progress rsyncuser@111.6.79.22::wwwroot  /data/nanyang/                 #通过南阳外网将数据传到本地,rsyncuser是rsync自带用户
exit命令:[root@vip ~]# chmod +x /data/nanyangto-bendi.sh
 
(2)每天删除一次旧的数据 因为打包的数据也同步过来了
命令:[root@vip ~]# vim /data/rm-jiubao.sh
#!/bin/bash
rm -rf /data/nanyang/databak/*
命令:[root@vip ~]# chmod +x /data/rm-jiubao.sh[root@vip ~]# chmod +x /data/rm-jiubao.sh

 

5.设置分时日月周

本地服务器

命令:[root@vip ~]# crontab -e
0 * * * * sh /root/databak.sh
*/2 * * * * sh /data/nanyangto-bendi.sh
1 0 * * * sh /data/rm-jiubao.sh
命令:[root@vip ~]# crontab -l

 

总结:。。。。。。。。。。。。。此处省略一万字