mysql 自动备份
Database 2024/7/16 19:19:49 点击:不统计
mysql 怎么实现自动备份,是通过mysqldump + 定时shell 命令实现自动备份,下面看具体代码操作实现mysql 自动备份
1. 创建备份数据库的账号密码,要求权限 PROCESS, SELECT, SHOW VIEW, LOCK TABLES
我们 以 账号 test_user, 密码 test_pwd 地址127.0.0.1 ,数据库 test_db 为例
GRANT PROCESS, SELECT, SHOW VIEW, LOCK TABLES ON test_db.* TO 'test_user'@'127.0.0.1' identified by 'test_pwd';
FLUSH PRIVILEGES;
2. 新建一个配置账号密码文件,专门为 mysqldump 创建,名称为 .my.cnf 内容如下:
[client]
user=test_user
password=test_pwd
host=127.0.0.1
创建完毕后,修改.my.cnf 权限为 600
chmod 600 ~/.my.cnf
3. 创建shell 脚本 ,代码如下:
#!/bin/bash
# 数据库信息
DB_NAME="test_db"
# 备份文件目录
BACKUP_DIR="/opt/backdata"
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_backup_$BACKUP_DATE.sql"
# 确保备份目录存在
mkdir -p $BACKUP_DIR
# 导出数据库,下面 defaults-file 指定 账号密码文件位置
mysqldump --defaults-file=.my.cnf $DB_NAME > $BACKUP_FILE
# 可选:删除超过30天的备份文件
#find $BACKUP_DIR -type f -name "*.sql" -mtime +30 -exec rm {} \;
保存到 /opt/back.sh, 修改权限,可以执行
chmod +x /opt/back.sh
4. 创建定时任务 ,默认使用root用户,每天4点运行备份shell
0 4 * * * /opt/back.sh
以上就可以实现mysql 自动备份了,不用再手动备份。
·上一篇:in 和not in的优化 >> ·下一篇:mysql shell自动备份 >>