目录

1.环境描述

2.mysql数据库备份

2.1配置数据库备份脚本

2.2配置数据备份计划任务

3.配置rsync实时同步

3.1目标服务器配置

3.2源数据服务器配置

3.2.1安装rsync

3.2.2安装inotify

3.3执行同步命令并检查

1.环境描述

序号

主机名

主机IP

操作系统版本

数据库版本

1

owncloud

10.9.254.59

rockylinux8.6

MariaDB10.3.35

2

owncloudbak

10.9.254.60

rockylinux8.7

2.mysql数据库备份

2.1配置数据库备份脚本

[root@owncloud ~]# mkdir -p /var/www/owncloud/mysqlbak/script

[root@owncloud ~]# mkdir -p /var/www/owncloud/mysqlbak/databak

[root@owncloud ~]# vim /var/www/owncloud/mysqlbak/script/mysql_backup.sh

#!/bin/bash

#完成数据库的定时备份

#备份的路径 需要提前建好

BACKUP=/var/www/owncloud/mysqlbak/databak

#当前的时间作为文件名

DATETIME=$(date +%Y_%m_%d_%H%M%S)

#可以输出变量调试

#echo ${DATETIME}

echo "==========开始备份==========="

echo "备份的路径是 $BACKUP/$DATETIME.tar.gz"

#主机

HOST=localhost

#用户名

DB_USER=root

#密码

DB_PWD=P@88w0rd

#备份数据库名

DATABASE=owncloud

#创建备份的路径

#如果备份的路径文件夹存在就使用,否则创建

[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"

#执行mysql的备份数据库的指令

mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz

#打包备份文件

cd $BACKUP

tar -zcvf $DATETIME.tar.gz $DATETIME

#删除临时目录

rm -rf $BACKUP/$DATETIME

#删除7天前的备份文件(-exec rm -rf {} \是固定写法,删除查询出来的数据)

find $BACKUP -mtime +7 -name "*.tar.gz" -exec rm -rf {} \;

echo "==========备份完成==========="

#备份脚本截图如下:

[root@owncloud ~]# chmod +x /var/www/owncloud/mysqlbak/script/mysql_backup.sh

[root@owncloud ~]# sh /var/www/owncloud/mysqlbak/script/mysql_backup.sh

==========开始备份===========

备份的路径是 /var/www/owncloud/mysqlbak/databak/2025_02_25_110508.tar.gz

2025_02_25_110508/

2025_02_25_110508/2025_02_25_110508.sql.gz

==========备份完成===========

[root@owncloud ~]# ll /var/www/owncloud/mysqlbak/databak/

-rw-r--r-- 1 root root 7245458 Feb 25 11:05 2025_02_25_110508.tar.gz

2.2配置数据备份计划任务

[root@owncloud ~]# crontab -e

* 1 * * * /var/www/owncloud/mysqlbak/script/mysql_backup.sh

[root@owncloud ~]# systemctl enable crond --now

3.配置rsync实时同步

3.1目标服务器配置

[root@owncloudbak ~]# yum -y install rsync rsync-daemon

Installed:

rsync-3.1.3-20.el8_10.x86_64

Complete!

[root@owncloudbak ~]# mkdir -p /data/owncloud/10-9-254-59/owncloud

[root@owncloudbak ~]# ll /data/owncloud/

drwxr-xr-x 2 root root 6 Feb 25 13:40 10-9-254-59

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

uid = nobody

gid = nobody

use chroot = yes

max connections = 0

strict mode=yes

pid file = /var/run/rsyncd.pid

lock file=/var/run/rsync.lock

log file=/var/log/rsyncd.log

[10-9-254-59]

path = /data/owncloud/10-9-254-59/owncloud

comment = yunweibu

ignore errrors

read only=no

write only=no

hosts allow=10.9.254.59

hosts deny=*

list=false

uid=root

gid=root

auth users=rsync-owncloud

secrets file=/etc/rsync.password

[root@owncloudbak ~]# vim /etc/rsyncd.password

rsync-owncloud:P@88w0rd

[root@owncloudbak ~]# chmod 600 /etc/rsyncd.password

[root@owncloudbak ~]# systemctl restart rsyncd

[root@owncloudbak ~]# systemctl enable rsyncd

[root@owncloudbak ~]# ss -autnpl | grep rsync

tcp LISTEN 0 5 0.0.0.0:873 0.0.0.0:* users:(("rsync",pid=408392,fd=4))

tcp LISTEN 0 5 [::]:873 [::]:* users:(("rsync",pid=408392,fd=5))

如果有防火墙开放873端口

[root@owncloudbak ~]# firewall-cmd --add-port=873/tcp --permanent --zone=public

success

[root@owncloudbak ~]# firewall-cmd --reload

success

3.2源数据服务器配置

3.2.1安装rsync

[root@owncloud ~]# yum -y install rsync rsync-daemon

[root@owncloud ~]# vim /etc/rsync.password

P@88w0rd

[root@owncloud ~]# chmod 600 /etc/rsync.password

[root@owncloud ~]# systemctl restart rsyncd

[root@owncloud ~]# systemctl enable rsyncd

如果有防火墙开放873端口

[root@owncloudbak ~]# firewall-cmd --add-port=873/tcp --permanent --zone=public

success

[root@owncloudbak ~]# firewall-cmd --reload

success

测试同步

[root@owncloud ~]# rsync -avH --port 873 --delete /var/www/owncloud/ rsync-owncloud@10.9.254.60::10-9-254-59 --password-file=/etc/rsync.password

等待文件同步完成

3.2.2安装inotify

max_queued_events:inotify事件队列最大长度,如值太小会出现Event Queue Overflow错误,默认值16384,生产环境建议调大,比如:327679

max_user_instances:每个用户创建inotify实例最大值,默认值:128

max_user_watches:可以监视的文件的总数量(inotifywait单进程),默认值:8192,建议调大

[root@owncloud ~]# ls /proc/sys/fs/inotify/

max_queued_events max_user_instances max_user_watches

#显示以上三个文件则表明支持inotify

[root@owncloud ~]# echo 1000000 > /proc/sys/fs/inotify/max_queued_events

[root@owncloud ~]# cat /proc/sys/fs/inotify/max_queued_events

1000000

[root@owncloud ~]# vim /etc/sysctl.conf

fs.inotify.max_queued_events=66666

fs.inotify.max_user_watches=100000

[root@owncloud ~]# sysctl -p

fs.inotify.max_queued_events = 66666

fs.inotify.max_user_watches=100000

[root@owncloud ~]# cat /proc/sys/fs/inotify/max_queued_events

66666

[root@owncloud ~]# cat /proc/sys/fs/inotify/max_user_watches

100000

[root@owncloud ~]# uname -a

Linux owncloud 4.18.0-372.26.1.el8_6.x86_64 #1 SMP Tue Sep 13 18:09:48 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

[root@owncloud ~]# grep -i inotify /boot/config-4.18.0-372.26.1.el8_6.x86_64

CONFIG_INOTIFY_USER=y

[root@owncloud ~]# yum search inotify-tools

Last metadata expiration check: 0:28:13 ago on Tue 25 Feb 2025 02:25:05 PM CST.

============================================================ Name Exactly Matched: inotify-tools ============================================================

inotify-tools.x86_64 : Command line utilities for inotify

================================================================ Name Matched: inotify-tools ================================================================

inotify-tools-devel.x86_64 : Headers and libraries for building apps that use libinotifytools

[root@owncloud ~]# yum -y install inotify-tools inotify-tools-devel

Installed:

inotify-tools-3.14-19.el8.x86_64 inotify-tools-devel-3.14-19.el8.x86_64

Complete!

[root@owncloud /]# mkdir /scripts && vim /scripts/inotifyrsync.sh

#!/bin/bash

# Defined parameter

#目标服务器的ip地址

host01=10.9.254.60

#本地监控的目录

src=/var/www/owncloud

#目标服务器的rsync模块名

dst01=10-9-254-59

#目标服务器的rsync服务的虚拟用户

user01=rsync-owncloud

#本地调用的rsync服务的密码文件

rsync_passfile01=/etc/rsync.password

/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib $src \

| while read files

do

/usr/bin/rsync -vzrtopg --delete --progress --password-file=$rsync_passfile01 $src $user01@$host01::$dst01 > /dev/null 2>&1

echo "${files} was rsynced." >> /tmp/rsync.log 2>&1

done

#脚本截图如下:

[root@owncloud /]# chmod 755 /scripts/inotifyrsync.sh

3.3执行同步命令并检查

源数据服务器执行

[root@owncloud /]# /scripts/inotifyrsync.sh &

[root@owncloud ~]# vim /etc/rc.local

touch /var/lock/subsys/local

/scripts/inotifyrsync.sh &

手动在源数据服务器创建文件,查看目标服务器上是否实时同步。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐