当前位置:首页 > 站长知识 > 数据库 > 正文内容

Linux系统设置每日定时备份mysql数据

2024-11-29数据库40

一、创建存储脚本的文件夹

创建文件夹,我的脚本放在/root/dbback/mysql

1
mkdir ...
1
cd /root/dbback/mysql

二、编写脚本

1
vi backup_mysql.sh

复制脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DB_USER="填写用户名"
DB_PASSWORD="填写密码"
DB_NAME="数据库名称"  # 如果需要备份所有数据库,删除这一行
BACKUP_DIR="/dbback/mysql/backup"  # 备份文件存储的目录,可自定义
DATE=$(date +%F_%H-%M-%S)      # 备份文件的时间戳
 
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
 
# 执行备份
if [ -z "$DB_NAME" ]; then
    # 备份所有数据库,此处配置mysqldump所在路径
    /usr/local/mysql/bin/mysqldump -u "$DB_USER" -p"$DB_PASSWORD" --all-databases | gzip > "$BACKUP_DIR/all_databases_$DATE.sql.gz"
else
    # 备份特定数据库,此处配置mysqldump所在路径
   /usr/local/mysql/bin/mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" | gzip > "$BACKUP_DIR/$DB_NAME_$DATE.sql.gz"
fi
 
# 输出备份状态
if [ $? -eq 0 ]; then
    echo "备份成功: $BACKUP_DIR/${DB_NAME:-all_databases}_$DATE.sql.gz"
else
    echo "备份失败"
fi

三、设置定时任务执行脚本

设置定时指令

1
crontab -e

复制以下内容:按需调整,我设置的每日凌晨2点

1
0 2 * * * /bin/bash /root/dbback/mysql/backup_mysql.sh >> /root/dbback/mysql/backup.log 2>&1

四、查看是否添加成功

1
crontab -l

添加成功界面

五、自行设置表达式进行测试脚本是否正常执行即可