-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
112 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
--- | ||
title: MySQL 数据库备份脚本参考分享 | ||
tags: | ||
- 脚本 | ||
categories: | ||
- 代码编程 | ||
date: 2024-01-25 00:00:00 | ||
--- | ||
|
||
> 在之前的文件中杜老师推荐了两款云主机面板,有小伙伴留言说因服务器配置比较低,未使用云主机面板,一直为数据库备份问题困扰。杜老师之前工作的环境也是没有面板,编写过相关的备份脚本,在此文中分享给需要的小伙伴们~ | ||
<!-- more --> | ||
|
||
## 设置环境变量 | ||
|
||
``` | ||
#!/bin/bash | ||
# Setup environment variables | ||
export MYSQL_HOST=localhost | ||
export MYSQL_PORT=3306 | ||
export MYSQL_USER=root | ||
export MYSQL_PASSWORD=your_password | ||
``` | ||
|
||
注意:需要设置环境变量,以便脚本可以找到 MySQL 数据库。在脚本中,添加以上内容。 | ||
|
||
## 创建备份目录 | ||
|
||
``` | ||
# 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 数据库 | ||
|
||
``` | ||
# 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` 命令备份数据库。在脚本中,添加以上内容。 | ||
|
||
## 检查备份是否成功 | ||
|
||
``` | ||
# Check if backup file exists | ||
if [ -f "$BACKUP_FILE" ]; then | ||
echo "Backup completed successfully!" | ||
else | ||
echo "Backup failed!" | ||
exit 1 | ||
fi | ||
``` | ||
|
||
注意:检查备份文件是否创建。在脚本中,添加以上内容。 | ||
|
||
## 压缩备份文件 | ||
|
||
``` | ||
# Compress backup file | ||
COMPRESSED_BACKUP_FILE="$BACKUP_FILE".gz | ||
gzip "$BACKUP_FILE" | ||
# Remove original backup file | ||
rm "$BACKUP_FILE" | ||
``` | ||
|
||
注意:为了节省空间,可使用 `gzip` 命令压缩备份文件。在脚本中,添加以上内容。 | ||
|
||
## 删除 MySQL 旧备份 | ||
|
||
``` | ||
# Remove old backups | ||
OLD_BACKUPS=$(ls -t "$BACKUP_DIR" | tail -n +7) | ||
if [ ! -z "$OLD_BACKUPS" ]; then | ||
rm "$BACKUP_DIR/$OLD_BACKUPS" | ||
fi | ||
``` | ||
|
||
注意:删除旧备份文件以节省空间。在脚本中,添加以上内容。 | ||
|
||
## 设置定时任务 | ||
|
||
最后,可使用 `crontab` 命令设置定时任务,以便脚本定期运行。在终端中输入以下命令: | ||
|
||
``` | ||
crontab -e | ||
``` | ||
|
||
在打开的编辑器中,添加以下行的内容,比如以每天凌晨的一点运行脚本。保存并退出编辑器: | ||
|
||
``` | ||
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 数据库。 | |