Mysql8异地定时自动备份

目录

一、前言

此处假设有两台服务器,A服务器上安装了mysql服务,B服务器则为异地服务器。

目的:将A服务器上的mysql数据,异地备份到B服务器上存储。
注:下述所有操作都是在B服务器上执行


二、安装mysql

安装mysql8客户端

bash 复制代码
[root@VM-4-12-centos ~]# sudo rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el7-8.noarch.rpm
[root@VM-4-12-centos ~]# sudo yum install mysql-community-client --nogpgcheck -y
[root@VM-4-12-centos ~]# mysqldump --version
mysqldump  Ver 8.0.40 for Linux on x86_64 (MySQL Community Server - GPL)

测试备份数据

bash 复制代码
[root@VM-4-12-centos ~] mkdir -p /data/mysql_bak && cd /data/mysql_bak
[root@VM-4-12-centos mysql_bak] mysqldump -h ip地址 -P 端口号 -u 用户名 -p密码 --databases 备份数据库名 > ./backup.sql

-h A服务器的IP地址:指定MySQL服务器的位置,即A服务器的IP地址。
-P 端口号:指定MySQL服务器的连接端口号。
-u MySQL用户名:指定用于连接MySQL的用户名。
-pMySQL密码:指定该用户的密码。为了安全起见,通常不建议直接在命令行中写明密码,而是运行命令后手动输入密码。
--databases 需要备份的数据库名:指定要备份的数据库名称。如果你要备份所有数据库,可以使用--all-databases代替。
> /路径/到/保存/备份文件.sql:指定备份文件的保存位置及文件名。


三、编写shell脚本

bash 复制代码
[root@VM-4-12-centos mysql_bak] vim backup.sh
[root@VM-4-12-centos mysql_bak] chmod +x backup.sh
[root@VM-4-12-centos mysql_bak] sh backup.sh

backup.sh内容

bash 复制代码
#!/bin/bash

# 数据库连接信息
host="ip地址"
port="端口号"
name="用户名"
password="用户密码"
database="数据库名"

# 备份信息
backup_dir="/data/mysql_bak/$database"
backup_time=$(date +"%F_%H-%M-%S")
backup_name="${backup_dir}/${backup_time}"

# 执行备份
echo "【开始备份】数据库:${database},位置:${backup_name}.sql"
mkdir -p "$backup_dir"
/usr/bin/mysqldump -h $host -P $port -u $name -p$password --databases $database > ${backup_name}.sql 2>/dev/null
if [ $? -eq 0 ]; then
    echo "【备份完成】数据库:${database},位置:${backup_name}.sql"
else
    echo "【备份失败】数据库:${database}"
    exit 1
fi

# 压缩备份文件
echo "【开始压缩】源文件:${backup_name}.sql"
/usr/bin/tar zcf ${backup_name}.tar.gz ${backup_name}.sql --remove &> /dev/null
if [ $? -eq 0 ]; then
    echo "【压缩完成】文件:${backup_name}.tar.gz"
else
    echo "【压缩失败】文件:${backup_name}.sql"
    exit 1
fi

# 删除30天以前的备份
find "${backup_dir}" -type f -name "*.tar.gz" -mtime +30 -exec rm -f {} \;
echo "执行完成~"

四、定时任务

设置为每天凌晨3点30分执行一次备份

添加定时任务

bash 复制代码
[root@VM-4-12-centos mysql_bak]# crontab -e

# 追加如下内容
30 3 * * * /data/mysql_bak/backup.sh
bash 复制代码
# 查看定时任务列表
[root@VM-4-12-centos mysql_bak]# crontab -l
30 3 * * * /data/mysql_bak/backup.sh
# 查看定时任务日志
[root@VM-4-12-centos mysql_bak]# tail -f /var/log/cron
# 重启crond服务使定时任务生效
[root@VM-4-12-centos mysql_bak]# systemctl restart crond
相关推荐
三垣网安2 小时前
一次学校系统水平越权漏洞的实战测试记录
安全
蓝速科技5 小时前
蓝速科技信创落地:平衡安全合规与项目成本的实战方案
android·运维·人工智能·科技·安全·电脑·鸿蒙
RAOY的AI笔记7 小时前
ChatGPT账号安全设置教程:MFA、活跃会话、数据导出与异常登录处理
人工智能·安全·chatgpt
其实防守也摸鱼8 小时前
接口审计:从原理到实践的万字深度指南
数据库·安全·自动化·github·copilot
磐链科技10 小时前
中心化钱包开发中的账户安全模型:Vitalik最新社交恢复构想解读
安全·区块链
IT小白杨11 小时前
当MCP遇上指纹浏览器:AI自然语言驱动隔离环境的实践思路
人工智能·经验分享·selenium·安全·业界资讯·指纹浏览器
菀亓12 小时前
ubuntu系统mysql安装
mysql
程序员贺加贝12 小时前
别被 saveBatch 骗了:一次 MyBatis-Plus 批量插入性能排查
mysql
l12586512 小时前
# RAG上线评估指标体系:六大核心指标与压测实战全解析
数据库·人工智能·python·mysql·langchain·milvus
我命由我1234512 小时前
人脸识别 - 人脸识别选帧
java·人工智能·python·算法·安全·java-ee·人脸识别