码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用sersync实现数据实时同步


    使用sersync实现数据实时同步

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

    sersync诞生过程

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

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

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

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

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

    参考:
    https://blog.csdn.net/m0_46095955/article/details/104032057
    https://linux.cn/article-6032-1.html

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

    部署前提

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

    配置rsync服务端

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


    部署sersync

    一般情况下部署在rsync的client端

    1. 下载软件二进制包

    https://github.com/omaidb/qiaofei_notes/tree/main/shell_code/sersync

    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
    • 2
    1. 解压软件, 并保存到相应目录中
    # 创建目录
    mkdir -p /usr/local/sersync
    
    # 解压文件
    tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
    
    # 查看解压的目录结构
    tree GNU-Linux-x86
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image.png

    # 将sersync2修改为sersync
    mv GNU-Linux-x86/sersync2 GNU-Linux-x86/sersync
    
    # 将目录下文件移动到/usr/local/sersync/
    mv GNU-Linux-x86/* /usr/local/sersync/
    
    • 1
    • 2
    • 3
    • 4
    • 5

    配置sersync的path变量

    vim /etc/profile.d/sersync.sh

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

    使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
    
    • 1
    • 2
    参数解释
    -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
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    保存后,重载服务

    # 重载服务
    systemctl daemon-reload
    
    # 设置开机自启动
    systemctl enable --now sersync.service
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实时同步服务debug

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

    
    <debug start="true"/>
    
    • 1
    • 2

    修改完debug模式后重启服务

    # 重启服务
    systemctl restart sersync
    
    # journalctl实时查看日志
    journalctl -u sersync -f
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    # 停止服务
    systemctl stop sersync
    
    # 不加-d以前台模式打印日志输出
    sersync -ro /usr/local/sersync/confxml.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    ACM模板二:树、图、并查集、DancingLink
    macOS通过钥匙串访问找回WiFi密码的详细教程
    Js中判断true或false
    Linux进程控制
    Java Socket实现简易多人聊天室传输聊天内容或文件
    JAVA第二课堂选课系统计算机毕业设计Mybatis+系统+数据库+调试部署
    详解ClickHouse的ReplaceMergeTree
    Spring底层原理学习笔记--第一讲--(BeanFactory与ApplicaitonContext)
    Docket安装nginx
    JDK7多线程并发环境HashMap死循环infinite loop,CPU拉满100%,Java
  • 原文地址:https://blog.csdn.net/omaidb/article/details/133091969
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号