zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Linux单机MySQL数据库自动备份

2023-09-11 14:17:48 时间

准备:

创建几个目录

mkdir -vp mysql_backup/data mysql_backup/logs mysql_backup/scripts

data:用来存放备份数据

logs:存放脚本运行日志

scripts:存放备份脚本

 

1、指定数据库备份:

[root@iZwz90hf9uqjtrspga3v5bZ kuliya]# cd mysql_backup/scripts/

[root@iZwz90hf9uqjtrspga3v5bZ scripts]# vim db_backup.sh

备份脚本:

BACKUP_ROOT=/data/xvdb/mysql_backup    
BACKUP_FILEDIR=$BACKUP_ROOT/data       

DATE=$(date +%Y%m%d%H%M)

######备份######
db=数据库名称
echo ----------backup begin---------------------------------
mysqldump -h主机IP -uroot -p密码 -P端口 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------

echo "done"

-h主机ip:配置mysql的ip地址

-P端口:配置要备份的MySQL端口

----以上两项是为了防止单机MySQL配置了多个端口或者多个版本,以免出错

 

 

2、批量备份脚本:

BACKUP_ROOT=/data/xvdb/mysql_backup
BACKUP_FILEDIR=$BACKUP_ROOT/data

DATE=$(date +%Y%m%d%H%M)

DATABASES=$(mysql -h主机IP -uroot -p密码 -P端口 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")

for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
mysqldump -h主机IP -uroot -p密码 -P端口 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
done

echo "done"

配置完脚本,记得 chmod 777 backup.sh

3、配置Crontab:

[root@iZwz90hf9uqjtrspga3v5bZ scripts]# crontab -e

加入

*/1 * * * * /data/xvdb/mysql_backup/scripts/db_backup.sh > /data/xvdb/mysql_backup/logs/backup.log 2>&1

*/1 * * * *为Crontab定时规则,这里测试,1分钟执行一次。

然后就是等待。

查看Crontab执行情况:

[root@iZwz90hf9uqjtrspga3v5bZ scripts]# tail -10f /var/log/cron
Sep 10 14:28:01 iZwz90hf9uqjtrspga3v5bZ CROND[26404]: (root) CMD (/data/xvdb/mysql_backup/scripts/db_backup.sh > /data/xvdb/mysql_backup/logs/db_backup.log 2>&1)
Sep 10 14:29:01 iZwz90hf9uqjtrspga3v5bZ CROND[26420]: (root) CMD (/data/xvdb/mysql_backup/scripts/db_backup.sh > /data/xvdb/mysql_backup/logs/db_backup.log 2>&1)

启动/关闭Crontab

[root@iZwz90hf9uqjtrspga3v5bZ scripts]# /sbin/service crond stop

[root@iZwz90hf9uqjtrspga3v5bZ scripts]# /sbin/service crond start

[root@iZwz90hf9uqjtrspga3v5bZ scripts]# /sbin/service crond restart