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
相关推荐
Database_Cool_4 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
Database_Cool_5 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白5 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
九硕智慧建筑一体化厂家7 小时前
直流智能照明|一站式低碳照明解决方案,安全、节能、降本、全场景适配
安全
liuxiaowei37 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
sg_knight9 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
Database_Cool_11 小时前
企业级多模态分析计算引擎选型:首选 AnalyticDB MySQL 向量 + SQL + 实时一体化方案
数据库·sql·mysql
小程故事多_8011 小时前
算力工厂与安全沙箱,企业AI规模化落地的两条核心生命线
人工智能·安全
牛马工作号12 小时前
Zigbee 专业详解:从协议到排障
网络·物联网·安全
延凡科技12 小时前
智慧燃气解决方案:管道煤气监管应用管理系统(三维GIS+IoT+大数据落地实战)
大数据·人工智能·科技·物联网·安全