方案背景:A服务器和B服务器之间(可1对1,也可多对多,在此以简单的1对1举例)需要数据同步,此方案常用于远程灾备。
成都创新互联拥有网站维护技术和项目管理团队,建立的售前、实施和售后服务体系,为客户提供定制化的网站设计制作、网站设计、网站维护、服务器托管解决方案。为客户网站安全和日常运维提供整体管家式外包优质服务。我们的网站维护服务覆盖集团企业、上市公司、外企网站、成都做商城网站、政府网站等各类型客户群体,为全球近1000家企业提供全方位网站维护、服务器维护解决方案。
同步方案根据应用场景大约有两种,定时同步和实时同步。定时同步具有同步时间固定、实时性差、消耗资源较小的特点;实时同步具有实时性强、同步密集、较耗资源等特点。
1、安装软件:
yum install rsync -y
2、免密登录(也可使用明文采用模拟交互式登录方式,但是从安全角度出发还是建议使用免密登录):
ssh-keygen -t rsa
生成后可以进入目录cd ~/.ssh/ 把生成的密钥~/.ssh/id_rsa.pub内容复制到远程主机的/root/.ssh/authorized_keys中
在这里很多同学对以上的操作为什么就不用输入密码的问题感到好奇,了解免密登录的同学可以跳过这段介绍。这里介绍下免密登录的原理:
rsa又称非对称密钥算法,对应的是对称密钥算法。
所谓对称密钥算法就是A和B通信,为了双方能确认对方的身份,A和B约定一个双方都知道的密钥k来确定身份如下:
A => (mk) B A发送m明文和K密钥跟B,B确认K密钥和之前A约定的一样,就能确定A的身份是真实的。反之B到A的通信也是如此。
非对称加密需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。
所以以上的操作把A服务器的公钥共享跟了B服务器(远程主机),所以A服务器登录B服务器就不再需要传统的交互式输入密码登录,B服务器能通过A服务器的公钥而确认A服务器的真实性(私钥)。
[root@localhost ~]# cd ~/.ssh/
[root@localhost .ssh]# ls
id_rsa id_rsa.pub known_hosts
3、编写shell脚本
[root@localhost ~]# vim back.sh
#!/bin/sh
rsync -avz -e 'ssh -p 22' root@x.x.x.x:/XXX/pub /data/
注意:rsync的数据同步分为拉和推两种不同的动作,在编写脚本之前,一定要测试命令是否能正常执行。
4、crontab定时执行配置(每天3点执行脚本)
到此,定时同步就配置好了。
Linux 数据同步方案Linux 数据同步方案
Inotify简介
Inotify 是一个 Linux特性,从版本2.6.13开始提供,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。
开始配置Inotify
注:在开始之前需要在服务器A和B上都安装好rsync。
1、在服务器B上调整inotify内核参数,vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
2、使调整inotify内核参数立刻生效
sysctl -p
3、安装Inotify-Tool工具
# 先安装扩展包源,否则inotify-tools找不到
yum install epel-release
yum install inotify-tools
4、打开两个终端,一个终端执行创建删除等操作,另一个执行Inotify-Tool工具,测试Inotify-Tool工具时候正常
inotifywait -mrq -e modify,create,move,delete /var/www/
inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果
5、编写脚本
vim /root/tongbu.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /root/cs"
RSYNC_CMD="rsync -avz -e 'ssh -p 22' /root/cs/ root@x.x.x.x:/root/cs/ "
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
注:这里要特别注意,逻辑关系不要搞混了,是B服务器推送跟A服务器。
6、添加开机自动后台自动运行,编辑/etc/profile文件,在最后一行加入下面语句
/bin/bash /root/tongbu.sh &
到此定时同步和实时同步都讲解完毕。根据不同的场景应用不同的方案,需要灵活应对,特别要注意一点的是。实时同步的方案,监控目录千万不能设置成日志目录,不然服务器cpu飙升很有可能会宕机。
当前名称:Linux数据同步方法
URL分享:http://www.shufengxianlan.com/qtweb/news27/304727.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联