数据库异地备份(脚本)

suixinsuoyu 2020-01-09

一:前期准备

至少需要两台主机

192.168.175.200       vip

192.168.175.250       node1

做密钥否则不能拷贝过去

命令:[ ~]#cd /root/.ssh

命令:[ .ssh]#ssh-copy-id -i id_rsa.pub 192.168.175.250

测试一下,命令:[ .ssh]# ssh 192.168.175.250             #不需要密码直接连接

数据库异地备份(脚本)

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

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

2..备份脚本内容

命令:[ ~]# 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      #结束
数据库异地备份(脚本)

3.设置执行计划任务

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

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

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

命令:[ ~]# crontab -e

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

数据库异地备份(脚本)

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

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

数据库异地备份(脚本)

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

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

二:搭建rsync同步服务

1.安装rsync并查看端口号

命令:[ ~]# yum -y install xinetd rsync

命令:[ ~]# rsync --daemon

命令:[ ~]# 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.[ ~]# 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  #存放用户的密码文件,格式是用户名:密码

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

命令:[ ~]# echo "Welcome to Backup Server" > /etc/rsyncd.motd             #提示文件

命令:[ ~]# vi /etc/rsync.passwd

rsyncuser:password123

命令:[ ~]# chmod 600 /etc/rsync.passwd

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

命令:[ ~]# rsync -avz --delete /var/www/html ::wwwroot --password-file=/etc/rsync.passwd
   #rsync语法:rsync选项 用户名@备份源服务器IP::共享模块名 目标目录,新建一个文件保存好密码,然后在rsync命令中使用--password-file指定此文件即可

3.启动服务使配置生效

命令:[ ~]# rsync --daemon --config=/etc/rsyncd.conf             

命令:[ ~]# 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   

数据库异地备份(脚本)

4.设置脚本

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

命令:[ ~]# mkdir -p /data/nanyang

命令:[ ~]# cd /data/ && vim /data/nanyangto-bendi.sh

#!/bin/bash
export RSYNC_PASSWORD="password123"
rsync -avz --progress ::wwwroot  /data/nanyang/                 #通过南阳外网将数据传到本地,rsyncuser是rsync自带用户
exit

命令:[ ~]# chmod +x /data/nanyangto-bendi.sh

(2)每天删除一次旧的数据 因为打包的数据也同步过来了

命令:[ ~]# vim /data/rm-jiubao.sh

#!/bin/bash
rm -rf /data/nanyang/databak/*
命令:[ ~]# chmod +x /data/rm-jiubao.sh[ ~]# chmod +x /data/rm-jiubao.sh

5.设置分时日月周

本地服务器

命令:[ ~]# crontab -e

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

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

相关推荐