码迷,mamicode.com
首页 > 数据库 > 详细

数据库异地备份(脚本)

时间:2020-01-21 21:36:02      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:备份   crontab   语法   inetd   指定   模块名   col   image   read   

一:前期准备

至少需要两台主机

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             #不需要密码直接连接

技术图片

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      #结束
技术图片

 

 

3.设置执行计划任务

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

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

 

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

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

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

技术图片

 

 

 

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

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

技术图片

 

 

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   

技术图片

 

 

 

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

数据库异地备份(脚本)

标签:备份   crontab   语法   inetd   指定   模块名   col   image   read   

原文地址:https://www.cnblogs.com/lixaingyang/p/12222851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!