linux下mysql如何自动备份shell脚本

yizhihongxing

实现linux下mysql数据库的自动备份可以使用shell脚本,下面是实现方法:

第一步:安装mysql客户端和sshpass命令

首先需要安装mysql客户端程序和sshpass命令。在Debian/Ubuntu系统中,可以使用以下命令来安装:

sudo apt-get install mysql-client sshpass

在CentOS/RHEL系统中,可以使用以下命令来安装:

sudo yum install mysql mysql-client sshpass

安装完成后,可以使用以下命令验证是否安装成功:

mysql --version
sshpass -V

第二步:创建备份脚本

创建一个新的shell脚本文件,例如backup_mysql.sh,并将以下代码复制到该文件中:

#!/bin/bash

# 数据库服务器相关信息
HOST="localhost"
USER="root"
PASSWORD="password"

# 备份文件存储路径
BACKUP_DIR="/var/backups/mysql"

# 备份名称及其格式
FILENAME=$(date +"%Y%m%d-%H%M%S").sql.gz

# 备份命令
CMD="mysqldump -h$HOST -u$USER -p$PASSWORD --databases mydatabase | gzip > $BACKUP_DIR/$FILENAME"

# 执行备份命令
eval "$CMD"

# 上传命令
sshpass -p "remote_ssh_password" scp $BACKUP_DIR/$FILENAME remote_ssh_username@remote_ssh_server:/remote/backups/mysql/

在这个脚本中,我们首先定义了要备份的数据库服务器相关信息,包括主机名,用户名和密码。接着,我们指定备份文件的存储路径,备份命令以及备份文件名的格式。然后,我们执行备份命令将备份文件保存在指定的目录中。最后,我们使用sshpass命令将备份文件上传到远程服务器上。

第三步:设置定时任务

为了自动执行备份脚本,需要将该脚本添加到cron的定时任务中。打开cron配置文件,使用以下命令:

sudo crontab -e

然后在文件末尾添加以下内容:

0 2 * * * /path/to/backup_mysql.sh

这条命令的含义是每天凌晨2点执行备份脚本。根据需要可以调整时间和执行周期。

示例:

指定备份多个数据库,并以数据库名命名备份文件

#!/bin/bash

# 数据库服务器相关信息
HOST="localhost"
USER="root"
PASSWORD="password"

# 备份文件存储路径
BACKUP_DIR="/var/backups/mysql"

# 备份命令
for db in db1 db2 db3
do
    FILENAME=$(date +"%Y%m%d-%H%M%S").${db}.sql.gz
    CMD="mysqldump -h$HOST -u$USER -p$PASSWORD $db | gzip > $BACKUP_DIR/$FILENAME"
    eval "$CMD"
done

# 上传命令
sshpass -p "remote_ssh_password" scp $BACKUP_DIR/*.sql.gz remote_ssh_username@remote_ssh_server:/remote/backups/mysql/

该脚本备份了3个数据库,并以数据库名命名备份文件。备份文件格式为当前日期加时间戳加数据库名的形式。同时上传所有备份文件到远程服务器。

另一个示例是备份指定日期的数据,并且在备份时排除指定的表:

#!/bin/bash

# 数据库服务器相关信息
HOST="localhost"
USER="root"
PASSWORD="password"

# 备份文件存储路径
BACKUP_DIR="/var/backups/mysql"

# 要备份的数据库
DATABASE="mydatabase"

# 备份命令
FILENAME=$(date +"%Y%m%d").sql.gz
EXCLUDE_TABLES=("table1" "table2")
CMD="mysqldump -h$HOST -u$USER -p$PASSWORD --ignore-table=${DATABASE}.${EXCLUDE_TABLES[0]} --ignore-table=${DATABASE}.${EXCLUDE_TABLES[1]} $DATABASE | gzip > $BACKUP_DIR/$FILENAME"
eval "$CMD"

# 上传命令
sshpass -p "remote_ssh_password" scp $BACKUP_DIR/$FILENAME remote_ssh_username@remote_ssh_server:/remote/backups/mysql/

该脚本备份了指定的数据库,格式为YYYYMMDD.sql.gz。同时在备份的时候,排除EXCLUDE_TABLES数组中指定的表格。最后,将备份文件上传到远程服务器上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux下mysql如何自动备份shell脚本 - Python技术站

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

相关文章

  • MySQL数据库的索引原理与慢SQL优化的5大原则

    让我来为您详细讲解MySQL数据库的索引原理与慢SQL优化的5大原则。 索引原理 什么是索引? 索引是数据库中一种特殊的数据结构,它可以提升数据查询的效率。通常情况下,索引是基于某些列(如表的主键或者某个字段)建立的,当你查询这些数据时,数据库可以直接在索引树中查找而无需扫描整个表。 索引的类型 常见的MySQL索引类型有: PRIMARY KEY:主键索引…

    database 2023年5月19日
    00
  • SpringBoot实现动态控制定时任务支持多参数功能

    下面是“SpringBoot实现动态控制定时任务支持多参数功能”的完整攻略。 简介 SpringBoot是基于Spring框架的一种快速开发框架,可以轻松完成Web开发、任务调度等日常任务。我们常常需要使用定时任务来完成一些周期性的任务,而定时任务也需要支持多参数传递,以便动态控制任务的执行时间和任务参数。本文将介绍如何使用SpringBoot框架来实现动态…

    database 2023年5月21日
    00
  • MySQL 同主机不同数据库之间的复制

    MySQL同主机不同数据库的复制命令:注意运行在Terminal中,不运行在MySQL命令行中。 mysqldump Portal_DEV -u root -ppassword1 –add-drop-table | mysql Portal_Optimize -u root -ppassword1 在复制过程中,出现如下报错: ERROR 1153 (08…

    MySQL 2023年4月16日
    00
  • Mysql中where与on的区别及何时使用详析

    下面是关于”Mysql中WHERE与ON的区别及何时使用”的完整攻略: 区别 WHERE WHERE是用于筛选行的(即对于SELECT语句或者UPDATE语句,我们使用WHERE语句来筛选需要处理的行记录); WHERE是在数据表中,查询完成后进行过滤的,即先从表中检索记录,再通过WHERE进行判断,将符合条件的记录返回; 示例1: SELECT * FRO…

    database 2023年5月22日
    00
  • 阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法

    阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法 在使用阿里云Linux CentOS 7.2下自建MySQL时,有时候会遇到忘记root账户的密码的问题。本文将详细介绍解决这一问题的方法。 方法一:使用mysqld_safe 停止MySQL服务 sudo systemctl stop mysqld 使用下面的命令启动mys…

    database 2023年5月22日
    00
  • MySQL修改密码的3种方式

    MySQL是一款开源的关系型数据库管理系统,被广泛应用于各行各业。为了保证数据库的安全,我们需要定期修改数据库的密码。本文将介绍MySQL修改密码的三种方式,包括使用命令行修改密码、使用MySQL Workbench修改密码、以及重置MySQL root密码。 使用命令行修改密码 1 登录MySQL 打开命令行工具,输入以下命令登录MySQL: mysql …

    MySQL 2023年3月10日
    00
  • 结构化查询语言 (SQL) 和 Transact-SQL (T-SQL)的区别

    SQL和T-SQL都是常用的查询语言,在关系型数据库中非常常见。SQL是结构化查询语言(Structured Query Language)的缩写,T-SQL是SQL Server中的Transact-SQL的简称。下面来详细讲解两者之间的区别。 结构化查询语言(SQL) SQL是关系型数据库最基本的查询语言,用于处理关系型数据库中的数据。它的使用范围非常广…

    database 2023年3月27日
    00
  • MySQL开启慢查询日志功能的方法

    下面是 MySQL 开启慢查询日志功能的方法完整攻略。 1. 为什么要开启慢查询日志? MySQL 慢查询日志可以记录执行时间超过一定阈值的查询,便于我们发现系统中的性能瓶颈以及优化 SQL 语句。因此,在出现系统性能问题时,开启慢查询日志功能可以快速发现 SQL 语句耗时较长的查询,进而作出有效改进。 2. 如何开启慢查询日志? 在MySQL中开启慢查询日…

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