云网牛站
所在位置:首页 > Linux云数据库 > MySQL/MariaDB数据库备份的三个Shell脚本

MySQL/MariaDB数据库备份的三个Shell脚本

2020-02-24 10:52:15作者:王优明稿源:云网牛站

一个简单的shell脚本可以使Linux管理员作业自动化,这将减少人工工作并节省大量时间。作为服务器管理员,您应该对数据库进行定期备份,如果出现问题(例如数据库损坏等),它可以帮助您还原数据库。我们编写了一个小的Shell脚本来实现这一目标,本文提供了三个脚本,每个脚本都是为不同目的创建的,可以很好地完成工作。为了限制大小,我们正在使用gunzip格式进行数据库备份,我们仅保留十天的备份,以减少服务器上的磁盘空间利用率。

MySQL/MariaDB数据库备份的三个Shell脚本

 

1、如何将每个数据库备份到一个单独的文件

此Shell脚本允许您将每个数据库备份到一个单独的文件,如果需要,它将帮助您还原特定的数据库。

将以下shell脚本添加到文件中,在此示例中,我已将脚本添加到mysql_backup.sh文件中:

# vi /opt/shell-scripts/mysql_backup.sh

#!/bin/bash

# Add the backup dir location, MySQL root password, MySQL and mysqldump location

DATE=$(date +%d-%m-%Y)

BACKUP_DIR="/backup/test-backup"

MYSQL_USER="root"

MYSQL_PASSWORD="***"

# To create a new directory in the backup directory location based on the date

mkdir -p $BACKUP_DIR/$DATE

# To get a list of databases

databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`

# To dump each database in a separate file

for db in $databases; do

echo $db

mysqldump --force --opt --skip-lock-tables --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"

done

# Delete the files older than 10 days

find $BACKUP_DIR/* -mtime +10 -exec rm {} \;

为mysql_backup.sh文件设置可执行权限:

# chmod +x mysql_backup.sh

最后运行脚本以实现此目的:

# sh mysql_backup.sh 

mysql

performance_schema

testdb

testdb1

现在检查输出:

# ls -lh /backup/db-backup/23-02-2020/

MySQL/MariaDB数据库备份的三个Shell脚本

参考:讲解在Linux命令行下使用ls命令列出文件的技巧

Cronjob将使我们的操作按计划执行,而不会失败,下面的cronjob计划每天10AM运行:

0 10 * * * /opt/shell-scripts/mysql_backup.sh

 

2、如何使用Shell脚本备份单个数据库

此Shell脚本允许您将给定的数据库备份到文件中,将以下shell脚本添加到文件中。在此示例中,我已将脚本添加到mysql_backup_1.sh文件中:

# vi /opt/shell-scripts/mysql_backup_1.sh

#!/bin/bash

MYSQL_PASSWORD="*****"

DATE=$(date +%d-%m-%Y)

BACKUP_DIR="/backup/db-backup"

DB=testdb

echo $DB

mysqldump -u root -p$MYSQL_PASSWORD $DB | gzip -9 > "$BACKUP_DIR/testdb-$DATE.sql.gz"

find $BACKUP_DIR/* -mtime +5 -exec rm {} \;

为mysql_backup_1.sh文件设置可执行权限:

# chmod +x mysql_backup_1.sh

最后运行脚本以实现此目的:

# sh mysql_backup_1.sh

testdb

现在检查输出:

# ls -lh /backup/db-backup

MySQL/MariaDB数据库备份的三个Shell脚本

 

3、如何将所有数据库备份到单个备份文件中

该shell脚本允许您将所有数据库备份到单个备份文件中,将以下shell脚本添加到文件中。在此示例中,我已将脚本添加到mysql_backup_2.sh文件中:

# vi /opt/shell-scripts/mysql_backup_2.sh

#!/bin/bash

MYSQL_PASSWORD="*****"

DATE=$(date +%d-%m-%Y)

BACKUP_DIR="/backup/db-backup"

DB=testdb

mysqldump -u root -p$MYSQL_PASSWORD --all-databases | gzip -9 > "$BACKUP_DIR/all-dbs-$DATE.sql.gz"

find $BACKUP_DIR/* -mtime +5 -exec rm {} \;

为mysql_backup_2.sh文件设置可执行权限:

# chmod +x mysql_backup_2.sh

最后运行脚本以实现此目的:

# sh mysql_backup_2.sh

现在检查输出:

# ls -lh /backup/db-backup

MySQL/MariaDB数据库备份的三个Shell脚本

 

相关主题

如何在终端里备份并恢复MariaDB数据库

精选文章
热门文章