编写一个MySQL数据库备份脚本
时间: 2023-09-17 17:07:49 浏览: 41
好的,以下是一个简单的MySQL数据库备份脚本:
```
#!/bin/bash
# 连接数据库的用户名和密码
DB_USER="your_username"
DB_PASS="your_password"
# 数据库名称
DB_NAME="your_database"
# 备份文件的路径和名称
BACKUP_PATH="/path/to/backup/folder"
BACKUP_FILENAME="$DB_NAME-$(date +%Y%m%d_%H%M%S).sql"
# 执行备份命令
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_PATH/$BACKUP_FILENAME
echo "数据库已备份到 $BACKUP_PATH/$BACKUP_FILENAME"
```
在执行脚本之前,需要将 `DB_USER`、`DB_PASS` 和 `DB_NAME` 替换为你自己的用户名、密码和数据库名称。还需要将 `BACKUP_PATH` 替换为存储备份文件的文件夹路径。
在执行脚本之后,将会生成一个名为 `your_database-YYYYmmdd_HHMMSS.sql` 的 SQL 文件,其中的日期和时间将会自动生成。你可以将这个备份文件保存到本地或者上传到云存储服务等地方进行备份。
相关问题
编写一个mysql数据库备份脚本
好的,以下是一个简单的 MySQL 数据库备份脚本,你可以根据自己的需要进行修改:
```bash
#!/bin/bash
# 定义备份文件的存储路径
backup_path="/path/to/backup/folder"
# 定义 MySQL 登录信息
mysql_user="your_mysql_user"
mysql_password="your_mysql_password"
# 获取当前日期
current_date=$(date "+%Y-%m-%d")
# 循环备份指定的数据库
for database in database1 database2 database3
do
# 定义备份文件的名称
backup_file="${backup_path}/${database}-${current_date}.sql"
# 使用 mysqldump 命令备份指定的数据库
mysqldump --user=${mysql_user} --password=${mysql_password} ${database} > ${backup_file}
# 判断备份是否成功
if [ $? -eq 0 ]
then
echo "Database ${database} backup success: ${backup_file}"
else
echo "Database ${database} backup failed"
fi
done
```
请注意,此脚本假定你已经安装了 MySQL 和 mysqldump,并设置了正确的访问权限和路径。在运行脚本之前,请务必进行必要的设置和测试。
编写一个MySQL数据库备份脚本。要求:每周日做一次全备,周一到周六做增量备份
以下是一个MySQL数据库备份脚本,满足每周日做一次全备,周一到周六做增量备份的要求:
```bash
#!/bin/bash
# MySQL登录信息
MYSQL_USER="your_mysql_username"
MYSQL_PASSWORD="your_mysql_password"
# 备份目录信息
BACKUP_DIR="/path/to/backup/directory"
FULL_BACKUP_DIR="$BACKUP_DIR/full"
INCREMENTAL_BACKUP_DIR="$BACKUP_DIR/incremental"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# 当天星期几(0表示星期日,1表示星期一,以此类推)
DAY_OF_WEEK=$(date +%w)
# 全备
if [ $DAY_OF_WEEK -eq 0 ]; then
# 创建全备目录
mkdir -p $FULL_BACKUP_DIR/$DATE
# 备份所有数据库
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases | gzip > $FULL_BACKUP_DIR/$DATE/db_all_$DATE.sql.gz
fi
# 增量备份
if [ $DAY_OF_WEEK -ne 0 ]; then
# 创建增量备份目录
mkdir -p $INCREMENTAL_BACKUP_DIR/$DATE
# 获取上个完整备份的时间
LAST_FULL_BACKUP=$(ls -td $FULL_BACKUP_DIR/*/ | head -n 1)
LAST_FULL_BACKUP_TIME=$(basename $LAST_FULL_BACKUP)
# 备份所有数据库的增量部分
innobackupex --user=$MYSQL_USER --password=$MYSQL_PASSWORD --incremental $INCREMENTAL_BACKUP_DIR/$DATE --incremental-basedir=$LAST_FULL_BACKUP
# 合并增量备份到上个完整备份中
innobackupex --apply-log --redo-only $LAST_FULL_BACKUP
for i in $(ls -d $INCREMENTAL_BACKUP_DIR/$DATE/*/); do
innobackupex --apply-log --redo-only $LAST_FULL_BACKUP --incremental-dir=$i
done
innobackupex --apply-log $LAST_FULL_BACKUP
# 压缩完整备份目录
gzip -r $LAST_FULL_BACKUP
fi
```
脚本的流程如下:
1. 获取MySQL登录信息和备份目录信息;
2. 获取当天星期几的信息;
3. 如果当天是周日(星期日),则创建全备目录并备份所有数据库;
4. 如果当天不是周日,则创建增量备份目录;
5. 获取上个完整备份的时间;
6. 备份所有数据库的增量部分;
7. 合并增量备份到上个完整备份中;
8. 压缩上个完整备份目录。
需要注意的是,该脚本使用了`innobackupex`工具进行备份,因此需要先安装该工具。同时,为了使备份更加安全,建议将MySQL登录信息保存在一个单独的配置文件中,并在脚本中引用该配置文件。