在Plesk中创建MySQL Server数据库的非增量(逻辑备份)自动备份外壳脚本(sh)

本文概述

  • 1.创建备份脚本
  • 2.运行备份脚本
自动化任务是理智而懒惰的开发人员的正常行为。通常自动化的任务之一是服务器中数据库的备份。使用MySQL, 使用mysqldump进行的逻辑备份非常容易实现和自动化。但是, 在Plesk环境中, 你可能会遇到一些细节问题, 例如知道MySQL服务器中以admin / root身份访问的密码是什么。默认情况下, 使用Plesk安装和配置的MySQL没有名为” root” 的用户。它被重命名为” admin” , 并且仅具有” localhost” 访问权限。在Linux上, 密码被加密并存储在/etc/psa/.psa.shadow中。知道了这一点, 你可能想编写自己的Shell脚本来自己自动执行数据库的非增量(完整)备份, 但是如果我们告诉你已经为它编写了一个脚本, 该脚本可能对你有用呢?
在本文中, 我们将与你分享一个非常简单的脚本, 以使用Plesk中的mysqldump生成压缩备份。
1.创建备份脚本 继续创建备份脚本, 在这种情况下, 我们将命名为plesk_db_backup.sh并将以下代码附加到该脚本:
#!/bin/bash# Script to export all the databases stored in MySQL Server in Plesk# Note: This file needs to use the LF break line format, not CRLF# Is recommendable as well to use absolute paths for the directories# @author Carlos Delgado < dev@ourcodeworld.com> # Define constants of the scriptUSERNAME="admin"BACKUP_DIRECTORY="/var/ourcodeworld-db-backups/backups"# Important:# This directory will be created and **DELETED** after executing the scriptTMP_BACKUP_DIRECTORY="/var/ourcodeworld-db-backups/tmp-backups"EXCLUDED_DATABASES="Database|information_schema|performance_schema|mysql"# 1. Build array of databases registeredBASES_DE_DATOS=$(MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u $USERNAME -e "SHOW DATABASES; " | tr -d "| " | egrep -v $EXCLUDED_DATABASES)printf "Starting backup of databases ... \n\n"# 2. Verify if the temporary backup folders exists, otherwise create it [ -d $TMP_BACKUP_DIRECTORY ] || mkdir $TMP_BACKUP_DIRECTORY# 3. Iterate over the database array available for the signed user (admin)for db in $BASES_DE_DATOS; doprintf "Exporting database: '$db' | "# 3. Dump database with mysqldump# MYSQL_PWD is used to access as admin in MySQL inside Plesk based servers# MYSQL_PWD=`cat /etc/psa/.psa.shadow`BKP_FILENAME=`date +%Y%m%d`.$db.sql.gzMYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqldump -u $USERNAME --databases $db | gzip > $TMP_BACKUP_DIRECTORY/$BKP_FILENAMEprintf "OK\n"doneprintf "\nThe backups have been succesfully generated ... Compressing all databases into a single file ... \n"# 5. Verify if the backup folder exists in the current directory, otherwise create it[ -d $BACKUP_DIRECTORY ] || mkdir $BACKUP_DIRECTORY# 6. Compress generated backups (.sql files)FNL_BKP_FILENAME=`date +%Y_%m_%d_%H_%M_%S`.mysql_databases_backup.tar.gztar -zcvf $BACKUP_DIRECTORY/$FNL_BKP_FILENAME $TMP_BACKUP_DIRECTORYprintf "\nCleaning up !\n"# 7. Delete the temporary directory of backupsrm -rf $TMP_BACKUP_DIRECTORYprintf "\nBackup succesfully generated. \n"

粘贴内容之后, 请确保使用LF(unix)行尾而不是CLRF(Windows)将shell脚本保存在系统上, 否则shell脚本将不会运行(即使具有执行权限)。
怎么运行的
备份的逻辑如下:首先, 需要以管理员身份定义用于访问plesk的用户名, 在本例中, 用户名是相同的” admin” 。你还需要定义一些变量, 这些变量包含一些将在备份期间使用的目录, 一些变量用于存储临时文件, 而另一些变量将包含最终的备份文件。然后, 将创建一个新变量, 它将包含MySQL服务器上可用数据库的名称数组, 另外还有一个变量将某些数据库排除在外, 以防你需要排除它们。
阵列可用后, 脚本需要验证是否有一个临时备份目录, 其中包含将在以后压缩的转储, 如果不存在, 将创建该临时转储, 并在内部创建转储。现在, 备份的重点是执行mysqldump命令, 该命令针对数据库名称数组中的每个项目执行。将转储的.sql文件压缩并存储在临时目录中。转储每个数据库后, 脚本将压缩临时目录的所有内容, 并在备份目录内创建一个新的压缩tar文件。
创建备份后, 将删除临时文件夹, 并且该过程完成!
2.运行备份脚本 现在你知道了脚本的工作原理, 你只需要执行它, 因此请确保使用以下命令将执行权限授予SH文件:
chmod +x plesk_db_backup.sh

然后以你想要的方式运行shell脚本:
# Simply run the shell script directly if it has write permissions./plesk_db_backup.sh# Or run the shell script with the sh commandsh ./plesk_db_backup.sh

在终端中生成的输出将类似于:
Starting backup of databases ... Exporting database: 'ourcodeworld-es' | OKExporting database: 'ourcodeworld' | OKExporting database: 'ourcodeworld-docs' | OKExporting database: 'other_database' | OKThe backups have been succesfully generated ... Compressing all databases into a single file .../var/ourcodeworld-db-backups/tmp-backups/20180517.ourcodeworld-es.sql.gz/var/ourcodeworld-db-backups/tmp-backups/20180517.ourcodeworld.sql.gz/var/ourcodeworld-db-backups/tmp-backups/20180517.ourcodeworld-docs.sql.gz/var/ourcodeworld-db-backups/tmp-backups/20180517.other_database.sql.gzCleaning up !Backup succesfully generated.

脚本完成后, 你将在创建脚本的目录中有一个新文件夹, 即备份。在内部, 你将找到一个gzip压缩文件, 其中包含Plesk的MySQL服务器中可用的每个数据库的mysqldump生成的所有压缩转储:
在Plesk中创建MySQL Server数据库的非增量(逻辑备份)自动备份外壳脚本(sh)

文章图片
【在Plesk中创建MySQL Server数据库的非增量(逻辑备份)自动备份外壳脚本(sh)】编码愉快!

    推荐阅读