关键词

Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写

下面是在CentOS7中使用mysqldump进行每日自动备份的完整攻略:

确保MySQL和mysqldump安装

首先,我们需要确保MySQL和mysqldump已经安装。如果没有安装,使用以下命令安装:

sudo yum install mysql-server mysql
sudo yum install mysql-devel
sudo yum install mysql-libs
sudo yum install mysql-connector-c++-devel
sudo yum install mysql-connector-odbc
sudo yum install mysql-utilities
sudo yum install mysql-workbench
sudo yum install mysql-connector-java
sudo yum install mysqldump

编写备份脚本

接下来,我们要编写一个备份脚本,将其保存在服务器上,并将其添加到每日定时任务中以自动备份MySQL数据库。

以下是备份脚本的示例:

#!/bin/bash
# 定义变量
MYSQL_USER="root" # MySQL用户名
MYSQL_PASSWORD="password" # MySQL用户密码
BACKUP_DIR="/backup/mysql" # 备份目录
NOW="$(date +"%Y-%m-%d-%H-%M-%S")" # 当前日期

# 创建备份目录
mkdir -p $BACKUP_DIR/$NOW

# 获取所有数据库名称
databases=$(mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)

# 备份所有数据库
for db in $databases; do
   if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] && [[ "$db" != "sys" ]]; then
        mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD --databases $db > $BACKUP_DIR/$NOW/$db.sql
   fi
done

# 根据备份保留天数删除过期备份
find $BACKUP_DIR/* -mtime +7 -exec rm -rf {} \;

在上面的脚本中,我们定义了一些变量,如MySQL的用户名和密码、备份目录等,并使用mysqldump命令备份所有不是信息模式、性能模式、mysql库或以“_”开头的数据库。最后,我们使用“find”命令删除过时的备份。

添加定时任务

为了使备份脚本每天自动运行,我们要将其添加到crontab定时任务中。在命令行运行以下命令:

crontab -e

然后在文件末尾添加以下内容以每天10点进行备份:

0 10 * * * /bin/bash /path/to/backup/script.sh

如果你使用的是默认的MySQL配置,请务必采用"sudo" 进行操作,确保对"mysqldump" 以及待操作的数据库有足够的权限。

示例说明

下面我们来解释一下上面备份脚本中的两个示例用例:

  • 如果你想备份一个名为"mydb"的数据库:
mysqldump --user=root --password=mypassword mydb > /backup/mysql/mydb.sql

这将会在"/ backup / mysql"目录下创建一个名为"mydb.sql"的备份文件。

  • 如果你想要备份所有数据库:
#!/bin/bash
# 定义变量
MYSQL_USER="root" # MySQL用户名
MYSQL_PASSWORD="password" # MySQL用户密码
BACKUP_DIR="/backup/mysql" # 备份目录
NOW="$(date +"%Y-%m-%d-%H-%M-%S")" # 当前日期

# 创建备份目录
mkdir -p $BACKUP_DIR/$NOW

# 获取所有数据库名称
databases=$(mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)

# 备份所有数据库
for db in $databases; do
   if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] && [[ "$db" != "sys" ]]; then
        mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD --databases $db > $BACKUP_DIR/$NOW/$db.sql
   fi
done

# 根据备份保留天数删除过期备份
find $BACKUP_DIR/* -mtime +7 -exec rm -rf {} \;

这将在"/ backup / mysql"目录下创建一个名为"当前日期-数据库名.sql"的备份文件,并且删除过时的备份。

本攻略中提供的示例脚本仅供参考,具体的脚本需要根据你的实际需求进行修改。

本文链接:http://task.lmcjl.com/news/18250.html

展开阅读全文