CentOS 备份实战

Posted 白菜素三鲜丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 备份实战相关的知识,希望对你有一定的参考价值。

备份实战

要求:

统一用户为:www,uid=666 gid=666
1.web01和web02可以上传图片
2.nfs用户数据每天凌晨1点做备份
3.校验数据的完整性
4.nfs用户数据实时同步到backup的/data/目录下,做nfs的备机

环境准备

主机名 WanIP LanIP 角色 部署服务
web01 10.0.0.7 172.16.1.7 nfs客户端 httpd、php、nfs-utils
web02 10.0.0.8 172.16.1.8 nfs客户端 httpd、php、nfs-utils
nfs 10.0.0.31 172.16.1.31 rsync客户端、nfs服务端 nfs-utils、rsync、inotify-tools、sersync
backup 10.0.0.41 172.16.141 rsync客户端、nfs服务端(备机) nfs-utils、rsync

部署web网站

# 1.安装httpd和php
[root@web01 ~]# yum install -y httpd php
[root@web02 ~]# yum install -y httpd php

# 2.修改httpd的配置文件
[root@web01 ~]# vim /etc/httpd/conf/httpd.conf
User apache
Group apache
改成
User www
Group www

[root@web02 ~]# vim /etc/httpd/conf/httpd.conf
User apache
Group apache
改成
User www
Group www

# 3.创建www用户和组
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# adduser www -u 666 -g 666 -s /sbin/nologin -M
[root@web01 ~]# id www
uid=666(www) gid=666(www) groups=666(www)

[root@web02 ~]# groupadd www -g 666
[root@web02 ~]# adduser www -u 666 -g 666 -s /sbin/nologin -M
[root@web02 ~]# id www
uid=666(www) gid=666(www) groups=666(www)

# 4.部署代码
[root@web01 ~]# cd /var/www/html/
[root@web01 html]# rz

[root@web01 html]# ls
kaoshi_modify.zip
[root@web01 html]# unzip kaoshi_modify.zip 
Archive:  kaoshi_modify.zip
  inflating: bg.jpg                  
  inflating: index.html              
 extracting: info.php                
  inflating: upload_file.php

[root@web02 ~]# cd /var/www/html/
[root@web02 html]# rz

[root@web02 html]# unzip kaoshi_modify.zip 
Archive:  kaoshi_modify.zip
  inflating: bg.jpg                  
  inflating: index.html              
 extracting: info.php                
  inflating: upload_file.php

# 5.创建用户上传目录
[root@web01 html]# mkdir /var/www/html/user_data
[root@web02 html]# mkdir /var/www/html/user_data

# 6.授权用户上传数据目录
[root@web01 html]# chown www:www /var/www/html/user_data/
[root@web01 html]# ll -d /var/www/html/user_data/
drwxr-xr-x 2 www www 6 May 21 12:59 /var/www/html/user_data/

[root@web02 html]# chown www:www /var/www/html/user_data/
[root@web02 html]# ll -d /var/www/html/user_data/
drwxr-xr-x 2 www www 6 May 21 12:59 /var/www/html/user_data/

# 7.启动httpd服务
[root@web01 html]# systemctl start httpd
[root@web01 html]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

[root@web02 html]# systemctl start httpd
[root@web02 html]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

# 8.检查进程和端口
[root@web01 html]# ps -ef | grep httpd
[root@web01 html]# netstat -lntup

[root@web02 html]# ps -ef | grep http
[root@web02 html]# netstat -lntup

# 9.浏览器访问

服务端

# 1.安装
[root@backup ~]# yum install -y rsync

# 2.创建用户
[root@backup ~]# groupadd www -g 666
[root@backup ~]# adduser www -u 666 -g 666 -s /sbin/nologin/ -M
[root@backup ~]# id www
uid=666(www) gid=666(www) groups=666(www)

# 3.配置
[root@backup ~]# vim /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[nfs_backup]
comment = welcome to oldboyedu nfs _backup!
path = /backup

[nfs_data]
comment = welcome to oldboyedu nfs _data!
path = /data

# 4.创建目录
root@backup ~]# mkdir /data /backup

# 5.修改备份目录的属组和属主
[root@backup /]# chown www:www /data/
[root@backup /]# ll -d /data/
drwxr-xr-x 2 www www 6 May 21 15:51 /data/
[root@backup /]# chown www:www /backup/
[root@backup /]# ll -d /backup
drwxr-xr-x 2 www www 6 May 21 15:51 /backup

# 6.创建服务端的密码文件
[root@backup /]# vim /etc/rsync.passwd
13579

# 7.修改密码文件的权限为 600
[root@backup ~]# chmod 600 /etc/rsync.passwd 
[root@backup ~]# ll /etc/rsync.passwd 
-rw------- 1 root root 19 May 21 15:53 /etc/rsync.passwd

# 8.开启服务
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.

nfs共享存储部署

# 1.安装
[root@nfs ~]# yum install -y rsync

# 2.客户端创建密码文件(客户端上的密码文件,只需要写密码,不需要写用户)
[root@nfs ~]# vim /etc/rsync.pass
13579

# 3.客户端上的密码文件也必须是600权限
[root@nfs ~]# chmod 600 /etc/rsync.pass 
[root@nfs ~]# ll  /etc/rsync.pass 
-rw------- 1 root root 6 May 21 15:56 /etc/rsync.pass

# 4.创建共享目录
[root@nfs ~]# mkdir /data

# 5.创建www用户和组
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# adduser www -u 666 -g 666 -s /sbin/nologin/ -M
[root@nfs ~]# id www
uid=666(www) gid=666(www) groups=666(www)

# 6.授权共享目录
[root@nfs ~]# chown www:www /data/
[root@nfs ~]# ll -d /data/
drwxr-xr-x 2 www www 6 May 21 16:01 /data/

# 7.修改nfs配置文件
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666,all_squash)

# 8.启动nfs
[root@nfs ~]# systemctl start nfs

# 8.查看挂载点并web01和web02客户端将网站目录挂载到nfs /data目录
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/user_data/
[root@web01 ~]# df -h | tail -1
172.16.1.31:/data   18G  1.7G   16G  10% /var/www/html/user_data

[root@web02 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/user_data/
[root@web02 ~]# df -h | tail -1
172.16.1.31:/data   18G  1.7G   16G  10% /var/www/html/user_data

# 9.打开浏览器并上传文件

每日备份

# 1.查看文件
[root@web01 ~]# ls /var/www/html/user_data/
04_111.webp  04_333.webp
[root@web02 ~]# ls /var/www/html/user_data/
04_111.webp  04_333.webp
[root@nfs ~]# ls /data/
04_111.webp  04_333.webp

# 2.测试,将nfs客户端数据推送到backup服务端
[root@nfs ~]# rsync -avz /data/ rsync_backup@172.16.1.41::nfs_backup --password-file=/etc/rsync.pass
sending incremental file list
./
04_111.webp
04_333.webp

sent 48,423 bytes  received 65 bytes  32,325.33 bytes/sec
total size is 48,208  speedup is 0.99

# 3.查看backup服务端是否有文件
[root@backup ~]# ls /backup/
04_111.webp  04_333.webp

# 4.编写脚本
[root@nfs ~]# vim /root/backup.sh
#!/bin/bash
bak_dir="/client_backup"
data_dir="/data"
host_name=`hostname`
ip=`/usr/sbin/ifconfig eth1|awk NR==2print $2`
date_time=`date +%F`
export RSYNC_PASSWORD=123

#创建客户端的备份目录
mkdir -p $bak_dir
# 进入备份目录,压缩备份文件
cd $data_dir && \\
tar zcf $bak_dir/$host_name_$ip_$date_time.tar.gz ./*
#生成校验文件
cd $bak_dir && \\
md5sum $host_name_$ip_$date_time.tar.gz > $host_name_$ip_$date_time.md5
#推送数据到rsync服务端
rsync -avz $bak_dir/ rsync_backup@172.16.1.41::nfs_backup
#保留7天内的文件
find $bak_dir -type f ! -mtime -7|xargs rm -f

# 5.配置邮箱
[root@backup ~]#  yum install -y mailx
[root@backup ~]# vim /etc/mail.rc
set from=540080971@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=540080971@qq.com
set smtp-auth-password=邮箱授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

# 6.编写服务端脚本
[root@backup ~]# vim check_md5.sh
#!/bin/bash
bak_dir="/backup"
host_name=`hostname`
date_time=`date +%F`

cd $bak_dir && \\
md5sum -c *$date_time.md5|mail -s "$date_time_数据备份校验" 540080971@qq.com
>/dev/null
find $bak_dir -type f ! -mtime -180 | xargs rm -f

# 7.编写定时任务
[root@nfs ~]# crontab -e
00 01 * * * /usr/bin/sh /root/backup.sh &>/dev/null
root@backup ~]# crontab -e
00 01 * * * /usr/bin/sh check_md5.sh &>/dev/null

实时同步sersync

# 1.安装sersync的依赖
[root@nfs ~]# yum install -y rsync inotify-tools

# 2.下载sersync
## 国外
[root@nfs ~]# wget https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
## 国内
[root@nfs ~]# wget http://test.driverzeng.com/other/sersync2.5.4_64bit_binary_stable_final.tar.gz

# 3.创建安装目录
[root@nfs ~]# mkdir /application

# 4.解压sersync
[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /application/

# 5.改名
[root@nfs ~]# mv /application/GNU-Linux-x86/ /application/sersync-2.5.4

# 6.修改配置文件
[root@nfs ~]# vim /application/sersync2.5.4/confxml.xml
<!-- inotify监控动作配置 全部改成true -->
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>

<sersync>
<!-- 监控目录,推送数据的目录 /data -->
<localpath watch="/data">
<!-- rsync服务端的IP地址:172.16.1.41 和 模块名:nfs_data -->
<remote ip="172.16.1.41" name="nfs_data"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>

<!-- rsync命令执行时的选项 -->
<commonParams params="-az --delete"/>
<!-- rsync命令认证,打开认证,rsync匿名用户,密码文件 -->
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pass"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>

# 7.启动sersync
[root@nfs ~]# /application/sersync2.5.4/sersync2  -rdo /application/sersync2.5.4/confxml.xml

# 8.查看是否实时同步成功
[root@nfs ~]# cd /data/
[root@nfs data]# touch 1.txt
[root@backup ~]# cd /data/
[root@backup data]# ls
04_111.webp  04_333.webp  1.txt

以上是关于CentOS 备份实战的主要内容,如果未能解决你的问题,请参考以下文章

centos mysql 实战 第十三节课

centos mysql 实战 第三节课

rsync企业真实项目备份案例实战(需求收集--服务器配置---客户端配置---报警机制---数据校验---邮件告警) #yyds干货盘点#

Mysql/Mariadb备份(xtrabackup)还原实战

centos mysql 实战 优化 汇总

mysql全库备份/增量备份脚本