集群架构05·备份服务rsync
初识
开源,多功能,全量和增量的本地或远程数据同步备份的优秀工具,remote synchronization
俩服务器定/实时备份cron+rsync,数据同步,全网备份
一个rsync相当于scp、cp、rm,但又优于他们
yum install -y rsync
支持断点续传,限速等特定功能
优缺点
优点:增量备份,支持ssh,支持daemon ,集中备份
缺点:大文件对比时间比较长,大文件有时候可能传输不完整
一次性拷贝可以直接使用SCP
工作模式
1、本地模式:cp,rm
2、通道模式:ssh加密
3、daemon:非加密,一般不需要都是内网
二三模式不能混合使用
参数
-avz 基本可以满足需求
-v:verbose详细模式输出
-z:zip传输时压缩来提高传输效率
-a:archive归档模式,等于rtopgDl
-t:time保持文件时间信息
-o:owner保持文件属组信息
-p:保持文件权限
-g:group保持文件所属组
-l:link保持文件软链接
-p:process显示同步过程和进度信息
--delete 按照源端来删除目的端的文件
--exclude:排除不需要传输的文件
--bwlimit=rate 备份带宽,别把马路占满,注意备份时间
-e, --rsh=command 指定使用rsh、ssh方式进行数据同步
实践
1、将/server/ssh目录里的所有的文件同步至/back 目录(不包含/server/ssh本身)
[root@localhost ~]# rsync -azv /server/ssh/ /back/
2、将服务器的test文件夹和内部文件都通过ssh隧道复制到备份服务器中
[root@moban ~]# rsync -avz /root/test -e ’ssh -p 22‘ root@192.168.2.40:/root/
root@moban ~]# rsync -avz -e ssh root@192.168.2.40:/root/666 /root/
和scp命令类似,既可以上传,也可以下载,只需要调整位置即可,通过ssh免密配置,定时任务直接备份
主配置文件
/etc/rsyncd.conf
#rsync_config_start
#created by oldboy 18:00 2016/4/20
##rsyncd.conf start##
uid = rsync #用户uid 虚拟用户
gid = rsync #用户组gid
use chroot = no #安全相关
max connections = 200 #最大连接数
timeout = 300 #超时参数(单位/秒)
pid file = /var/run/rsyncd.pid #进程号对应的进程号文件
lock file = /var/run/rsync.lock #锁文件,防止文件不一致,女神上厕所,要锁门
log file = /var/log/rsyncd.log #日志文件
[backup] #模块名称
path = /backup #服务器提供访问的目录
ignore errors #忽略错误
read only = false #不可写
list = false #不能列表
hosts allow = 172.16.1.0/24 #严格来说是内网网段,允许那些机器过来连接,网络控制
hosts deny = 0.0.0.0/32
auth users = rsync_ backup
secrets file = /etc/rsync.password
#rsync_ config_end
实践是检验真理的唯一标准
服务器端 :根据服务主配置文件来做配置
环境
[root@NFS_22 ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@NFS_22 ~]# uname -a
Linux NFS_22 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux
[root@NFS_22 ~]# rsync --version
rsync version 3.0.6 protocol version 30
1、建立备份目录/backup,要转移备份先把东西整理到一个地方,专门用来拉取文件的仓库
[root@backup ~]# mkdir /backup
2、添加用户,初识尝试启动服务,返回这说明我们要配置这个文件
[root@nfs ~]# id rsync #没有该用户
id: rsync: No such user
[root@nfs ~]# useradd rsync -s /sbin/nologin -M #nologin #不登录是虚拟用户,-M不创建家目录
[root@nfs ~]# tail -1 /etc/passwd
rsync501:501::/home/rsync:/sbin/nologin
[root@nfs ~]# rsync --daemon #为备份服务器创建配置文件,起初没有配置文件,下面要增加配置
Failed to parse config file: /etc/rsyncd.conf
3、配置服务主配置文件,查看服务是否启动成功
[root@nfs ~]# vim /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /backup
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[root@nfs ~]# rsync --daemon #配置文件没有问题,不会报错,正常启动
[root@nfs ~]# ps -ef |grep rsync|grep -v "grep"
root 2077 1 0 04:17 ? 00:00:00 rsync --daemon
4、创建存密码的文件,为了安全去修改文件权限,修改备份文件的所属者和所属组
[root@nfs ~]# echo "rsync_backup:oldboy" > /etc/rsync.password
[root@nfs ~]# ll /etc/rsync.password
-rw-r--r--. 1 root root 20 Oct 11 04:33 /etc/rsync.password
[root@nfs ~]# chmod 600 /etc/rsync.password
[root@nfs ~]# ll /etc/rsync.password
-rw-------. 1 root root 20 Oct 11 04:33 /etc/rsync.password
[root@nfs ~]# chown -R rsync.rsync /backup/
5、根据rsync服务的端口873来找服务开没开,两种方法
方式一:lsof
[root@nfs ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 2077 root 3u IPv4 14793 0t0 TCP *:rsync (LISTEN)
rsync 2077 root 5u IPv6 14794 0t0 TCP :rsync (LISTEN)
方式二:netstat
[root@nfs ~]# netstat -lntup |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0: LISTEN 2077/rsync
tcp 0 0 :::873 :::* LISTEN 2077/rsync
6、将进程加入开机自启动文件rc.local当中
开机自启动 chkconfig rsync on
[root@nfs ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local
[root@nfs ~]# tail -1 /etc/rc.local
/usr/bin/rsync --daemon
7、修改配置文件,先杀死服务,然后在启动文件
pkill rsync
lsof -I :873
rsync --daemon
8、多模块配置,增加一个模块,新建目录,修改目录权限
客户端
1、存在rsync服务
[root@NFS_22 ~]# rpm -qa rsync
rsync-3.0.6-9.el6_4.1.i686
2、配置虚拟用户的密码
echo "oldboy" >/etc/rsync.password
chmod 600 /etc/rsync.password
mkdir -p /backup
功能实现:现在客户端把文件推到服务器端,在客户端操作
方式一:
[root@NFS_22 backup]# rsync -avz /backup/ rsync_backup@192.168.2.11::backup/ --password-file=/etc/rsync.password
方式二:
[root@NFS_22 backup]# rsync -avz /backup/ rsync://rsync_backup@172.16.1.11/backup --password-file=/etc/rsync.password
功能实现:拉取文件,就是将目的地和源地址反过来就是从服务器端拉取文件
[root@NFS_22 backup]# rsync -avz rsync_backup@192.168.2.11::backup /backup/ --password-file=/etc/rsync.password
故障总结,模拟故障来增加经验
服务端备份目录没有
备份目录权限不够
虚拟用户密码不正确,多个空格,多个换行符,都有可能导致密码不正确
防火墙开启,导致失败
排错
查看错误提示
查看日志 tail -1 /var/log/rsync.log
仔细排查部署过程
客户端拍错,密码文件,测试端口
排除推送:
排除单个文件 --exclude=a
排除多个文件
--exclude={a,b}
--exclude={a..z}
--exclude-from=paichu.log
无差异同步:慎用,没有后悔药
--delete A B 按照A来无差异同步B,如果B有多余文件则删除,缺少文件则复制添加
rsync -avz --delete /backup/ rsync_backup@192.168.2.11::backup --password-file=/etc/rsync.password
实践
每天晚上00点整在Web服务器A上打包备份网站程序目录并通过rsync命令推送到服务器B上备份保留
(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
具体要求如下:
1)Web服务器A和备份服务器B的备份目录必须都为/backup。
2)Web服务器站点目录假定为(/var/www/html)。
3)Web服务器本地仅保留7天内的备份。
4)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱(选做)。
5)备份服务器上每周六的数据都保留,其他备份仅保留180天备份(选做)。
NFSserver的/var/www/html打包压缩同步到/backup目录,每次备份的打包备份的文件只保留七天:
tar -zchf /backup/html.$(date +%F%w -d '-1day').tar.gz /var/www/html/
集群架构05·备份服务rsync的更多相关文章
- Java高可用集群架构与微服务架构简单分析
序 可能大部分读者都在想,为什么在这以 dubbo.spring cloud 为代表的微服务时代,我要还要整理这种已经"过时"高可用集群架构? 本人工作上大部分团队都是7-15人编 ...
- 集群架构04·NFS服务,环境安装
初识 网络文件系统Netwrok File System,类似于wiin10的网络共享 功能:通过网络让不同主机系统之间可以共享文件或目录 客户端通过挂载的方式将服务器端共享的目录挂载到本地系统. 集 ...
- 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken
前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...
- Linux Web集群架构详细(亲测可用!!!)
注意:WEB服务器和数据库需要分离,同时WEB服务器也需要编译安装MySQL. 做集群架构的重要思想就是找到主干,从主干区域向外延展. WEB服务器: apache nginx 本地做三个产品 de ...
- MongoDB集群架构及搭建
MongoDB分布式集群 MongDB分布式集群能够对数据进行备份,提高数据安全性,以及提高集群提高读写服务的能力和数据存储能力.主要通过副本集(replica)对数据进行备份,通过分片(shardi ...
- 【MySQL大系】《Mysql集群架构》
原文地址(微信):[技术文章]<Mysql集群架构> 本文地址:http://www.cnblogs.com/aiweixiao/p/7258444.html 点击关注微信公众号 1.主要 ...
- 构建MHA实现MySQL高可用集群架构
一.MHA简介 MHA(Master HighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开 ...
- Galera Cluster——一种新型的高一致性MySQL集群架构
原文链接:https://www.sohu.com/a/147032902_505779,最近被分配定位mysql的问题,学习下. 1. 何谓Galera Cluster 何谓Galera Clust ...
- 二、ELKStack集群架构设计
一.ELKStack介绍与入门实践 二.Elasticsearch 集群架构图 服务器配置:Centos6.6 x86_64 CPU:1核心 MEM:2G (做实验,配置比较低一些) 注:这里配置el ...
随机推荐
- confluent_kafka消费时内存泄漏
confluent_kafka测试的内存泄漏的条件 多线程消费 centos6 预测和centos6底层库存在关系. 换用centos7(我是换了7.3)就行了. (起初以为是代码问题,定位问题位置后 ...
- android-studio打包APK出现有关apk图标问题
报的错很多,有build gradle中的两个大红感叹号,由此引发了一大堆问题 注意到最后出现红色打包错误的代码: Failed to read PNG signature: file does no ...
- BZOJ 4008 亚瑟王(概率DP 奥妙重重)
题意 中文题面,就不解释了 分析 显然这道题直接求期望太麻烦,想想转化问题(这转化太神了). 定义f(i,j)f(i,j)f(i,j)表示第iii张卡总共被经过jjj次的概率,有转移方程式 f(i,j ...
- 11、组件注册-使用FactoryBean注册组件
11.组件注册-使用FactoryBean注册组件 package org.springframework.beans.factory; import org.springframework.lang ...
- 使用docker配置gitlab服务器
下载gitlab镜像,导入 [root@gitlab ~]# docker load < gitlab_zh.tar 容器需要22端口,所以修改ssh的默认端口 [root@gitlab ~]# ...
- 003_软件安装之_Visual Studio 2012
Visual Studio 2012安装,里面有视频教程,还有秘钥,连接失效联系我 2012版: 链接:https://pan.baidu.com/s/1BRE46cTKJW58YZ3lBFyjMw ...
- 使List<userClass>.Contains可以查找重復的對象
List.Contains实现对比 http://blog.csdn.net/yswucn/article/details/4091469
- 北大ACM - POJ试题分类(转自EXP)
北大ACM - POJ试题分类 -- By EXP 2017-12-03 转载请注明出处: by EXP http://exp-blog.com/2018/06/28/pid-38/ 相关推荐文: 旧 ...
- JS 时间转换函数 字符串时间转换毫秒(互转)
字符串转化为日期 let util = function(){ Date.prototype.Format = function(fmt) { var o = { "M+" : t ...
- python异常链
习惯使用java开发,在java开发里有异常链概念和重新抛出异常,在python是怎么实现的呢? 1.异常链 1.1.java实现 public static void test1() throws ...