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
相关推荐
F_D_Z15 小时前
【SQL】指定日期的产品价格
数据库·sql·mysql
程序员在线炒粉8元1份顺丰包邮送可乐15 小时前
Docker 部署生产环境可用的 MySQL 主从架构
mysql·docker·架构
麦聪聊数据16 小时前
如何使用 QuickAPI 快速连接 MySQL 数据库并发布 RESTful API
数据库·sql·mysql·restful·数据服务
李白你好16 小时前
这是一个用于扫描Zabbix系统中常见漏洞的工具,提供了图形界面(GUI)和命令行(CLI)两种使用方式。
网络·安全·zabbix
Run Freely93718 小时前
MySQL 数据库_01
数据库·mysql
缘友一世18 小时前
Model Context Protocol (MCP) 安全风险与攻击方式解析
安全·llm·mcp
Dest1ny-安全18 小时前
Dest1ny安全漫谈-如何做好一个安全项目
安全
小朋友,你是否有很多问号?18 小时前
mac本地安装mysql
数据库·mysql
斯普信专业组18 小时前
MySQL主从同步参数调优案例
mysql·主从
00后程序员张20 小时前
iOS App 混淆与资源保护:iOS配置文件加密、ipa文件安全、代码与多媒体资源防护全流程指南
android·安全·ios·小程序·uni-app·cocoa·iphone