我的操作环境为mysql5.7 , centos7.4
一: 数据库的定时备份
1.创建备份文件目录
mkdir /home/dbback
2.创建备份shell脚本
cd /home/dbback
vim bkDatabaseName.sh
然后输入:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
这样可以直接将sql备份成压缩文件,节约空间
可以用:
gunzip *******.zip 命令解压出sql文件
3.添加权限并测试
chmod u+x bkDatabaseName.sh
./bkDatabaseName.sh
执行脚本,如果有文件备份的话说明一切正常,执行脚本过程中出现了 Warning: Using a password on the command line interface can be insecure,不过我的能正常备份,就没处理。
4.添加脚本到计划任务
输入crontab,如果提示找不到命令,请自行安装crontab
添加任务
crontab -e
0 2 * * * /home/dbback/bkDatabaseName.sh
这样就可以了。0 2 * * *表示每天凌晨两点钟执行一次,这个可以根据具体需求改变
tail -f /var/log/cron 这个可以看定时任务的执行记录。这样,定时备份数据库的任务就实现了。
参考文章链接地址: https://blog.csdn.net/qq_35923749/article/details/79363364
crontab 定时任务 https://www.jianshu.com/p/d93e2b177814
二:将备份的数据用rsync推到远程服务器
将这台服务器用作rsync客户端,远程服务器用作rsync服务器。
1.先配置rsync服务器(即配置要同步到的远程服务器) 【配置三个文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)】
touch /etc/rsyncd.conf #创建rsyncd.conf,这是rsync服务器的配置文件
touch /etc/rsyncd.secrets #创建rsyncd.secrets,这是用户密码文件
chmod 600 /etc/rsyncd.secrets #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!
(注意:服务器A和服务器B都要设置该权限!)
touch /etc/rsyncd.motd
-
修改rsyncd.conf文件:
vim /etc/rsyncd.conf
修改内容为:
# /etc/rsyncd: configuration file for rsync daemon mode
uid = root
gid = root
use chroot = no
max connections = 6
pid file = /var/run/rsyncd.pid
read only = no
hosts allow = 10.47.160.0/255.255.255.0
motd file = /etc/rsyncd.motd
log file = /var/log/rsync.log
log format = %t %a %m %f %b
syslog facility = local3
timeout = 600
[zzzcs]
path = /home/nbjk/upload
list=no
ignore errors
comment = This is sync upload files
auth users = root
secrets file = /etc/rsyncd.secrets
注: hosts allow中IP和子网掩码应设置为rsync客户端的真实网段数据。
path 为要备份到rsync服务端的目录
修改rsyncd.secrets密码文件:
vim /etc/rsyncd.secrets
内容改为:
root:zzzcs
启动rsync服务:
rsync --daemon
到这里rsync服务器已配置完毕。
接下来配置rsync客户端:
touch /etc/rsyncd.secrets #创建rsyncd.secrets密码文件
chmod 600 /etc/rsyncd.secrets #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!
修改rsyncd.secrets密码文件:
vim /etc/rsyncd.secrets
内容改为:
zzzcs
在rsync客户端上执行命令,将数据推送到rsync服务器
rsync -arv --password-file=/etc/rsyncd.secrets /home/nbjk/upload/* rsync://[email protected]/zzzcs
1)上述同步命令中的IP为服务器B的地址;
2)可以将该命令写入一个.sh文件,例如(rsync.sh),并用cron job定时执行,即可达到定时向外网服务器同步文件的目的;
执行命令:
crontab -e
在定时文件中写入定时执行任务,实例如下,即可实现定时同步。
0 4 * * * /home/***/***/rsync.sh 每天凌晨四点执行一次数据同步;
注意:两台服务器均要打开873/tcp、873/udp端口。另外要保证rsync服务器指定的同步到的目录要存在。
firewall-cmd --zone=public --add-port=873/tcp --permanent
firewall-cmd --zone=public --add-port=873/udp --permanent
firewall-cmd --reload
至此,mysql的数据库定时备份和定时同步到远程服务器就实现了。
参考文章链接: https://blog.csdn.net/dorantest/article/details/51788156?utm_source=blogxgwz1