使用sersync实现数据实时同步

news2024/9/29 5:33:02

使用sersync实现数据实时同步

    • sersync诞生过程
    • 部署前提
    • 配置rsync
    • 部署sersync
      • 配置sersync的path变量
    • 修改sersync配置文件
    • sersync常用参数
    • 使用服务文件实现开机自启动
    • 实时同步服务debug

sersync诞生过程

sersync作者:前金山公司周洋(花椒直播)
数据实时同步 (inotify+rsync 脚本) —> 开发实时同步程序(inotify+rsync)

原理:https://www.bilibili.com/video/BV1TK411B7hU

代码仓库:https://code.google.com/archive/p/sersync/source/default/source

项目地址:https://github.com/wsgzao/sersync

项目下载地址:https://code.google.com/archive/p/sersync/downloads

参考:https://blog.csdn.net/m0_46095955/article/details/104032057

  1. sersync是使用c++编写,而且对Linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
  2. sersync配置起来很简单,其中已经静态编译好2进制文件和xml配置文件,直接使用即可。
  3. sersync使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
  4. sersync有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。
  5. sersync不仅可以实时同步,另外还自带crontab功能,只需在xml配置文件中开启,即可按需求隔一段时间整体同步一次。无需再额外配置crontab功能。
  6. sersyncsockethttp插件扩展,满足二次开发的需要。

部署前提

  • 已安装inotify-tools
  • rsync为守护进程模式或已配置ssh免密
# 安装inotify-tools
yum install -y inotify-tools

# 安装rsync
yum install -y rsync

配置rsync

https://blog.csdn.net/omaidb/article/details/121746997


部署sersync

一般情况下部署在rsyncclient端

  1. 下载软件二进制包

https://github.com/wsgzao/sersync
sersync2.5.4是软件的最后版本。

# 下载sersync二进制包
wget -c https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
  1. 解压软件, 并保存到相应目录中
# 创建目录
mkdir -p /usr/local/sersync

# 解压文件
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz

# 查看解压的目录结构
tree GNU-Linux-x86

image.png

# 将sersync2修改为sersync
mv GNU-Linux-x86/sersync2 GNU-Linux-x86/sersync

# 将目录下文件移动到/usr/local/sersync/
mv GNU-Linux-x86/* /usr/local/sersync/

配置sersync的path变量

# 指定sersync程序的路径
export PATH="$PATH:/usr/local/sersync"

使path变量生效
source /etc/profile.d/sersync.sh


修改sersync配置文件

vim /usr/local/sersync/confxml.xml

带有详细注释配置文件
https://github.com/omaidb/qiaofei_notes/tree/main/config_bak/sersync
2个配置文件

  • rsyncd守护进程模式配置:rsyncd_confxml.xml
  • ssh免密模式配置:ssh_key_confxml.xml

sersync常用参数

image.png

# 查看 sersync 参数
sersync -h
参数解释
-d启用守护进程模式
-r在监控前,将监控目录与远程主机用rsync命令推送一遍
-n指定开启守护线程的数量,默认为10个
-o指定配置文件,默认使用confxml.xml文件
-m refreshCDN启用刷新CDN模块-插件
-m socket启用socket模块-插件
-m http启用http模块-插件
不加-m参数则默认执行同步程序
# 后台启动sersync同步服务程序
## -d 启用守护进程模式
## -r 在监控前,将监控目录与远程主机用rsync命令推送一遍
## -o 指定配置文件
sersync -dro /usr/local/sersync/confxml.xml

使用服务文件实现开机自启动

vim /etc/systemd/system/sersync.service

# /etc/systemd/system/sersync.service
[Unit]
Description= sersync数据实时同步服务
# 当指定的配置文件存在时,服务才会启动
ConditionPathExists=/usr/local/sersync/confxml.xml

[Service]
# 启动命令,不要加-d
ExecStart=/usr/local/sersync/sersync -ro /usr/local/sersync/confxml.xml
# 服务停止时的命令
## 命令要以绝对路径执行
ExecStop=/usr/bin/killall sersync

[Install]
WantedBy=multi-user.target

保存后,重载服务

# 重载服务
systemctl daemon-reload

# 设置开机自启动
systemctl enable --now sersync.service

实时同步服务debug

修改配置文件参数,进行调试
vim /usr/local/sersync/confxml.xml

<!-- 开启debug模式 -->
<debug start="true"/>

修改完debug模式重启服务

# 重启服务
systemctl restart sersync

# journalctl实时查看日志
journalctl -u sersync -f

使用前台运行查看详细日志

# 停止服务
systemctl stop sersync

# 不加-d以前台模式打印日志输出
sersync -ro /usr/local/sersync/confxml.xml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(leetcode)二叉树最大深度

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 题目&#xff1a; 思路&#xff1a; 代码&#xff1a; 图解&#xff1a; 题目&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数…

数据挖掘十大算法

参考&#xff1a; ICDM&#xff1a;数据挖掘十大算法

go语言 实现正向代理

正向代理 我们无法访问外网 就需要VPN 这里的VPN相当于是一个代理服务器&#xff0c;我们将请求的数据给代理服务器&#xff0c;让代理帮我们转发并接收请求消息 代码 package mainimport ("fmt""io""net""net/http""strings&…

华为分布式新核心全面升级金融级PaaS能力:数字化时代“分工”再深化

文 | 螳螂观察 作者 | 李永华 金融领域一向是数字化转型升级最难啃的硬骨头&#xff0c;无数厂商在此深耕&#xff0c;但由于行业数字化需求复杂而艰深&#xff0c;实现深入突破的并不多&#xff0c;尤其是在关系到账户数据的核心系统方面&#xff0c;有所建树的少之又少。 …

Python日期处理库:掌握时间的艺术

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 日期和时间在计算机编程…

短剧推广和小说推文在哪里授权介绍

短剧推广和小说推文都属于很热门的赛道&#xff0c;都可以通过“巨量推文”进行授权 在巨量推文找到想推广的小说或者短剧后申请推广即可&#xff0c;小说需要有回填作品信息&#xff0c;短剧为全自动&#xff0c;出数据后实时同步到平台

Maven高级---分模块设计,继承(继承关系/版本锁定/自定义属性)

目录 分模块设计 继承与聚合 继承关系 ​案例​ 版本锁定 自定义属性/引用属性 分模块设计 把一个项目拆分成不同的模块 我们可以把原来一个项目包中的东西单独提出来作为一个模块,也是解耦的思想 然后我们可以通过引入依赖的方式将这两个模块引入,如下 继承与聚合 继…

JavaScript小案例-树形菜单(菜单数据为数组)

菜单层级理论上可以无限多&#xff0c;因为是递归渲染。 gif演示图&#xff1a; 代码&#xff1a; 树形菜单.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content&quo…

全球南方《乡村振兴战略下传统村落文化旅游设计》许少辉八一著辉少许

全球南方《乡村振兴战略下传统村落文化旅游设计》许少辉八一著辉少许

第八章 排序

一、插入排序 不带哨兵 void InsertSort(int A[], int n){int i, j, temp;for (i1; i<n; i){if (A[i]<A[i-1]){temp A[i];for (ji-1; j>0 && A[j]>temp; --j){A[j1] A[j];}A[j1] temp;}} }带哨兵 void InsertSort(int A[], int n){int i, j;for (i2;…

微信小程序 实现滑块是矩形的slider组件

我发现大多数前端UI库都是圆形的滑块&#xff0c;而且圆形的滑块都没有紧贴进度条&#xff0c;都是超出了首尾端&#xff0c;所以亲自写一个矩形的滑块&#xff0c;我使用了微信小程序的wxs的事件通信写法&#xff0c;官方说这样写好&#xff0c;也不知道好哪里了。样式如下图&…

AWS入列CNCF基金会

7月27日&#xff0c;IT之家曾经报道&#xff0c;微软加入Linux旗下CNCF基金会&#xff0c;在这之后不到一个月的今天&#xff0c;亚马逊AWS也宣布&#xff0c;以铂金身份加入此基金会。 CNCF&#xff0c;全称Cloud Native Computing Fundation&#xff0c;该基金会旨在使得容器…

Java中Hashset存储原理底层深挖

上课老师讲了Hashset的添加元素方法&#xff0c;感觉不甚准确&#xff0c;于是下课扒一扒底层源码&#xff0c;这一看&#xff0c;霍&#xff01; 原来如此。现在小丁来捋一遍他的存储原理。 public boolean add(E e) {return map.put(e, PRESENT)null;} 可以看到PRESENT是一…

HTTPS 证书生成脚本详细讲解

前言 HTTPS证书的作用是用于保障网站的安全性。在HTTPS协议中&#xff0c;通过使用证书来实现客户端与服务器之间的认证和数据加密&#xff0c;防止中间人攻击、信息泄漏等安全问题的发生。https证书也就是SSL证书&#xff0c;我们首先要确定好需要 https 安全连接的域名&…

IMX6ULL移植篇-Linux内核源码目录分析一

一. Linux内核源码目录 之前文章对 Linux内核源码的文件做了大体的了解&#xff0c;如下&#xff1a; IMX6ULL移植篇-Linux内核源码文件表_凌肖战的博客-CSDN博客 本文具体说明 Linux内核源码的一些重要文件含义。 二. Linux内核源码中重要文件分析 1. arch 目录 这个目录…

Spring的后处理器

Spring后处理器 Spring后处理器是Spring对外开放的重要拓展点&#xff08;让我们可以用添加自己的逻辑&#xff09;&#xff0c;允许我们介入到Bean的整个实例化流程中来&#xff0c;以达到动态注册BeanDefinition&#xff08;向BeanDefitionMap中添加BeanDefition对象的过程&…

【视觉SLAM入门】8. 回环检测,词袋模型,字典,感知,召回,机器学习

"见人细过 掩匿盖覆” 1. 意义2. 做法2.1 词袋模型和字典2.1.2 感知偏差和感知变异2.1.2 词袋2.1.3 字典 2.2 匹配(相似度)计算 3. 提升 前言&#xff1a; 前端提取数据&#xff0c;后端优化数据&#xff0c;但误差会累计&#xff0c;需要回环检测构建全局一致的地图&…

数据结构与算法(C语言版)P5---栈

1、栈 1.1、栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。__进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。__栈中的数据元素遵守__后进先出&#xff08;先进后出&#xff09;__LIFO&#xf…

【C++STL基础入门】list改、查操作

文章目录 前言一、list查操作1.1 迭代器循环1.2 for_each函数 二、list改操作2.1 迭代器修改2.2 assign函数2.3 运算符 总结 前言 C标准模板库&#xff08;STL&#xff09;是C语言中非常重要的部分&#xff0c;它提供了一组通用的模板类和函数&#xff0c;用于处理常见的数据结…

利用C++开发一个迷你的英文单词录入和测试小程序-源码

接上一篇&#xff0c;有了数据库的查询&#xff0c;再把小测试的功能给补足&#xff0c;小程序的结构就出来了。 备注&#xff1a;enable_if 有更优秀的concept C 20替代品&#xff0c;C11 里面提到的any&#xff0c;variant&#xff0c;再C17 已经被纳入了标准库。这里完全可…