rsync数据同步和sersync数据实时同步服务器

2024-01-24 13:52

本文主要是介绍rsync数据同步和sersync数据实时同步服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

rsync数据同步和sersync数据实时同步服务器

基于三台服务器,部署数据实时同步服务器,一台作为主服务器sersync(推送数据),其余两台作为备用服务器rsync(拉取数据)。
 

rsync 数据同步

环境:

服务器:172.20.26.167

服务器:172.20.26.198

服务器:172.20.26.24

 实现有权限的地址可同步

两台服务器均需安装有rsync服务。

在172.20.26.198上检查是否有安装rsync 服务

[root@localhost ~]# rpm -qc rsync  #查询rsync服务的配置文件

未安装软件包 rsync

[root@localhost ~]# yum install rsync -y

[root@localhost ~]# rpm -qc rsync  #查询rsync 服务的配置文件

/etc/rsyncd.conf

/etc/sysconfig/rsyncd

[root@localhost ~]# vim /etc/rsyncd.conf   #守护模式的配置文件rsyncd.conf,在后台运行的进程,不影响前端的shell

把光标移动到uid行首,ctrl+v 进入可视化模式,按向右键,再按向下键,再按x键,去掉#号注释,保留有效参数

修改相关配置参数:

uid = root  rsync    #进程管理用户

gid = root   rsync   #进程管理用户

use chroot = yes     #安全设置,限制软连接,如果设置为no,则文件同步到远程服务器后,会在链接文件前面增加一个目录,使链接文件失效,设置为yes则表示不加目录。

max connections = 10  #最大链接数

ignore nonreadable = yes   #忽略不可读的错误

read only = false       #关闭只读权限

hosts allow = 172.20.26.24  #允许同步的服务器

hosts deny = *   #不允许同步的服务器,* 代表所有

auth users = rsync             #创建同步时使用的虚拟用户

secrets file = /etc/rsync.passwd    #将密码写入rsync.passwd 文件,使用该虚拟用户同时时不需要再输入密码

编辑【web】模块、【sql】模块

[web]

       path = /data/web

       comment = nginx data backup

[sql]

      path = /data/sql

      comment = sql data backup

[root@localhost ~]# systemctl start rsyncd

[root@localhost ~]# systemctl status rsyncd

创建配置文件设置的目录路径

[root@localhost ~]# mkdir -p /data/web

[root@localhost ~]# ls

anaconda-ks.cfg

[root@localhost ~]# mkdir -p /data/sql

[root@localhost ~]# ls

anaconda-ks.cfg

[root@localhost ~]#

[root@localhost /]# cp /etc/fstab /data/web   #将/etc/fstab 文件拷贝到/data/web 目录下

在172.20.26.24服务器上也安装rsync 服务

[root@bogon ~]# systemctl start rsyncd    #启动rsync服务

从172.20.26.198服务器上拉取web 模块中的文件到当前目录下

[root@bogon ~]# rsync -av 172.20.26.198::web .

也可以将本机上的文件(/etc/passwd)推送给172.20.26.198上的web模块里,因在172.20.26.198上的rsync.conf文件中配置了“read only = false  关闭只读权限”,否则会报错。

在172.20.26.198上查询推送过来的passwd文件

如果需要开启认证的话,需要定义虚拟用户和密码,配置到rsync.conf 文件中

[root@localhost /]# vim /etc/rsyncd.conf

如果使用的用户名和密码一样,可以写在全局里,也可以写到模块里,如果不一样,分别写到自己的模块里即可。

[root@localhost /]# echo "rsync:123456" >/etc/rsync.passwd

[root@localhost /]# chmod 600 /etc/rsync.passwd   #修改rsync.passwd 文件的权限,其他人和组不可读写

重启rsync 服务

[root@localhost /]# systemctl restart rsyncd

[root@bogon ~]# rsync -av /etc/yum.conf rsync@172.20.26.198::web

输入rsync 的密码 123456

在172.20.26.198上查询/data/web 目录下已经有yum.conf 文件

也可以将密码写进文件里,使用这个用户同步数据时不再需要输入密码。

[root@bogon ~]# echo "123456" > /etc/rsync.passwd    #将密码写入rsync.passwd 文件中

[root@bogon ~]# chmod 600 /etc/rsync.passwd  #取消其他人和组对rsync.passwd 文件读取权限

[root@bogon ~]# rsync -av /etc/virc rsync@172.20.26.198::web --password-file=/etc/rsync.passwd

在172.20.26.198上查询/data/web 目录下已经有virc 文件。

也可以设置允许某些服务器连接同步,拒绝其他的服务器连接同步。

目前172.20.26.167 服务器是可以将文件推送到172.20.26.198服务器上的,而我们可以设置只允许172.20.26.24 连接同步,拒绝172.20.26.167连接同步。

[root@localhost ~]# vim /etc/rsyncd.conf

[root@localhost ~]# systemctl restart rsyncd

在172.20.26.167上推送sysctl.conf文件到172.20.26.198上,被拒绝

[root@bogon ~]# rsync -av /etc/sysctl.conf rsync@172.20.26.198::web

我们修改172.20.26.198上的/etc/rsyncd.conf文件,把172.20.26.167 写到允许的hosts 里,即可让172.20.26.167也能向172.20.26.198服务器推送文件

[root@localhost ~]# vim /etc/rsyncd.conf

保存退出,重启rsync服务

[root@localhost ~]# systemctl restart rsyncd

回到172.20.27.167服务器上执行rsync命令,

 [root@bogon ~]# rsync -av /etc/sysctl.conf rsync@172.20.26.198::web

将syssctl.conf 推送到172.20.26.198服务器上的web模块中

我们在/etc/rsyncd.conf 里也配置了sql 模块,也创建了/data/sql 目录,我们也可以用这个模块进行实验。

rsync -av /etc/virc rsync@172.20.26.198::sql --password-file=/etc/rsync.passwd

sersync 实时数据同步

环境:

sersync服务器:172.20.26.24    配置sersync 把数据推给167、198

rsync服务器:172.20.26.167、172.20.26.198   配置rsync 接收数据

先在172.20.26.24服务器上配置sersync 服务

[root@bogon ~]# cd /usr/src

[root@bogon src]# rz

将sersync2.5.4_64bit_binary_stable_final.tar上传到172.20.26.24上,配置sersync服务

[root@bogon src]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz

将解压出来的GNU-Linux-x86目录移到/usr/local/sersync

[root@bogon src]# mv GNU-Linux-x86/ /usr/local/sersync 

 [root@bogon src]# cd /usr/local/sersync

[root@bogon sersync]# ls

confxml.xml  sersync2

/usr/local/sersync下只有confxml.xml、sersync2两个文件,一个是配置文件、一个可执行文件

[root@bogon sersync]# vim /usr/local/sersync/confxml.xml

将<fileSystem xfs="false"/>  改为 <fileSystem xfs="true"/>

Inotify 模块定义通知开始同步的条件:

<inotify>

        <delete start="true"/>     #开始删除的时候,默认为true

        <createFolder start="true"/>    #创建目录的时候,默认为true

        <createFile start="false"/>      #创建文件的时候,默认为false

        <closeWrite start="true"/>      #关闭写的时候,默认为true

        <moveFrom start="true"/>     #从---移动到的时候,默认为true

        <moveTo start="true"/>     #开始移动的时候,默认为true

        <attrib start="false"/>       #查询开始,默认为false

        <modify start="false"/>      #修改开始的时候,默认为false

    </inotify>

配置监控的目录,远程服务器IP地址,要监控的模块,我们之前定义设定的是web

将超时时间改为true

<timeout start="true" time="100"/><!-- timeout=100 -->

计划任务默认是false ,如果改为true,默认是600分钟做一次全量同步

<crontab start="false" schedule="600"><!--600mins-->

开启认证,配置使用rsync 和密码文件

<auth start="true" users="rsync" passwordfile="/etc/rsync.passwd"/>

保存退出

[root@bogon sersync]# mkdir -p /data/jfedu          #创建jfedu目录

[root@bogon sersync]# ./sersync2 -d -r -o /usr/local/sersync/confxml.xml   #启动sersync 服务

检查172.20.26.167、172.20.26.198 rsync服务器的服务和目录是否都正常

由于172.20.26.167服务器上没有部署rsync ,可以从172.20.26.198上将rsync的文件拷贝过来

[root@bogon etc]# scp 172.20.26.198:/etc/rsync* /etc/

拷贝过来后检查一下rsyncd.conf 没有问题,重启服务

[root@bogon /]# chmod 600 /etc/rsync.passwd  #取消其他人和组对rsync.passwd 文件读取权限

创建/data/web 目录

172.20.26.198服务器上rsync 服务和目录都正常

回到172.20.26.24服务器上开始更新/data/jfedu里的数据

[root@bogon sersync]# cp /etc/fstab /data/jfedu/

172.20.26.167服务器上查看data/web 目录下已经有了fstab 文件

172.20.26.198服务器上查看data/web 目录下也已经有了fstab 文件

我们把/etc/passwd 也拷贝到/data/jfedu  ,查看同步情况

对passwd文件内容进行修改,查看同步情况

删除 root:x:0:0:root:/root:/bin/bash  这行信息

保存退出

在172.20.26.167和172.20.26.198上查看passwd文件里是已经没有刚才删除的信息:root:x:0:0:root:/root:/bin/bash

[root@bogon etc]# vim /data/web/passwd

[root@bogon sersync]# tail /tmp/rsync_fail_log.sh  #可以查看运行日志

查看sersync 进程

这篇关于rsync数据同步和sersync数据实时同步服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/639902

相关文章

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S