本文介绍: 在本地化部署的过程中,为了使系统相对来说高可用,一般情况下,我们都会做一个负载,但是客户又会考虑成本,所以只有可怜巴巴的两台服务器,要全部服务都做负载,这个就实现不了。所以只能把两台服务器的环境都部署成一样,然后每天把数据库备份的数据同步一次到另外一台服务器上。
1.需求
在本地化部署的过程中,为了使系统相对来说高可用,一般情况下,我们都会做一个负载,但是客户又会考虑成本,所以只有可怜巴巴的两台服务器,要全部服务都做负载,这个就实现不了。所以只能把两台服务器的环境都部署成一样,然后每天把数据库备份的数据同步一次到另外一台服务器上。
2.同步脚本
同时这边分为两种方式登陆,一种是使用用户名和密码,另外一种是使用密钥登陆。
3.编写脚本
vi bf.sh
#!/bin/bash
echo '##########################################'
echo '###### 每天凌晨03:00 自动备份传送数据 ######'
echo '##########################################'
# 设置环境变量
DATE=$(date +%Y%m%d)
echo '获取系统日期:' $DATE
/opt/sshpass-1.05/sshpass -p '12345678' scp /datadrive/DB/bak/mgcr_$DATE.sql.gz root@172.22.0.77:/datadrive/DB/bak/zfwbak
echo '备份完成'
赋予可执行文件:
chmod +x bf.sh
4.加入定时任务中,让其每天执行
crontab -e
00 3 * * * sh /datadrive/script/bf.sh &>/dev/null 2>&1
如果发生了错误,可以把日志输到特定的文件,进行查看。如下面命令:
00 3 * * * sh /datadrive/script/bf.sh &>/tmp/bf.log 2>&1
>/dev/null 2>&1 的意思:
标准输出重定向到空设备文件,也就是不输出任何信息到终端,标准错误输出重定向等同于标准输出,
因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
如果命令执行比较频繁(如每分钟一次),或者命令输出内容较多,会使这个邮件文件不断追加内容,
文件越来越大。而邮件文件一般存放在根分区,根分区一般相对较小,所以会造成根分区写满而无法
登录服务器。
4.1.异常情况
注意:如果不把输出日志置空,就会调用邮件,这个时候就会报邮件的错误信息。
MAIL (mailed 68 bytes of output but got status 0x004b#012
4.2.sshpass报错Host key verification failed
解决方法:
由于该远程机器从未连接过,所以就会报这个错误,首次使用,需要手工连接一下。
ssh -p 22 -o StrictHostKeyChecking=no root@192.168.1.10
原文地址:https://blog.csdn.net/u011442726/article/details/133885511
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_25338.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。