集群架构-备份服务-rsyncd

一、备份服务应用场景

  • 数据有3份,多个地方存放比较安全的
  • 独立备份服务器(多台多地方)
  • 备份服务:rsyncd

二、备份服务-cs架构

  • rsyncd服务典型的cs架构
  • 服务端(server)与客户端(client)

三、环境准备

3.1IP规划

角色ip主机名服务
rsyncd服务端10.0.0.41/172.16.1.41backuprsyncd服务
rsyncd客户端lb01-lb02负载
rsyncd客户端web01-web02web
rsyncd客户端db数据库
rsyncd客户端nfs存储

3.2rsyncd服务端

#1.安装rsyncd
yum -y insatll rsyncd

#配置文件
vim /etc/rsyncd.conf

#内容
#created by oldboy 15:01 2009-6-5
##rsyncd.conf start##
fake super =yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
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
####################################
[data]
comment = www by old0boy 14:18 2012-1-13
path = /data

#创建虚拟用户
useradd -s /sbin/nologin -M rsync

#创建rsync.password文件并写入密码
echo ‘rsync_backup:lidao’ > /etc/rsync.password

#修改rsync.password文件权限为600
chmod 600 /etc/rsync.password

#创建data目录并修改用户与用户组
mkdir -R /data/
chown -R rsync.rsync /data/

#启动rsyncd
systemctl enable –now rsyncd

#检查
ps -ef | grep rsync

#测试
rsync -av /etc/hostname rsync_backup@172.16.1.41::data
密码为刚刚在写入rsync.password文件中内容

#查看
ll /data/
cat /data/hostname
#将lidao写入到/etc/rsync.client文件中
echo lidao >/etc/rsync.client

#修改文件权限为600
chmod 600 /etc/rsync.client

#测试
rsync -av /etc/passwd rsync_backup@172.16.1.41::data

3.3排错日志

  • /var/log/rsyncd.log
  • /var/log/messages

四、备份项目-客户端备份脚本

4.1配置文件配置脚本

  • 打包备份
  • 脚本中加入md5sum效验是否丢失内容
  • rsync命令传输到服务端
  • 删除就的备份
#编写脚本bak_conf.sh
vim /server/scripts/bak_conf.sh

#内容:
#1.vars
ip=hostname -I | awk '{print $2}'
bak_dir=/backup/${ip}
time=`date +%F_%w
`
rsync_ip=172.16.1.41
rsync_user=rsync_backup
rsync_mod=backup

#2.dir
if [ ! -d ${bak_dir} ]; then
mkdir -p $bak_dir
fi

#3.tar
tar zcf ${bak_dir}/conf-${time}.tar.gz /etc/
if [ $? -eq 0 ]; then
echo “$time backup ok” >>/var/log/bak.log
else
echo “$time backup failed” >>/var/log/bak.log
fi

#4.md5sum
md5sum ${bak_dir}/conf-${time}.tar.gz >${bak_dir}/conf.md5

#5.rsync C–>S
rsync -av ${bak_dir} ${rsync_user}@${rsync_ip}::${rsync_mod} –password-file=/etc/rsync.client
if [ $? -eq 0 ]; then
echo “$time backup to rsync server ok” >>/var/log/bak.log
else
echo “$time backup to rsync server failed” >>/var/log/bak.log
fi

#6.del old backup
找出7天以前的压缩包并删除
find /backup/ -type f -name “*.tar.gz” -mtime +7 |xargs \rm -f

4.2数据库备份脚本

#编辑脚本bak_db.sh文件
vim /server/scripts/bak_db.sh

#内容:
#1.vars
user=root
pass=lidao006
ip=hostname -I | awk '{print $2}'
bak_dir=/backup/db/${ip}
time=date +%F_%w
log_file=/var/log/bak_db.log
rsync_ip=172.16.1.41
rsync_user=rsync_backup
rsync_mod=backup
#2.mkdir
[ -d $bak_dir ] || {
mkdir -p $bak_dir
}
#3.for循环
databases=`mysql -u${user} -p${pass} -e 'show databases;' | egrep -vi 'mysql|schema|database'
`
for name in $databases
do
#4.备份指定数据库
mysqldump -u${user} -p${pass} –databases $name | gzip >${bak_dir}/${name}${time}.sql.gz
#5.记录
if [ $? -eq 0 ];then
echo “备份$name库 ok” >> ${log_file}
else echo “备份$name库 failed” >>${log_file}
fi
#6.md5sum
md5sum ${bak_dir}/${name}${time}.sql.gz >${bak_dir}/${name}_${time}.md5
done
#7.rsync
rsync -av /backup/ ${rsync_user}@${rsync_ip}::${rsync_mod} –password-file=/etc/rsync.client
if [ $? -eq 0 ];then
echo “backup tar to rsync server ok $time” >>${log_file}
else
echo “backup tar to rsync server failed $time” >>${log_file}
fi
#8.del old bak
find /backup/db/ -type f -name “*.tar.gz” -mtime +7 | xargs rm -f

五、服务端检查脚本

#编辑脚本local_back_server_check.sh
vim /server/scripts/local_back_server_check.sh

#内容:
1.vars
result_file=/var/log/result.txt
2.
du -sh /backup/ >$result_file
3.md5失败的数量
failed_count=`find /backup/ -type f -name “*.md5” | xargs md5sum -c | grep -i failed | wc -l`
echo “md5sum检查失败的数量:$failed_count” >>$result_file
4.删除旧的备份
find /backup/ -type f -name “.tar.gz” ! -name “_1.tar.gz” -mtime +180 | xargs rm -f
find /backup/ -type f -name “.sql.gz” ! -name “_1.sql.gz” -mtime +180 | xargs rm -f

六、异地备份

7.4部署lsyncd服务

  • nfs节点部署lsyncd
#下载
yum install -y lsyncd

#修改配置文件
vim /etc/lsyncd.conf

#内容:
–全局部分主要配置lsyncd服务,日志,pid文件.
settings {
–※※※※※日志文件,主要查看日志文件.
logfile = “/var/log/lsyncd.log”,
–pid文件
pidfile = “/var/run/lsyncd.pid”,
–服务状态文件
statusFile = “/var/log/lsyncd.status”,
–改为非守护进程模式,默认.rsync命令,lsyncd
nodaemon = true,
–控制最多用于传输数据的进程数量 rsync进程数(最大)
–※※※※※根据cpu核心数来 一致或2倍
maxProcesses = 2
}
–配置rsync命令,rsync服务端与客户端模式
–sync部分可以有多个.
sync {
–指定rsync工作模式
default.rsync,
–※※※※※ 指定lsyncd监控目录,源目录
source = “/data/”,
–※※※※※ 指定目标 rsync服务端 用户名@rsync ip地址::模块名字
target = “rsync_backup@172.16.1.41::nfsbackup”,
–※※※※※ 每隔3秒同步一次.
delay = 3,
–rsync命令的 –delete 选项 保存客户端与服务端 内容一致.
delete = true,
— 配置rsync命令位置,rsync命令选项,
rsync = {
— 命令位置
binary = “/usr/bin/rsync”,
— rsync命令的 -a选项
archive = true,
— rsync命令的 -z选项 压缩
compress = true,
— ※※※※※配置rsync –password-file密码文件
password_file = “/etc/rsync.client”
}
}

#创建密码文件
echo lidao >>/etc//etc/rsync.client

#修改权限
chmod 600 /etc/rsync.client

#创建目录
mkdir -p /data/

#重新启动服务
systemctl enable –now lsyncd
#创建目录
mkdir -p /nfsbackup/

#修改用户与用户组
chown -R rsync.rsync /nfsbackup

#修改配置文件
vim /etc/rsyncd.conf

#添加模块
[nfsbackup]
comment = www by old0boy 14:18 2012-1-13
path = /nfsbackup

#重启rsyncd
systemctl restart rsyncd
  • 给单独用户创建实时同步
#创建虚拟用户www(我这里uid与gid都设为1999)
groupadd -g 1999 www
useradd -u 1999 -g www -s /sbin/nologin -M www

#创建目录
mkdir -p /目录名

#修改用户与用户组
chown -R www.www /目录名

#修改配置文件
vim /etc/rsyncd.conf

#添加模块(模块名与目录名一样)
[模块名]
uid = www
gid = www
comment = www by old0boy 14:18 2012-1-13
path = /目录名

#重启
systemctl restart rsyncd
#创建虚拟用户www(我这里uid与gid都设为1999)
groupadd -g 1999 www
useradd -u 1999 -g www -s /sbin/nologin -M www

#创建密码文件
echo 密码 >>/etc//etc/rsync.client

#修改权限
chmod 600 /etc/rsync.client


#修改存放内容目录(我用的是我的博客在nfs服务器上的内容存放目录)
chown -R www.www /nfs/blog/

#修改配置文件
vim /etc/lsyncd.conf

#修改位置
–※※※※※ 指定lsyncd监控目录,源目录
source = “/data/”,
把/data/换为/nfs/blog/

#重启
systemctl enable –now lsyncd
  • 测试
在backup中你创建的/nfsbackup中创建一个文件后去nfs服务器上的/data/目录下查看是否存在。
在你的博客上上传一张图片去nfs中的内容存放目录(/nfs/blog/)是否存在,再去backup服务器中的/nfsbackup中查看是否存在。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇