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

news/2024/10/4 13:45:17/

一、编写sh脚本

常见备份命令介绍

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

[root@]> mysqldump -helpUsage: 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=21:每备份一个库就生成一个新的二进制文件(默认)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.ppmy.cn/news/1534438.html

相关文章

如何筛选网站有多少真实ip访问

筛选出访问网站的真实IP数量通常涉及多种技术和工具,目的是识别并区分真实用户与使用代理或虚假IP的访问者。以下是一些方法来帮助筛选和统计网站的真实IP访问: 1. 使用日志分析 访问日志:分析Web服务器的访问日志,记录每个请求的…

在Windows上安装Git

一、下载Git安装包 访问Git官网:首先,你需要访问Git的官方网站下载安装包:在官网页面上,找到并点击“Downloads”按钮,然后选择“Windows”系统对应的安装包进行下载。安装包通常以.exe格式提供 二、安装Git 双击运…

资源《Arduino UNO R3 proteus 仿真工程》说明。

资源链接: Arduino UNO R3 proteus 仿真工程 1.文件明细: 2.文件内容说明 包含:proteus工程、原理图、仿真程序。 3.内容展示 4.简述 该文件为proteus工程,用于Arduino uno r3仿真。 因为软件自动运行,所以最小…

计算机毕业设计 助农产品采购平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

MongoDB聚合操作及索引底层原理

目录 链接:https://note.youdao.com/ynoteshare/index.html?id=50fdb657a9b06950fa255a82555b44a6&type=note&_time=1727951783296 本节课的内容: 聚合操作: 聚合管道操作: ​编辑 $match 进行文档筛选 ​编辑 将筛选和投影结合使用: ​编辑 多条件匹配: …

基于Java+VUE+echarts大数据智能道路交通信息统计分析管理系统

大数据智能交通管理系统是一种基于Web的系统架构,通过浏览器/服务器(B/S)模式实现对城市交通数据的高效管理和智能化处理。该系统旨在通过集成各类交通数据,包括但不限于车辆信息、行驶记录、违章情况等,来提升城市管理…

linux下sudo执行的程序会有一个额外的进程的问题

当我们执行一个可执行文件时,有可能需要一些更高的权限,为此我们会用sudo ./test的方法执行,这时候我们通过ps aux | grep ./test去查看进程,会发现多出来一个 sudo ./test 的进程,该进程被杀死后,发现目标…

IvorySQL 3.4:如何实现兼容Oracle风格的序列功能?

1 什么是序列? 一个序列是一个数据库对象,与表和视图类似,它表示可以由全局数据库命名空间中的任何表和视图使用的整数序列。可以使用NEXTVAL和CURRVAL访问序列值。序列可以是升序或降序。 2 Oracle的序列相比PG多了什么? 支持…