Skip to content

Commit

Permalink
a
Browse files Browse the repository at this point in the history
  • Loading branch information
penndu committed Jan 25, 2024
1 parent 8521334 commit 9d87707
Showing 1 changed file with 112 additions and 0 deletions.
112 changes: 112 additions & 0 deletions source/_posts/670.md
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 数据库。 |

0 comments on commit 9d87707

Please sign in to comment.