linux定时备份mysql8数据库并删除10天前的备份文件

mysql5的备份脚本 mysqlbackup.sh

#!/bin/bash
 
date_now = $(date +%Y%m%d%H%M)
date_day = $(date "+%Y-%m-%d")
function backup() { 
    echo "start ..."
	# 密码要是包含特殊字符,要用\转
	mysqldump -u root -plan\&ren312 --all-databases > lanren312/mysqlbackup/mysqlbackup_${date_now}.sql
    echo "备份数据库完成时间: " ${date_now}
}
backup

升级到mysql8后,执行脚本报错,大致意思就是密码不能写在脚本中

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

执行手动备份

mysqldump -u root -p --all-databases > /lanren312/mysqlbackup/mysqlbackup_20230323.sql
输入mysql密码

想要做成脚本启动,参考 https://blog.csdn.net/qq_44209563/article/details/107525997

修改my.cnf配置文件

find / -name my.cnf   # 查找文件位置
[client]  --这个没有就新增
user=数据库账户
password=数据库密码

修改脚本 mysqlbackup.sh

find / -name my.cnf      # 查找文件位置,脚本中要用
find / -name mysqlbackup # 查找文件位置,脚本中要用
#!/bin/bash
 
date_now = $(date +%Y%m%d%H%M)
date_day = $(date "+%Y-%m-%d")
backupdir=/data/mysqlbackup

function backup() { 
    echo "start ..."
    # 等于是读了my.cnf中配置
	/usr/local/mysql/bin/mysqldump --defaults-extra-file=/usr/local/mysql/my.cnf --all-databases | gzip > $backupdir/backdb-${date_now}.sql.gz
    # [-mmin +1]删除1分钟之前的文件,[-mtime +10]是每隔10天删除一次
	find $backupdir -name "backdb-*.sql.gz" -type f -mtime +10 -exec rm {} \; > /dev/null 2>&1
	echo "备份数据库完成时间: " ${date_now}
}
backup

定时启动脚本请参考我的博客 centos7定时任务清除buff/cache_centos buff/cache_lanren312的博客-CSDN博客

你可能感兴趣的:(运维,linux,数据库,服务器)