centos实现mysql定时备份(单机)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: centos实现mysql定时备份(单机)

centos实现mysql定时备份(单机)

创建备份脚本:

首先,我们需要创建一个 Shell 脚本来执行 MySQL 数据库的备份操作。我们可以将备份脚本命名为 backup_mysql.sh。以下是 backup_mysql.sh 的内容:

#!/bin/bash
# 数据库连接信息
DB_HOST="localhost"
DB_USER="root"
DB_PASS="123456"
DB_NAME="ceshi"
DB_PORT="3341"
# 备份目录
BACKUP_DIR="/home/mysql/back"
# 备份文件名,包含日期和时间
BACKUP_FILE="${BACKUP_DIR}/backup_$(date +'%Y%m%d_%H%M%S').sql"
# mysqldump 命令,备份数据库到指定文件
/usr/bin/mysqldump --opt --single-transaction --default-character-set=utf8 --skip-extended-insert -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE
# 删除过期备份文件,只保留最近 30 天的备份
find $BACKUP_DIR -type f -name "backup_*.sql" -mtime +30 -exec rm {} \;

参数说明

说明一下上面的参数

  • 如果你的mysql端口是3306,那么就可以不指定端口,因为默认就是3306,这里之所以这么写为了安全
  • 使用whereis mysqldump来获取你的mysqldump,一般是在/usr/bin/mysqldump
  • --opt:如果有这个参数表示同时激活了mysqldump命令的quick,add-drop-table,add-locks,extended-insert,lock-tables参数,它可以给出很快的转储操作并产生一个可以很快装入MySQL服务器的转储文件。当备份大表时,这个参数可以防止占用过多内存
  • --single-transaction 设置事务的隔离级别为可重复读,然后备份的时候开启事务,这样能保证在一个事务中所有相同的查询读取到同样的数据。注意,这个参数只对支持事务的引擎有效,如果有 MyISAM 的数据表,并不能保证数据一致性
  • 这里如果你导出的不是上面的表,而是全表可以替换为参数-A
  • --skip-extended-insert 默认情况下,mysqldump 命令在导出 SQL 文件时会将多个 INSERT 语句合并成一批进行导出,以提高导入性能。如果你希望将每个 INSERT 语句单独导出,即一条一条导出,可以使用 --skip-extended-insert 参数来实现。使用 --skip-extended-insert 参数后,mysqldump 会将每个 INSERT 语句单独导出,而不会合并为一批。这样导出的 SQL 文件会比较大,但可以确保每条数据都以单独的 INSERT 语句形式保存,方便阅读和处理。

对于上面的- --skip-extended-insert如果没加的话,导出的sql文件是相对较小的,但是如果某一个表中的数据过大,在Navicat中导入就会报错ERR] 2006 - Server has gone away,解决办法就是如将wait_timeoutmax_allowed_packet设置大一点

定时任务实现

  • 确定脚本位于什么位置下:到达脚本位置,执行pwd命令
  • 执行以下命令
crontab -e
  • 编写定时任务命令
0 0 * * * /bin/bash /path/to/backup_mysql.sh

这将在每天的 00:00 执行我们之前创建的 backup_mysql.sh 脚本,并实现自动备份数据库。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL Linux
centos7.0环境下安装MySql_8.0.12
centos7.0环境下安装MySql_8.0.12
|
2月前
|
SQL 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
192 7
|
2月前
|
关系型数据库 MySQL Linux
CentOS7环境下安装MySQL5.6
CentOS7环境下安装MySQL5.6
196 0
|
14天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
17 0
|
1月前
|
分布式计算 关系型数据库 MySQL
Sqoop【部署 01】CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
【2月更文挑战第8天】Sqoop CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
97 1
|
7天前
|
关系型数据库 MySQL Linux
centos7安装mysql-带网盘安装包
centos7安装mysql-带网盘安装包
44 2
|
14天前
|
SQL 存储 关系型数据库
mysql数据库备份与恢复
mysql数据库备份与恢复
|
14天前
|
关系型数据库 MySQL Linux
CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解
CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解
68 0
|
存储 关系型数据库 MySQL
【MYSQL】—— MySQL 在 Centos 7环境安装
【MYSQL】—— MySQL 在 Centos 7环境安装
|
1月前
|
关系型数据库 MySQL Linux
【VMware安装+centos 7Linux系统+MySQL安装】——在Linux系统中安装MySQL步骤,以及遇见的各种问题(如:vm两个虚拟网卡消失、vm网络适配器有感叹号等等)
【VMware安装+centos 7Linux系统+MySQL安装】——在Linux系统中安装MySQL步骤,以及遇见的各种问题(如:vm两个虚拟网卡消失、vm网络适配器有感叹号等等)
181 0