设置自动备份mysql数据库

设置自动备份mysql数据库

低版本:

1.安装gzip工具

]# yum -y install gzip

2.在mysql中创建一个备份的用户

]# mysql -uroot -p
MariaDB [(none)]> GRANT ALL ON zabbix.* TO beifenuser@localhost IDENTIFIED BY 'beifen321';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

3.创建一个存放备份的文件夹

]# mkdir -p /home/backup/mysql

4.创建一个备份的脚本

复制代码

]# vi beifen.sh
#!/bin/bash
# 数据库信息
DB_USER="backupuser"
DB_PASS="backpass"
DB_HOST="localhost"
DB_NAME=(zabbix)   #需要备份的数据库名称,注意中间用空格隔开.
 
# 其他设置
BIN_DIR="/usr/bin"   # mysqldump命令执行路径
BACK_DIR="/home/backup/mysql"    #备份目录,这里设为/home/backup/mysql
DATE=`date +%Y%m%d%H%M%S`       #显示备份时间,格式为20180808122556
# 备份所有指定数据库
for backdb in ${DB_NAME[@]}
#也可以写成for eachdb in ${DB_NAME[*]}
do
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST -B ${backdb} | gzip > $BACK_DIR/db_${eachdb}_$DATE.sql.gz
done
# 删除5天之前的备份文件,但保留日期为1号的文件(用于手动删除)
find $BACK_DIR/* -regextype "posix-extended" -not -regex ".*[0-9]{6}01[0-9]{6}\.sql\.gz$" -mtime +5 -exec rm {} \;
 

复制代码

5.测试脚本

]# chmod 777 beifen.sh
]# sh beifen.sh

 

 

高版本:

mysql备份报错:

mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

在高版本中,是不允许使用明文密码备份的,所以我们需要修改下配置信息,并使用另一种命令格式备份

1.在mysql配置文件里添加下列几行配置信息

]# vi /etc/my.cnf
[client]
host=localhost
user=backupuser
password=backpass

2.输入备份命令

]# mysqldump --defaults-extra-file=/etc/my.cnf 数据库名 > /home/backup/bak_test.sql

3.脚本

复制代码

]# vi beifen.sh
#!/bin/bash
#数据库名称
DB_NAME=(数据库名称1 数据库名称2)   #需要备份的数据库名称,注意中间用空格隔开.
 
# 其他设置
BIN_DIR="/usr/bin"   # mysqldump命令执行路径
BACK_DIR="/home/backup/mysql"    #备份目录,这里设为/home/backup/mysql
DATE=`date +%Y%m%d%H%M%S`       #显示备份时间,格式为20180808122556
# 备份所有指定数据库
for backdb in ${DB_NAME[@]}
#也可以写成for backdb in ${DB_NAME[*]}
do
$BIN_DIR/mysqldump --defaults-extra-file=/etc/my.cnf ${backdb} | gzip > $BACK_DIR/db_${eachdb}_$DATE.sql.gz
done
# 删除5天之前的备份文件,但保留日期为1号的文件(用于手动删除)
find $BACK_DIR/* -regextype "posix-extended" -not -regex ".*[0-9]{6}01[0-9]{6}\.sql\.gz$" -mtime +5 -exec rm {} \;

复制代码

编辑定时任务

1.编辑自动定时任务

]# crontab -e
0 16 * * 1 /home/beifen.sh       #设置为每周1执行备份

2.查看已经保存的定时任务

]# crontab -l
0 16 * * 1 /home/beifen.sh

3.Crontab格式说明

 

 

 

分类: centos

标签: centosmysql备份数据库crontab定时任务linux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值