Linux环境下MySQL跨平台异地定时备份策略

文章标题:

Linux系统下MySQL跨平台异地定时备份方案

文章内容: * 163,作为备份数据的服务器

  • 165,作为运行MySQL的服务器

  • 采用NFS文件共享方式

  • 基于ubuntu操作系统

  • 使用mysql8版本


首先确认服务器版本

通过执行以下命令来确认当前操作系统:

uname -a
或者
uname -r

经确认,使用的是ubuntu系统


安装nfs

nfs分为服务端(实际存储数据的服务器163)和客户端(数据存储接收方165)

服务端执行安装命令:

sudo apt update && sudo apt install nfs-kernel-server

客户端执行安装命令:

sudo apt update && sudo apt install nfs-common

安装过程中会有确认提示,需输入【Y】继续


创建和配置文件夹

服务端执行命令创建共享文件夹并设置权限:

sudo mkdir /shared
sudo chmod 777 /shared

编辑配置文件/etc/exports,添加共享规则,例如:

/shared 192.168.13.3/24(rw,sync,no_subtree_check,no_root_squash)

这里的ip为客户端的IP地址,可通过在客户端执行ip a查询。也可使用*号允许所有IP访问(安全性较低),示例:

/shared *(rw,sync,no_subtree_check,no_root_squash)

各参数含义:
* rw:具有读写权限。
* sync:数据同步写入磁盘。
* no_root_squash:允许客户端root用户保留权限(谨慎使用)。


启用

服务端执行以下命令启动并设置开机自启:

sudo systemctl start rpcbind nfs-server 
sudo systemctl enable rpcbind nfs-server

应用配置:

sudo exportfs -arv

客户端挂载共享文件夹

创建挂载目录:

sudo mkdir /nfs_shared/163

指定服务端的共享文件夹进行挂载:

sudo mount -t nfs 服务端IP:/shared /nfs_shared/163

这里的服务端IP可通过在服务端执行ip a获取

校验挂载情况:

df -h

mysql定时备份

进入运行MySQL的服务器(即客户端)进行操作

创建脚本

一般将脚本放在/usr/local/bin/mysql_backup.sh,可自定义位置。进入该目录:

cd /usr/local/bin/

创建脚本文件:

nano mysql_backup.sh

脚本内容如下(实现每天备份并删除超过7天的备份文件):

#!/bin/bash

# 检查NFS挂载点是否存在
if ! mountpoint -q "/nfs_shared/163"; then
    echo "Error: NFS not mounted. Attempting to remount..."
    mount /nfs_shared/163 || exit 1
fi

# 数据库连接凭据
DB_USER="用户名"
DB_PASSWORD="密码"
DB_NAME="数据库名称"

# 备份存储目录(使用共享的目录)
BACKUP_DIR="/nfs_shared/163/mysqlBackups"
DATE=$(date +"%Y%m%d%H%M%S")

# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 执行数据库备份并压缩
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql

# 删除超过7天的备份文件
find $BACKUP_DIR -type f -name "*.gz" -mtime +7 -exec rm {} \;

按ctrl+x退出编辑,按Y保存,按回车确认保存退出


赋予脚本执行权限

sudo chmod +x /usr/local/bin/mysql_backup.sh

设置cron定时任务

创建备份文件存储目录:

mkdir /nfs_shared/163/mysqlBackups/

使用crontab -e添加每天凌晨2点执行的备份任务:

crontab -e

打开编辑工具后,添加以下内容:

0 2 * * * /usr/local/bin/mysql_backup.sh >> /nfs_shared/163/mysqlBackups/mysql_backup.log 2>&1

查看root的定时任务:

sudo crontab -u root -l

测试

可手动执行脚本立即进行备份操作,同时在两台服务器中检查共享地址是否成功挂载,7天以上后查看备份文件是否被删除以验证过期文件清理功能是否正常。


end

版权声明:程序员胖胖胖虎阿 发表于 2025年8月5日 上午7:26。
转载请注明:Linux环境下MySQL跨平台异地定时备份策略 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...