使用Mysql自带的Mysqldump进行备份

Mysqldump是安装mysql的时候自带的,但是只能逻辑备份,还是存在着备份的时候会被插入新的数据,貌似会自动锁表?但是又有人说不能开启这个权限,会导致出问题,待研究。。

我是Docker安装了MySqL5.7,然后宿主机是没安装的,本来是想在容器里面备份好以后放在映射的路径下,但是想想太麻烦还是宿主机安装一个相同版本的Mysql,然后不要启动就好了。

以下是我备份的脚本,其中账号密码我放在了/etc/my.cnf里面了。这样子就不会报下面这个警告了,因为账号等私密信息放在脚本里面还是挺不安全的。

mysqldump: [Warning] Using a password on the command line interface can be insecure.

新建一个backup.sh

这个脚本会在BACKUP_PATH路径存储备份,然后会自动清除7天以前的文件。

注意,这里是判断要清除的文件是根据修改时间,而不是文件名。

脚本还有很多小bug,比如就算出现错误也会进行下一步,懒得改了。

#!/bin/bash

# 定义备份的数据库名、用户名、密码,备份文件存放路径等变量
DATABASE="lchs"
BACKUP_PATH="/pathTo/backupData/mysql"

# 定义要删除多少天以前的备份文件
DAYS_TO_KEEP=7

# 生成备份文件名,格式为 "dbname_YYYYmmdd_HHMMSS.sql.gz"
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$DATABASE"_"$DATE".sql.gz

# 输出备份开始信息
echo "Starting backup of database $DATABASE at $(date +"%Y/%m/%d %H:%M:%S")"

# 备份 MySQL 数据库
# mysqldump -h "$HOST" -u "$USER" -p"$PASSWORD" "$DATABASE" | gzip > "$BACKUP_PATH/$BACKUP_FILE"
mysqldump  "$DATABASE" | gzip > "$BACKUP_PATH/$BACKUP_FILE"

# 输出备份完成信息
echo "Backup of database $DATABASE completed at $(date +"%Y/%m/%d %H:%M:%S")"

# 查找 n 天前的备份文件
# -mtime指的是文件的修改时间
echo "Finding backups older than $DAYS_TO_KEEP days..."
FILES_TO_DELETE=$(find "$BACKUP_PATH" -maxdepth 1 -type f -name "lchs_*.sql.gz" -mtime +$DAYS_TO_KEEP)

# 输出要删除的备份文件列表
echo "The backup files to delete:"
echo "$FILES_TO_DELETE"

# 逐个删除备份文件
for file in $FILES_TO_DELETE; do
  echo "Deleting $file"
  rm "$file"
done

# 输出备份文件清理完成信息
echo "Backup files older than $DAYS_TO_KEEP days removed"

在/etc/my.cnf里面添加上下面的代码,改动相对应信息的即可。

[mysqldump]
host=yourhost
user=youruser
password='你的密码'

建议建立一个备份账号,给以下这些权限就可以了

在使用 mysqldump 工具备份 MySQL 数据库时,需要使用一个 MySQL 账号,该账号需要具备以下权限:

  1. SELECT,读取数据库表的权限。
  2. LOCK TABLES,锁定数据库表的权限,以避免备份时出现并发问题。
  3. SHOW VIEW,查看视图的权限。
  4. RELOAD,重新加载 MySQL 权限表的权限。
  5. EVENT,创建和修改触发器的权限。
  6. TRIGGER,创建和修改事件的权限。
  7. CREATE ROUTINE,创建和修改存储过程和函数的权限。
  8. CREATE VIEW,创建和修改视图的权限。

注意,如果要备份所有数据库,则该账号需要具备所有数据库的权限。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值