小型架构实践--Rsync部署


参考资料:

rsync服务搭建攻略1

rsync服务搭建攻略2


IP规划:192.168.107.103


前置工作

1.防火墙配置

iptables -I INPUT -p tcp -m state --state NEW --dport 873 -j ACCEPT

service iptables save

从这里我们也知道,rsync占用的873端口

2.Selinux设置

setenforce 0


看了一下,rsync已经随着系统安装了,版本号为3.0.6,不过部署路径并不是我想要的,于是决定重新部署

yum remove rsync -y

cd ~

下载最新的3.1.2版本

wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz

(wget http://rsync.samba.org/ftp/rsync/rsync-3.1.2.tar.gz)

tar -xzf rsync-3.1.2.tar.gz

cd rsync-3.1.2


开始编译安装

创建安装路径

mkdir -p /usr/local/rsyncd

配置安装路径

./configure --prefix=/usr/local/rsyncd

make安装

make && make install


完成安装以后需要对rsync进行配置,这个配置的路径以及配置文件需要手动创建

mkdir -p /etc/rsyncd

cd /etc/rsyncd

touch /etc/rsyncd/rsyncd.conf

touch /etc/rsyncd/rsyncd.pass

touch /etc/rsyncd/rsyncd.motd

将密码文件权限改为600

chmod 600 /etc/rsyncd/rsyncd.pass


主要是对下面这个配置文件进行编辑

vim /etc/rsyncd/rsyncd.conf

#Rsync服务器相关信息

pid file = /var/run/rsyncd.pid

port = 873

address = 192.168.107.103

uid = root

gid = root

#chroot,即改变程序执行时所参考的根目录位置

use chroot = yes

read only = no

write only = no

#允许访问的IP,可以指定单个IP,也可以指定整个网段,能提高安全性。格式是 ip 与 ip 之间、ip 和网段之间、网段和网段之间要用空格隔开;

hosts allow = 192.168.107.0/24 10.0.1.0/24

max connections = 5

#登录时的显示信息

motd file = /etc/rsyncd/rsyncd.motd

log file = /var/log/rsync.log

transfer logging = yes

log format = %t %a %m %f %b #日志格式

syslog facility = local3 #日志级别

#超时时间,单位是秒

timeout = 300

#主要是定义服务器哪个目录要被同步。

#每个模块都要以[name]形式。这个名字就是在 rsync 客户端看到的名字。

#但是服务器真正同步的数据是通过 path 指定的。可以依次创建多个模块。

[data]

path = /data

#auth users = root

list = no

ignore errors

secrets file = /etc/rsyncd/rsyncd.pass

#exclude =


#[test]

#path =

#auth users =

#list = no

#ignore errors

#secrets file =

#exclude =

#auth users = run

#secrets file = /etc/rsyncd/rsyncd.secrets

#exclude = error_log httpd.pid

#comment this is my log

说明一下上面加黑的3处

第一处加黑的那个ip是rsync服务端ip

第二处加黑的那个ip是客户端的ip(段)

第三处加黑的那一片是模块,模块都是以中括号的形式打头,下面的模块内容包括了一些同步信息,比较重要的就是路径了,密码文件路径也写上; 我这里是因为还没完成mysql服务器的配置,因此那个secrets file暂时给了#号


配置密码文件,这里是明文的形式,有一定的风险,貌似有规避的办法,后续补上;

vim /etc/rsyncd/rsyncd.secrets


关于Rsync的启动

1.自主启动

/usr/local/rsyncd/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

2.xinetd方式启动

这种方法需要安装xinetd这个超级守护,然后对其进行配置

下面配置里面加黑的两行分别为rsync的启动路径和配置路径

cat /etc/xinetd.d/rsync

service rsync

{

    disable = no

    socket_type    = stream

    wait            = no

    user            = root

    server          = /usr/local/rsyncd/bin/rsync

    server_args    = --daemon 

    log_on_failure  += USERID

}

然后通过service xinetd start启动


关于Rsync的关闭

1.rsync自主启动方式

kill `cat /var/run/rsyncd.pid`

我之前有试过ps -ef|grep rsync,然后把得到的进程号进行kill -9,有几次没有成功;按理说上面的那个命令和这个应该是一回事,不是太清楚原因。

2.xinetd方式

service xinetd stop



本次实验用到的rsync指令

rsync的操作指令不在这里进行过多的分解,简单说明一下采用conf方式运行的基本语法

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

      rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

      rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST


pull模式:拉取模式,从本地把远端需要拷贝的文件(夹)拷贝到本地

push模式:推送模式,从本地把文件(夹)拷贝到远端服务器上

本套架构中,NFS作为mysql的共享存储,Rsync作为异地备份服务器,现有的设想是把备份文件拷贝到Rsync上(本端到远端),采用push模式

适用语法:rsync [OPTION...] SRC... [USER@]HOST::DEST

1.option:各种参数

a表示归档,保留原有文件的各种属性,相当于rlptgoD几个参数的组合

v表示展示详细信息

2.SRC:源路径

在推送的模式中,SRC就是我的实际路径 /share_mysql/test.txt

3.[USER@]HOST

HOST为rsync服务器的ip

root@192.168.40.120

4.::

如果没有冒号,那么表示本地复制到本地

如果有一个冒号:,表示采用的是ssh方式

如果是2个冒号::,表示我们采用的是conf配置方式

5.HOST

这个地方就不是实际目录了,而是模块名

我rsyncd.conf里面的模块

[NFS]

path = /backup

#auth users = root

list = yes

ignore errors

secrets file = /etc/rsyncd/rsyncd.pass

#exclude =


HOST需要填写的就是NFS,实际拷贝路径是/backup,注意这里不要写斜杠/,会提示报错

完整指令为

rsync -av /share_mysql/test.txt root@192.168.40.120::NFS

在客户端(110)拉取服务端(120)的文件

rsync -av root@192.168.40.120::NFS /root

前面的不说了,根据pull的语法,这里的NFS就是对应的SRC,采用了模块名

/root 是DEST,为本地的实际路径


总而言之,IP跟的是服务端的IP,配置用的是服务端的配置,IP双冒号后面跟的是模块名

这里说的push和pull分别是客户端push到服务端,以及客户端pull服务端文件到客户端,跟客户端自身配置没半毛钱关系

但如果服务端想要从客户端去pull东西,或者服务端自己push东西到客户端,那么此时就要依赖客户端的配置了,也就是说这时候客户端就成了服务端,需要写相应的rsyncd.conf了!



实践中遇到的几个问题

1.xinetd以守护进程的方式,所以不会出现rsync的进程以及pid,但是在/var/log/rsync.log里面是可以查询到相关的信息的,进程方面可以查询xinetd的进程;检测的话是通过端口检测来进行的;

关于xinetd的配置有一点需要特别说明,我的/etc/xinetd.d/rsync本来的server_args配置本来是下面这样子的,但是这里写错了(最后应该是rsyncd.conf,少些了一个c)

cat /etc/xinetd.d/rsync

service rsync

{

...

 server_args    = --daemon --config=/etc/rsyncd/rsynd.conf

...

}

报错就是常见的104报错

rsync: read error: Connection reset by peer (104)

所以后来干脆把这里改成server_args    = --daemon 

这样的话,xinetd会自动去寻找/etc/rsyncd.conf

所以这种情况下,就需要做软连接

2.push的方式,客户端是否开启rsync都无所谓,调用的都是服务端的rsync服务

在客户端直接关闭守护,确认端口没有起来

service xinetd stop

Stopping xinetd:                                          [  OK  ]

netstat -an|grep 873

执行push,仍然传递成功

rsync -av /share_mysql/test.txt run@192.168.107.103::NFS

+++++++++++++++++++++++++++

        FlyDido

+++++++++++++++++++++++++++

sending incremental file list

sent 29 bytes  received 8 bytes  3.52 bytes/sec

total size is 0  speedup is 0.00

3.执行push推送时出现的报错

[root@NFS share_mysql]# rsync -av /share_mysql/test.txt root@192.168.40.120::backup

@ERROR: access denied to backup from UNKNOWN (192.168.40.110)

rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

这个报错是因为hosts allow配置的有问题

检查了一下发现把192.168.40.0/24 写成了192.168.40.0\24

4.执行pull拉取时发现的报错

(指令为:rsync --password-file=/etc/rsyncd.pass -av root@192.168.40.120::NFS /root)

@ERROR: chdir failed

rsync error: error starting client-server protocol (code 5) at main.c(1648) [Receiver=3.1.2]

这个报错的意思是路径错误,经过检查发现conf里面配置的NFS模块对应的路径为/share_mysql,实际上这个路径根本不存在

完成该路径的创建以后该问题解决

##################################

更多的rsync问题可以参考:Rsync问题汇总

##################################


正题:

Rsync远程增量备份Mysql

##################################

增量备份指导参考

增备脚本参考

sersync

##################################




                                                                                                                待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容