赞
踩
vim ./db-backup.sh
添加如下内容:
- #!/bin/bash
-
- echo '开始备份数据'
-
- # 定义 MySQL 容器名称和备份目录
- MYSQL_CONTAINER="my-mysql"
- BACKUP_DIR="/home/backup"
-
- if [ -d ${BACKUP_FILE} ]; then
- echo "目录存在"
- else
- echo "目录不存在"
- mkdir ${BACKUP_FILE}
- fi
-
- # 定义 MySQL 容器中的数据库用户名、密码和备份文件名
- MYSQL_USER="root"
- MYSQL_PASSWORD="password"
- BACKUP_FILE="${BACKUP_DIR}/db_backup_$(date +%Y%m%d%H%M%S).sql"
-
- # 执行备份命令
- docker exec ${MYSQL_CONTAINER} mysqldump --default-character-set=utf8mb4 --single-transaction -u ${MYSQL_USER} -p${MYSQL_PASSWORD} --all-databases > ${BACKUP_FILE}
-
- # 检查备份是否成功
- if [ $? -eq 0 ]; then
- echo "MySQL 数据库备份成功:${BACKUP_FILE}"
- else
- echo "MySQL 数据库备份失败"
- fi
-
- # 删除14天前的备份文件
- count=$(find ${BACKUP_DIR} -type f -name "*.sql" | wc -l)
-
- echo "sql文件数="$count
-
- #
- if [ "$count" -gt 19 ]; then
- echo "大了,删除多余文件"
- find ${BACKUP_DIR} -type f -name "*.sql" -mtime +14 -delete
- else
- echo "小了"
- fi
-
- # -mtime +14 (14天之前)
- # -mmin +14 (14分钟之前)
-
- ## 异地灾备
-
- expect <<EOF
- spawn scp ${BACKUP_FILE} root@192.168.31.167:/home/mysql/
- expect "*password"
- send "123456\r"
- expect eof
- EOF
-
- # 安装 expect (yum install expect)
- # 离线包 系统=centos7.9
- #( expect-5.45-14.el7_1.x86_64.rpm tcl-8.5.13-8.el7.x86_64.rpm )
-
- echo '完成备份'
执行: sh db-backup.sh
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。