MySQL :rsync+sersync文件实时同步

1. rsync是什么

  • ​ rsync是Linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步

  • ​ 已支持跨平台,可以在Windows与Linux间进行数据同步。

  • 使用rsync进行数据同步时,第一次进行完全备份,以后则是增量备份,利用rsync算法(差分编码),只传输差异部分数据。

  • 当数据量不大时,还是建议使用rsync+inotify,当数据量很大(几百G甚至1T以上)时,建议使用rsync+sersync

rsync+sersync文件实时同步

  1. sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;
  2. rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。
  3. sersync是金山的周洋基于rsync+inotify-tools开发的工具。它克服了inotify的缺陷,可以过滤重复事件减轻负担,并且自带contab功能、多线程调用rsync、失败重传等功能。

————————————————
原文链接:https://blog.youkuaiyun.com/qq_36045024/article/details/105072818

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CcHS422j-1679486366445)(C:\Users\Eran\AppData\Roaming\Typora\typora-user-images\image-20230320170018956.png)]

一:环境

备份服务器:`192.168.10.130`  操作系统:Centos7  
数据源服务器:`192.168.10.136`  操作系统:Centos7
[root@ln-mysql2 ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

二:备份服务器操作

新建备份目录 mkdir /backup

  1. 关闭selinux(永久关闭防火墙)

    $ vi /etc/selinux/config
    SELINUX=disabled   # 修改
    
    $ setenforce 0     # 立即生效
    
  2. 关闭防火墙

    $ systemctl stop firewalld.service
    
  3. 安装rsync服务器软件

    $ yum install rsync xinetd     # 安装
    $ vi /etc/rc.d/rc.local        # #设置开机启动
    /usr/bin/rsync --daemon --config=/etc/rsyncd.conf # 添加开机启动
    
    $ systemctl start xinetd     #启动xinetd
    
    • xinetd是一个提供保姆服务的进程,rsync是它管理的进程。
  4. 创建rsync.conf配置文件

    $ vi /etc/rsyncd.conf
            uid = root
            gid = root
            use chroot = yes
            max connections = 0
            log file = /var/log/rsyncd.log
            pid file = /var/run/rsyncd.pid 
            lock file = /var/run/rsync.lock 
            secrets file = /etc/rsync.pass  
            motd file = /etc/rsyncd.Motd
            [back_data]    #配置项名称(自定义)
                path = /backup      #备份文件存储地址=》需要提前新建,否则会报错
                comment = A directory in which data is stored
                ignore errors = yes
                read only = no
                hosts allow =192.168.10.136  #允许的ip地址(数据源服务器地址)
    
    
  5. 创建用户认证文件

    $ vi /etc/rsync.pass    # 配置文件,添加以下内容,添加允许传输用户和密码
        ln:ln123456   # 格式,用户名:密码,可以设置多个,每行一个用户名:密码
    
  6. 设置文件权限

    $ chmod 600 /etc/rsyncd.conf  #设置文件所有者读取、写入权限
    $ chmod 600 /etc/rsync.pass  #设置文件所有者读取、写入权限
    
  7. 启动rsync和xinetd

    $ /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
    $ systemctl start xinetd
    
  8. 查看rsync监听的端口号(873)

    [root@ln-mysql2 ~]# netstat -anplut
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      4254/rsync          
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      971/sshd            
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1330/master         
    tcp        0     36 192.168.10.130:22       192.168.10.1:57366      ESTABLISHED 3800/sshd: root@pts 
    tcp6       0      0 :::873                  :::*                    LISTEN      4254/rsync          
    tcp6       0      0 :::3306                 :::*                    LISTEN      1292/mysqld         
    tcp6       0      0 :::22                   :::*                    LISTEN      971/sshd            
    tcp6       0      0 ::1:25                  :::*                    LISTEN      1330/master         
    udp        0      0 127.0.0.1:323           0.0.0.0:*                           705/chronyd         
    udp6       0      0 ::1:323                 :::*                                705/chronyd         
    

三:数据源服务器操作

安装rsync客户端软件

  1. 关闭selinux

  2. 关闭防火墙

  3. 安装rsync客户端软件

    $ yum install rsync xinetd     # 安装
    
    $ vi /etc/rc.local        # #设置开机启动
    /usr/bin/rsync --daemon       # 添加开机启动
    
    $ vi /etc/rsyncd.conf
            log file = /var/log/rsyncd.log
            pid file = /var/run/rsyncd.pid
            lock file = /var/run/rsync.lock
            motd file = /etc/rsyncd.Motd
            [Sync]
            comment = Sync
            uid = root
            gid = root
            port= 873
    $ chmod +x /etc/rc.d/rc.local  #否则重启不执行
    $ systemctl start xinetd  #启动(CentOS中是以xinetd来管理rsync服务的
    
  4. 创建认证密码文件

     $ vi /etc/passwd.txt   #编辑文件,添加以下内容,该密码应与目标服务器中的/etc/rsync.pass中的密码一致  
       ln123456
    
    $ chmod 600 /etc/passwd.txt     #设置文件权限,只设置文件所有者具有读取、写入权限即可   
    
    
  5. 测试数据同步

    数据源服务器192.168.10.136到备份服务器130之间的数据同步

    $ rsync -avH --port=873 --progress --delete  /backup(要备份的数据源目录 ) root@192.168.10.130::back_data(rsyncd.conf文件配置名称)  --password-file=/etc/passwd.txt
    
  • /backup需要新建,这是需要同步到远程备份服务器上的目录,里面放需要备份的文件或文件夹。

安装sersync工具,实时触发rsync进行同步

  1. 修改inotify默认参数(inotify默认内核参数值太小) 修改参数:

    [root@ln-mysql ~]# sysctl -w fs.inotify.max_queued_events="99999999"
    fs.inotify.max_queued_events = 99999999
    [root@ln-mysql ~]# sysctl -w fs.inotify.max_user_watches="99999999"
    fs.inotify.max_user_watches = 99999999
    [root@ln-mysql ~]# sysctl -w fs.inotify.max_user_instances="65535"
    fs.inotify.max_user_instances = 65535
    [root@ln-mysql ~]# vi /etc/sysctl.conf              设置永久生效
        fs.inotify.max_queued_events=99999999
        fs.inotify.max_user_watches=99999999
        fs.inotify.max_user_instances=65535
    
  2. 安装sersync

    上不去google的可以直接wget本地的包,这里只提供64位版本的:http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz
    
    $ tar zxvfsersync2.5.4_64bit_binary_stable_final.tar.gz      #解压
    $ mv GNU-Linux-x86  /usr/local/sersync                      #移动目录到/usr/local/sersync  
    
    
  3. 创建rsync

    $ cd  /usr/local/sersync #进入sersync安装目录
    $ cp confxml.xml  confxml.xml-bak       #备份原文件
    $ cp confxml.xml  data_configxml.xml    #复制用于同步data目录的文件
    
    • 备份配置文件,防止修改错了。不知道哪里出错,方便还原。
    • data_configxml.xml是后面需要使用的真正的配置文件
  4. 修改配置data_configxml.xml文件

      $ vi data_configxml.xml
           -----  24行   -----
           
           <localpath watch="/ba'c'k">            		 # 本地数据源路径             
    		<remote ip="192.168.10.130" name="back_data"/>        # 备份服务器地址信息
           </localpath>
              <rsync>
                 <commonParams params="-artuz"/>
                 <auth start="true" users="root" passwordfile="/etc/passwd.txt"/>        ## 启用身份验证"true",密码文件路径"/etc/passwd.txt"
                 <userDefinedPort start="false" port="874"/><!-- port=874 -->
                 <timeout start="false" time="100"/><!-- timeout=100 -->
               <ssh start="false"/>
        	  </rsync>
    
    

四:出现的问题

  • 备份服务器里的备份目录是/backup,但是这个文件没有创建,导致不能备份过去。

​ 在备份服务器上需要我们去创建mkdir /backup

  • 如果修改了rsync.conf配置文件,需要重启xinetd服务,会帮我们去重启rsync进程 service xinetd restart

  • 排错查看日志

    [root@ln-mysql2 backup]# cat /var/log/rsyncd.log 
    2023/03/19 20:33:39 [4254] rsyncd version 3.1.2 starting, listening on port 873
    2023/03/19 21:11:30 [4285] name lookup failed for 192.168.10.136: Name or service not known
    2023/03/19 21:11:30 [4285] connect from UNKNOWN (192.168.10.136)
    2023/03/19 13:11:30 [4285] rsync to back_data/ from UNKNOWN (192.168.10.136)
    2023/03/19 13:11:30 [4285] receiving file list
    2023/03/19 13:11:30 [4285] backup/
    2023/03/19 13:11:30 [4285] sent 158 bytes  received 925411 bytes  total size 924624
    
  • 增加文件,或者删除文件,测试是否可以增量备份

  • 密码不正确或者用户名不正确,也可以实时同步文件,思考底层是否利用了我们建立的密码通道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码精灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值