当前位置: 首页 > news >正文

异地服务器备份Mysql数据

前言

        异地服务器备份Mysql数据即Mysql的server端与备份服务器不是同一个。Mysql服务端安装在192.168.3.36中,现在需要在IP为192.168.209.129的服务器中使用mysqldump命令备份指定数据库数据;192.168.209.129没有装过Mysql客户端;

1.安装Mysql客户端

        不安装Mysql客户端就使用不了mysqldump命令

Ubuntu/Debian: sudo apt-get install mysql-client

2.创建用于备份数据的Mysql用户

#创建用户backupUser 密码 123456
CREATE USER backupUser IDENTIFIED BY '123456';
#把所有权限赋予backupUser
GRANT SELECT,PROCESS,REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'backupUser'@'%';
#刷新权限
flush privileges

3.创建数据备份脚本

创建脚本文件

touch mysql_backup.sh

脚本文件内容 

#!/bin/bash
# MySQL数据库备份脚本# 配置参数
DB_USER="backupUser"         # 数据库用户名(不建议直接写到备份脚本文件中)
DB_PASSWORD="123456"     # 数据库密码(不建议直接写到备份脚本文件中)
# 要备份的数据库名(多个数据库用空格分隔)
DB_NAMES=("heima" "finereport")
DB_IP="192.168.3.36"
DB_PORT="3306"
BACKUP_DIR="/home/software/mysqlbackups/data"    # 备份文件存储目录
BACKUP_LOG_DIR="/home/software/mysqlbackups/logs"    # 备份日志存储目录
DATE=$(date +"%Y%m%d_%H%M%S")   # 当前日期时间
DAYS_TO_KEEP=3                  # 保留最近多少天的备份# 创建备份目录(如果不存在)
mkdir -p ${BACKUP_DIR}
# 创建备份日志目录(如果不存在)
mkdir -p ${BACKUP_LOG_DIR}for DB_NAME in "${DB_NAMES[@]}"
do# 备份文件名BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql"# 使用mysqldump备份数据库# 如果是多个数据库 这里备份 heima finereport这两个数据库。多个数据库间使用空格分隔# --single-transaction: 对 InnoDB 表进行一致性备份# --routines: 包含存储过程和函数# --events: 包含事件# --triggers: 包含触发器mysqldump -h${DB_IP} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWORD} --single-transaction --routines --triggers --databases ${DB_NAME} > ${BACKUP_FILE}# 压缩备份文件(可选)gzip ${BACKUP_FILE}BACKUP_FILE="${BACKUP_FILE}.gz"# 检查备份是否成功(记录日志)if [ $? -eq 0 ]; thenecho "[${DATE}] 数据库备份成功: ${BACKUP_FILE}" >> ${BACKUP_LOG_DIR}/mysqldump.logelseecho "[${DATE}] 数据库备份失败!" >> ${BACKUP_LOG_DIR}/mysqldump.logfi# 删除旧备份(不管备份成功或失败都会执行删除以前备份旧数据)find ${BACKUP_DIR} -name "${DB_NAME}_*.sql.gz" -type f -mtime +${DAYS_TO_KEEP} -delete
done

4.为脚本文件赋予可执行权限

chmod 647 mysql_backup.sh

5.执行脚本文件查看效果

1.执行脚本

./mysql_backup.sh

2.查看备份执行日志

vim /home/software/mysqlbackups/logs/mysqldump.log

3.查看数据备份文件

库finereport备份文件

vim /home/software/mysqlbackups/data/finereport_20250722_145713.sql.gz

库heima备份文件

vim /home/software/mysqlbackups/data/heima_20250722_145713.sql.gz

        至此定义的脚本文件已具备备份数据库的能力。现需要和Linux系统中自带的定时任务结合起来用于定时做数据库备份;

6.配置Cron定时任务

1.打开crontab编辑器

crontab -e

2.添加以下调度任务(二选一)

        每分钟执行一次调度(用于测试调度是否生效)

# 用于测试调度是否生效(每分钟执行一次调度 进行数据库备份)

* * * * * /home/software/mysqlbackups/mysql_backup.sh

         每天凌晨2点执行一次调度

# 每天凌晨2点执行一次调度

0 2 * * * /home/software/mysqlbackups/mysql_backup.sh

 3.退出crontab编辑器

ctrl + x退出crontab编辑器,保存退出后调度自行生效;

4.验证调度是否生效

        已配置Linux定时调度查看数据库备份日志是否间隔1分钟左右输出一次日志即可;

备份日志间隔1分钟左右输出一次

数据文件也是间隔1分钟左右生成一个

        至此使用mysqldump命令定时备份数据库数据已完成,需要注意的是合理设置数据库备份时间因为在生产数据库中数据量都很大。在选择备份时一般选择到凌晨、数据库访问压力小的时间去做数据备份;

http://www.dtcms.com/a/291737.html

相关文章:

  • 电子电气架构 --- 从软件质量看组织转型路径
  • 基于Patroni实现PostgreSQL数据库高可用
  • postgresql使用记录 SCRAM authentication requires libpq version 10 or above
  • Nginx防盗链和Keepalived
  • VirtualBox安装提示security安全问题
  • 【coze扣子】第1篇:coze快速入门
  • 消息队列学习
  • 3.4 安全-分布式-数据库-挖掘
  • LNMP平台部署
  • 【uboot/kernel1】启动流程,环境变量,内存,initramfs
  • 【大模型记忆实战Demo】基于SpringAIAlibaba通过内存和Redis两种方式实现多轮记忆对话
  • 本地代理和服务器代理区别
  • 【AI时代速通QT】第五节:Qt Creator如何引入第三方库,以OpenCV为例
  • 深入解析MIPI C-PHY (三)C-PHY 功耗屠龙刀
  • FunASR 说话人识别 Xvector 环境版本配置
  • 一文读懂深度模型优化器,掌握炼丹工具
  • 【数学建模】基础知识
  • FTP考点
  • SparkSQL 聚合函数 COUNT 对 NULL 值的处理
  • css3地球转动模型(动态数据)
  • RxSwift 核心解析
  • 生成式AI導論 2024】第9講:以大型語言模型打造的AI Agent 学习记录
  • Nacos 注册中心高频面试题及解析
  • v0+claude+cursor构建初始脚手架
  • ADA4522-2ARMZ-R7 ADI亚德诺 双通道零漂移运算放大器 工业高精度测试设备应用
  • 您需要了解的有关 GIS 中基于位置和基于属性的查询的所有信息
  • [pdf epub]《软件方法》电子书202507更新下载
  • thinkphp入门
  • 企业级IIS配置手册:安全加固/负载均衡/性能优化最佳实践
  • C++性能优化擂台技术文章大纲