使用shell脚本每天对MySQL多个数据库自动备份的讲解

下面是使用 shell 脚本每天对 MySQL 多个数据库自动备份的攻略。

1. 环境准备

在开始之前,我们需要确保以下条件已经具备:
1. 服务器上安装了 MySQL 数据库;
2. 已经编写好了备份脚本;
3. 服务器上安装了 crontab 定时任务服务。

2. 编写备份脚本

备份脚本需要包含以下内容:
1. 备份文件的保存路径;
2. 备份引擎的选择;
3. 备份多个数据库。

以下是一个简单的备份脚本示例:

#!/bin/bash

# 备份文件的保存路径
BACKUP_DIR="/usr/local/mysql/backup"

# 备份引擎选择,可以是 mysqldump 或者 mydumper
BACKUP_ENGINE="mysqldump"

# 备份多个数据库
DATABASE_NAMES=("db1" "db2" "db3")

# 循环备份每个数据库
for DATABASE_NAME in ${DATABASE_NAMES[@]}
do
    CURRENT_TIME=$(date +%Y%m%d%H%M%S)
    BACKUP_FILE="${DATABASE_NAME}-${BACKUP_ENGINE}-${CURRENT_TIME}.sql.gz"
    if [ "${BACKUP_ENGINE}" == "mysqldump" ]; then
        mysqldump -u root -pPASSWORD --single-transaction --flush-logs --master-data=2 ${DATABASE_NAME} | gzip -c > ${BACKUP_DIR}/${BACKUP_FILE}
    else
        mydumper -u root -pPASSWORD -B ${DATABASE_NAME} -o ${BACKUP_DIR} -c
    fi
done

备份脚本中定义了三个变量:备份文件的保存路径、备份引擎、需要备份的数据库名称列表。接下来的循环代码会对每一个数据库使用指定引擎进行备份,备份文件的名称格式为“数据库名称-备份引擎-备份时间.sql.gz”。

3. 设置定时任务

通过设置 crontab 定时任务能够使备份脚本每天定时运行,但是在设置之前我们需要确保以下条件已经具备:
1. 脚本具有执行权限;
2. 脚本能够在服务器上被访问。

打开终端,输入以下命令,编辑 crontab 定时任务表:

crontab -e

在打开的编辑器中添加以下内容,表示每天晚上 11 点运行备份脚本:

0 23 * * * /bin/bash /path/to/backup_script.sh

其中,“/path/to/backup_script.sh”是指备份脚本所在的路径。

4. 备份恢复

我们可以使用以下命令来还原一个备份文件到 MySQL 数据库:

gunzip < backup_file.sql.gz | mysql -u root -pPASSWORD database_name

其中,“backup_file.sql.gz”是指备份文件的名称,后面跟着“gunzip”解压缩命令和“mysql”命令将备份还原到指定数据库中。

以上就是使用 shell 脚本每天对 MySQL 多个数据库自动备份的攻略和用法示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用shell脚本每天对MySQL多个数据库自动备份的讲解 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 让Redis突破内存大小的限制

    Redis虽然可以实现持久化存储,也是基于数据内存模型的基础之上,单机内存大小限制着Redis存储的数据量,有没有一种替代方案呢?本文介绍一款笔者使用的采用New BSD License 许可协议的软件——SSDB。 官网地址:http://ssdb.io/zh_cn/ SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库, 支持 KV, li…

    Redis 2023年4月12日
    00
  • docker部署xxl-job-admin出现数据库拒绝问题及解决方法

    首先我们需要了解什么是xxl-job-admin以及Docker。xxl-job-admin是一款轻量级分布式任务调度平台,可以实现任务的自动调度和执行管理等功能。Docker是一种容器化技术,可以快速构建、部署、升级应用,提高开发和生产的效率。 在使用Docker部署xxl-job-admin时,可能会出现数据库拒绝连接的问题,这是因为xxl-job-ad…

    database 2023年5月18日
    00
  • SQL注入攻防入门详解 [图文并茂] 附示例下载

    SQL注入是一种针对数据库应用程序的攻击手段,通过注入恶意的SQL代码,攻击者可以访问、修改并删除数据库中的数据。为了保护网站免受SQL注入攻击,我们需要了解SQL注入攻击以及如何进行防御。本文将为大家介绍SQL注入攻防入门详解 [图文并茂] 附示例下载。 攻击方式 攻击者可以通过向网站的表单中输入恶意SQL代码来进行SQL注入攻击,常见的攻击方式包括: U…

    database 2023年5月21日
    00
  • 如何使用Python从数据库中获取Blob类型的数据?

    以下是如何使用Python从数据库中获取Blob类型的数据的完整使用攻略。 使用Python从数据库中获取Blob类型的数据的前提条件 在Python中从数据库中获取Blob类型的数据前,需要确保已经安装并启动支持Blob类型的数据库,例如MySQL或PostgreSQL,并且需要安装Python的相应数据库驱动程序,例如mysql-connector-py…

    python 2023年5月12日
    00
  • MySQL数据表添加字段的方式有哪些

    这篇文章主要介绍“MySQL数据表添加字段的方式有哪些”,在日常操作中,相信很多人在MySQL数据表添加字段的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据表添加字段的方式有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧! MySQL 数据表是由行和列构成的,通常把表的“列”称为字段(Field)…

    MySQL 2023年4月8日
    00
  • SQL 删除重复数据

    当数据库表中出现重复数据时,我们通常需要删除其中的某些记录,以便保证数据的准确性和完整性。下面将介绍如何使用SQL语言删除重复数据的完整攻略,包括去重分组、使用子查询、使用临时表等方法。 1.使用去重分组 去重分组是检索表中重复数据的最简单方法之一。要使用去重分组来删除重复数据,可以按照如下步骤进行操作: 找到列中的重复值:使用SELECT语句选择重复的列,…

    database 2023年3月27日
    00
  • MySQL中MIN()函数的使用教程

    MySQL中MIN()函数的使用教程 1. MIN()函数简介 在MySQL中,MIN()函数用于求一组数据中的最小值。可以用于数值型,日期型和字符串类型数据。 2. MIN()函数语法 MIN()函数语法如下: SELECT MIN(exp) FROM table_name WHERE conditions; 3. MIN()函数示例 3.1 数值型数据 …

    database 2023年5月22日
    00
  • MySql查询不区分大小写解决方案(两种)

    MySQL查询默认是区分大小写的,如果需要进行不区分大小写的查询,可以采用以下两种解决方案: 方案一:使用LOWER/UPPER函数 LOWER/UPPER函数可以将字符串转换为小写/大写格式,转换后再进行查询,达到不区分大小写的效果。 示例一:查询名字为”Tom”的用户信息(不区分大小写) SELECT * FROM user WHERE LOWER(na…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部