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

Ubuntu Server 20.04 64bit定时备份MySQL8.0.36数据库数据

一、编写sh脚本

常见备份命令介绍

我选用的是mysqldump命令,命令使用简介

[root@]> mysqldump -help

Usage: mysqldump [OPTIONS] database_name [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
1.登录选项:
    -u user:指定用户
    -h host:指定主机
    -p:表示要使用密码
    -E, --events: 备份事件调度器
    -R, --routines: 备份存储过程和存储函数
2.备份选项:
    --all-databases:备份所有数据库
    --databases db1 db2:备份指定的数据库
    --single-transaction:对事务引擎执行热备
    --flush-logs:更新二进制日志文件
    --master-data=2
        1:每备份一个库就生成一个新的二进制文件(默认)
        2:只生成一个新的二进制文件
    --quick:在备份大表时指定该选项

备份脚本示例

#!/bin/bash
#NAME:数据库备份
#DATE:20240927
#USER:QC班长

# 备份选项:
#     --all-databases:备份所有数据库
#     --databases db1 db2:备份指定的数据库
#     --single-transaction:对事务引擎执行热备
#     --flush-logs:更新二进制日志文件
#     --master-data=2
#         1:每备份一个库就生成一个新的二进制文件(默认)
#         2:只生成一个新的二进制文件
#     --quick:在备份大表时指定该选项

echo "==========MySQL数据库开始备份==========="

# MySQL数据库服务器地址
HOST="192.168.140.3"

# MySQL用户名
USER="root"

# MySQL密码
PASSWORD="QC20240927"

# 备份目录路径
BACKUP_DIR="/mnt/sdc/data/backup/mysql_database"

# 当前日期
DATE=$(date +%Y-%m-%d-%H-%M)

# 备份文件名
BACKUP_FILE="$BACKUP_DIR/all_databases_$DATE.sql"

#创建备份的路径
#如果备份的路径文件夹存在就使用,否则创建
[ ! -d "$BACKUP_DIR"  ]  && mkdir -p "$BACKUP_DIR" 

# 使用mysqldump命令备份所有数据库SQL文件并指定目录
mysqldump --all-databases --single-transaction -h$HOST -u$USER -p$PASSWORD  > $BACKUP_FILE

# 如果需要压缩备份文件,可以取消下面的注释
# gzip $BACKUP_FILE

# 删除30天前的备份文件,取消注释以下行以启用
find $BACKUP_DIR -name "all_databases_*.sql*" -type f -mtime +30 -delete
[ $? -eq 0 ] && echo "-----------------数据备份成功 $DATE-----------------" || echo "-----------------数据备份失败-----------------"

二、赋予脚本执行权限

把编写好的脚本上传到服务器,目录自己定,修改成你的就行,然后赋予刻执行权限

chmod +x /mnt/sdc/shell/mysql_backup.sh 

 

三、设置cron任务

修改系统自带的定时任务文件,编辑crontab文件来安排定时任务

#-e是执行创建定时任务命令
crontab -e

在打开的crontab文件中添加以下行来安排每天24点(即午夜)执行备份脚本:

0 0 * * * /mnt/sdc/shell/backup_database.sh
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----------星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------------月份 (1 - 12) 
|    |    +--------------------一个月中的第几天 (1 - 31)
|    +-------------------------小时 (0 - 23)
+------------------------------分钟 (0 - 59)

 

保存并关闭文件。

现在,cron将每天在指定的时间自动执行备份脚本,所有MySQL数据库都会被备份到指定的目录。

 

注意:

  • 确保MySQL服务器允许远程访问,如果脚本在远程服务器上运行。
  • 如果备份文件很大,考虑使用mysqldump--single-transaction选项来备份InnoDB表,以获得一致的备份而不锁定表。
  • 考虑使用mysqldump--master-data选项来记录二进制日志位置,这对于点时间恢复很有用。
  • 定期检查备份文件的可恢复性,并确保有足够的磁盘空间来存储备份。

四、参考文献

MYSQL数据备份之mysqldump命令详解(附脚本定时备份)-CSDN博客 

使用Shell脚本,实现备份MySQL数据库_sh mysql.sh-CSDN博客


http://www.kler.cn/news/328146.html

相关文章:

  • FFMPEG总结——底层调用COM导致编码器无法正常打开
  • 51单片机系列-串口(UART)通信技术
  • Java网络通信—UDP
  • Xshell7下载及服务器连接
  • 九、设备的分配与回收
  • 单片机的两种看门狗原理解析——IWDG和WWDG
  • 使用 Light Chaser 进行大屏数据可视化
  • onload_tcpdump命令抓包报错Onload stack [7,] already has tcpdump process
  • c语言基础作业
  • Java面试必杀技为什么面试官都爱问源码?
  • 苹果盛宴:iPhone 16系列领衔,智能穿戴新潮流来袭
  • OpenCV-指纹识别
  • Bert Score-文本相似性评估
  • Vxe UI vue 使用 vxe-form 表单实现简历模板
  • k8s 分布式存储平台 -- Longhorn
  • css的背景background属性
  • GLIP v1
  • 代码随想录算法训练营第四六天| 647. 回文子串 516.最长回文子序列
  • mfc140u.dll缺失?快速解决方法全解析,解决mfc140u.dll错误
  • Go语言中的深拷贝:概念、实现与局限
  • Rust安装
  • 笔记 - 高分辨率下部分软件应用字体太小
  • Ruby基础语法
  • 询盘鸭独立站
  • PHP 中,将 JSON 数据与二进制数据之间进行相互转化主要涉及两个步骤:
  • opencv实战项目二十七:基于meanshif的视频脸部跟踪
  • Java | Leetcode Java题解之第447题回旋镖的数量
  • 示波器如何测试晶振
  • Spring Boot 驱动的在线订餐平台
  • 快速选择算法--无序数组中寻找中位数 O(n)的算法及证明