owncloud-基于rockylinux8数据库备份和文件同步备份

owncloud-基于rockylinux8数据库备份和文件同步备份 目录1.环境描述2.mysql数据库备份2.1配置数据库备份脚本2.2配置数据备份计划任务3.配置rsync实时同步3.1目标服务器配置3.2源数据服务器配置3.2.1安装rsync3.2.2安装inotify3.3执行同步命令并检查1.环境描述序号主机名主机IP操作系统版本数据库版本1owncloud10.9.254.59rockylinux8.6MariaDB10.3.352owncloudbak10.9.254.60rockylinux8.72.mysql数据库备份2.1配置数据库备份脚本[rootowncloud ~]# mkdir -p /var/www/owncloud/mysqlbak/script[rootowncloud ~]# mkdir -p /var/www/owncloud/mysqlbak/databak[rootowncloud ~]# 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#主机HOSTlocalhost#用户名DB_USERroot#密码DB_PWDP88w0rd#备份数据库名DATABASEowncloud#创建备份的路径#如果备份的路径文件夹存在就使用否则创建[ ! -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 $BACKUPtar -zcvf $DATETIME.tar.gz $DATETIME#删除临时目录rm -rf $BACKUP/$DATETIME#删除7天前的备份文件(-exec rm -rf {} \是固定写法删除查询出来的数据)find $BACKUP -mtime 7 -name *.tar.gz -exec rm -rf {} \;echo 备份完成#备份脚本截图如下[rootowncloud ~]# chmod x /var/www/owncloud/mysqlbak/script/mysql_backup.sh[rootowncloud ~]# sh /var/www/owncloud/mysqlbak/script/mysql_backup.sh开始备份备份的路径是 /var/www/owncloud/mysqlbak/databak/2025_02_25_110508.tar.gz2025_02_25_110508/2025_02_25_110508/2025_02_25_110508.sql.gz备份完成[rootowncloud ~]# ll /var/www/owncloud/mysqlbak/databak/-rw-r--r-- 1 root root 7245458 Feb 25 11:05 2025_02_25_110508.tar.gz2.2配置数据备份计划任务[rootowncloud ~]# crontab -e* 1 * * * /var/www/owncloud/mysqlbak/script/mysql_backup.sh[rootowncloud ~]# systemctl enable crond --now3.配置rsync实时同步3.1目标服务器配置[rootowncloudbak ~]# yum -y install rsync rsync-daemonInstalled:rsync-3.1.3-20.el8_10.x86_64Complete![rootowncloudbak ~]# mkdir -p /data/owncloud/10-9-254-59/owncloud[rootowncloudbak ~]# ll /data/owncloud/drwxr-xr-x 2 root root 6 Feb 25 13:40 10-9-254-59[rootowncloudbak ~]# vim /etc/rsyncd.confuid nobodygid nobodyuse chroot yesmax connections 0strict modeyespid file /var/run/rsyncd.pidlock file/var/run/rsync.locklog file/var/log/rsyncd.log[10-9-254-59]path /data/owncloud/10-9-254-59/owncloudcomment yunweibuignore errrorsread onlynowrite onlynohosts allow10.9.254.59hosts deny*listfalseuidrootgidrootauth usersrsync-owncloudsecrets file/etc/rsync.password[rootowncloudbak ~]# vim /etc/rsyncd.passwordrsync-owncloud:P88w0rd[rootowncloudbak ~]# chmod 600 /etc/rsyncd.password[rootowncloudbak ~]# systemctl restart rsyncd[rootowncloudbak ~]# systemctl enable rsyncd[rootowncloudbak ~]# ss -autnpl | grep rsynctcp LISTEN 0 5 0.0.0.0:873 0.0.0.0:* users:((rsync,pid408392,fd4))tcp LISTEN 0 5 [::]:873 [::]:* users:((rsync,pid408392,fd5))如果有防火墙开放873端口[rootowncloudbak ~]# firewall-cmd --add-port873/tcp --permanent --zonepublicsuccess[rootowncloudbak ~]# firewall-cmd --reloadsuccess3.2源数据服务器配置3.2.1安装rsync[rootowncloud ~]# yum -y install rsync rsync-daemon[rootowncloud ~]# vim /etc/rsync.passwordP88w0rd[rootowncloud ~]# chmod 600 /etc/rsync.password[rootowncloud ~]# systemctl restart rsyncd[rootowncloud ~]# systemctl enable rsyncd如果有防火墙开放873端口[rootowncloudbak ~]# firewall-cmd --add-port873/tcp --permanent --zonepublicsuccess[rootowncloudbak ~]# firewall-cmd --reloadsuccess测试同步[rootowncloud ~]# rsync -avH --port 873 --delete /var/www/owncloud/ rsync-owncloud10.9.254.60::10-9-254-59 --password-file/etc/rsync.password等待文件同步完成3.2.2安装inotifymax_queued_eventsinotify事件队列最大长度如值太小会出现Event Queue Overflow错误默认值16384生产环境建议调大比如327679max_user_instances每个用户创建inotify实例最大值默认值128max_user_watches可以监视的文件的总数量inotifywait单进程默认值8192建议调大[rootowncloud ~]# ls /proc/sys/fs/inotify/max_queued_events max_user_instances max_user_watches#显示以上三个文件则表明支持inotify[rootowncloud ~]# echo 1000000 /proc/sys/fs/inotify/max_queued_events[rootowncloud ~]# cat /proc/sys/fs/inotify/max_queued_events1000000[rootowncloud ~]# vim /etc/sysctl.conffs.inotify.max_queued_events66666fs.inotify.max_user_watches100000[rootowncloud ~]# sysctl -pfs.inotify.max_queued_events 66666fs.inotify.max_user_watches100000[rootowncloud ~]# cat /proc/sys/fs/inotify/max_queued_events66666[rootowncloud ~]# cat /proc/sys/fs/inotify/max_user_watches100000[rootowncloud ~]# uname -aLinux 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[rootowncloud ~]# grep -i inotify /boot/config-4.18.0-372.26.1.el8_6.x86_64CONFIG_INOTIFY_USERy[rootowncloud ~]# yum search inotify-toolsLast 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[rootowncloud ~]# yum -y install inotify-tools inotify-tools-develInstalled:inotify-tools-3.14-19.el8.x86_64 inotify-tools-devel-3.14-19.el8.x86_64Complete![rootowncloud /]# mkdir /scripts vim /scripts/inotifyrsync.sh#!/bin/bash# Defined parameter#目标服务器的ip地址host0110.9.254.60#本地监控的目录src/var/www/owncloud#目标服务器的rsync模块名dst0110-9-254-59#目标服务器的rsync服务的虚拟用户user01rsync-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 filesdo/usr/bin/rsync -vzrtopg --delete --progress --password-file$rsync_passfile01 $src $user01$host01::$dst01 /dev/null 21echo ${files} was rsynced. /tmp/rsync.log 21done#脚本截图如下[rootowncloud /]# chmod 755 /scripts/inotifyrsync.sh3.3执行同步命令并检查源数据服务器执行[rootowncloud /]# /scripts/inotifyrsync.sh [rootowncloud ~]# vim /etc/rc.localtouch /var/lock/subsys/local/scripts/inotifyrsync.sh 手动在源数据服务器创建文件查看目标服务器上是否实时同步。