51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

MySQL 数据库备份脚本参考分享

在之前的文件中杜老师推荐了两款云主机面板,有小伙伴留言说因服务器配置比较低,未使用云主机面板,一直为数据库备份问题困扰。杜老师之前工作的环境也是没有面板,编写过相关的备份脚本,在此文中分享给需要的小伙伴们~

设置环境变量 {#设置环境变量}

|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | #!/bin/bash # Setup environment variables export MYSQL_HOST=localhost export MYSQL_PORT=3306 export MYSQL_USER=root export MYSQL_PASSWORD=your_password |

注意:需要设置环境变量,以便脚本可以找到 MySQL 数据库。在脚本中,添加以上内容。

创建备份目录 {#创建备份目录}

|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | # Create backup directory BACKUP_DIR=/path/to/backup/directory # Check if backup directory exists if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" fi |

注意:创建一个目录,以存储备份的文件。在脚本中,添加以上内容。

备份 MySQL 数据库 {#备份-MySQL-数据库}

|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 | # Backup database DATABASE_NAME=your_database_name BACKUP_FILE="$BACKUP_DIR/$DATABASE_NAME-$(date +"%Y-%m-%d_%H-%M-%S").sql" mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --host=$MYSQL_HOST --port=$MYSQL_PORT $DATABASE_NAME > "$BACKUP_FILE" |

注意:使用 mysqldump 命令备份数据库。在脚本中,添加以上内容。

检查备份是否成功 {#检查备份是否成功}

|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 | # Check if backup file exists if [ -f "$BACKUP_FILE" ]; then echo "Backup completed successfully!" else echo "Backup failed!" exit 1 fi |

注意:检查备份文件是否创建。在脚本中,添加以上内容。

压缩备份文件 {#压缩备份文件}

|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | # Compress backup file COMPRESSED_BACKUP_FILE="$BACKUP_FILE".gz gzip "$BACKUP_FILE" # Remove original backup file rm "$BACKUP_FILE" |

注意:为了节省空间,可使用 gzip 命令压缩备份文件。在脚本中,添加以上内容。

删除 MySQL 旧备份 {#删除-MySQL-旧备份}

|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | # Remove old backups OLD_BACKUPS=$(ls -t "$BACKUP_DIR" | tail -n +7) if [ ! -z "$OLD_BACKUPS" ]; then rm "$BACKUP_DIR/$OLD_BACKUPS" fi |

注意:删除旧备份文件以节省空间。在脚本中,添加以上内容。

设置定时任务 {#设置定时任务}

最后,可使用 crontab 命令设置定时任务,以便脚本定期运行。在终端中输入以下命令:

|-----------|--------------------| | 1 | crontab -e |

在打开的编辑器中,添加以下行的内容,比如以每天凌晨的一点运行脚本。保存并退出编辑器:

|-----------|--------------------------------------------------| | 1 | 0 1 * * * /path/to/your/backup_script.sh |

还有哪些开源工具 {#还有哪些开源工具}

除上面脚本外,还有一些开源「有商业版」工具也可实现 MySQL 数据库备份,供需要的小伙伴们参考选择:

| 名称 | 描述 | |-------------------------|------------------------------------------------------------------------------------------| | mysqldump | mysqldump 是 MySQL 官方提供的备份工具,可将 MySQL 数据库的数据和结构导出为 SQL 文件。 | | XtraBackup | XtraBackup 是一个 Percona 提供的备份工具,可在线备份 MySQL 数据,提供增量备份、压缩功能。 | | Zmanda Recovery Manager | Zmanda Recovery Manager 是一款商业的备份和恢复解决方案,可支持 MySQL 和其它数据库。提供完整备份、增量备份、多种存储介质、自动化备份和恢复等功能。 | | mydumper | mydumper 是一个 MySQL 官方派生的高性能 MySQL 备份工具,支持并行备份,可更快地备份大型 MySQL 数据库。 |

赞(3)
未经允许不得转载:工具盒子 » MySQL 数据库备份脚本参考分享