sersync实时同步_dhdudj的博客-爱代码爱编程
sersync的功能:
1.支持配置文件管理
2.真正的守护进程socket
3.可以对失败文件定时重传(定时任务功能)
4.第三方的HTTP接口(例:更新cdn缓存)
5.默认多线程rsync同步
优点:
1.使用C++编写,对linux系统文件产生的临时文件和重复的文件操作会进行过滤,在结合rsync同步的时候,会减少运行时消耗的本地及网络资源,因此速度更快。
2.相比其他项目,sersync配置起来简单
3.使用多线程同步(即可以并发同步多个不同文件),尤其在同步较大文件时,能够保证多个服务器实时保持同步状态
4.Sersync自带出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每10个小时对同步失败的文件再重新同步
5.Sersync自带crontab功能,只需在xml配置文件中开启,即可按预先的配置,隔一段时间整体同步一次
6.Sersync自带socket与http的协议扩展,可以满足有特殊需求的公司二次开发。
缺点:
sersync有重传机制(内置的定时任务),但是只重传一次,如果重传失败就会清空重传队列,即清空/tmp/rsync_fail_log.sh文件。这样就会造成sersync服务恢复正常后(即可以同步文件),数据同步的两个服务器数据不一致的现象。因为,/tmp/rsync_fail_log.sh文件为空,而sersync只对发生变化的文件做实时同步(ps:sersync默认每隔十个小时做一次完整的数据同步)。
架构图:
两台linux服务器
192.168.157.10 sersync
192.168.157.20 rsync
先检查系统环境(内核要最低2.6):
uname -r
升级rsync到3.0版本:
rsync --version|head -2
rsync端:
vim /etc/rsyncd.conf
#Rsync server
uid = root
gid = root
use chroot = no # 安全相关
max connections = 2000 # 并发连接数
timeout = 600 # 超时时间(秒)
pid file =/var/run/rsyncd.pid # 指定rsync的pid目录
lock file =/var/run/rsync.lock # 指定rsync的锁文件【重要】
log file = /var/log/rsyncd.log # 指定rsync的日志目录
ignore errors
read only = false
list = false
hosts allow = 192.168.157.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file =/etc/rsync.password
#################################################
[www] # 模块
comment = www
path = /data/www/
#################################################
[bbs]
comment = bbs
path = /data/bbs/
#################################################
[blog]
comment = blog
path = /data/blog/
#rsync_config____________end
创建rsync用户并设置密码(我这里设置的是123456):
useradd rsync_backup
passwd rsync_backup
创建rsync同步密码文件,并且权限设置为600:
echo "rsync_backup:123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
启动守护进程并写入开机自启动
rsync --daemon
ss -anpt | grep rsync
vim /etc/rc.local
/usr/bin/rsync –damon
创建相关同步的目录:
mkdir -p /data/{www,bbs,blog}
查看创建目录的结构:
Tree
Sersync端:
配置rsync的密码文件:
echo “123456” > /etc/rsync.password
chmod 600 /etc/rsync.password
创建同步数据的目录:
mkdir -p /data/{www,bbs,blog}
touch /data/www/www.log /data/bbs/bbs.log /data/blog/blog.log
查看结构:
tree /data/
手动测试看是否可以传文件:
rsync -avzP /data/www/ rsync_backup@192.168.157.20::www/ --password-file=/etc/rsync.password
传送完可以在rsync端查看同步的文件:
Tree /data
部署sersync:
创建软件目录:
mkdir -p /applition/tools
cd /applition/tools
下载软件包:
wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz
可能也会下载不了,需要自行准备,如果需要可以私信我,也可以使用windows的下载工具。
解压压缩包:
tar fxz sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
cd /usr/local
mv GNU-Linux-x86 sersync
配置sersync:
先将配置文件备份:
cp sersync/confxml.xml sersync/confxml.xml.$(date +%F)
优化sersync配置文件:
修改前(第一部分):
修改后:
修改前(第二部分):
修改后:
修改前(第三部分):
修改后:
开启sersync守护进程同步数据:
配置环境变量:
echo "PATH=$PATH:/usr/local/sersync/">>/etc/profile
source /etc/profile
启动命令:
sersync2 -d -r -o /usr/local/sersync/confxml.xml
验证:
在sersync端:
touch /data/www/a.txt
在rsync端:
看是否可以看到创建的文件
tree /data