mysql数据库备份以及恢复(mysqldump全表+binlog日志实现)

一、开启binlog日志(以及恢复方案)
1.查看是否开启
show variables like "%log_bin%";

2.配置文件开启binlog日志
shell>> vim /etc/my.cnf

[mysqldump]中添加

###################### binlog日志的开启###################
#单个节点id
server-id = 1
#位置一般和mysql库文件所在位置一样 ,注意此时binlog日志存放的位置是/var/lib/mysql
log-bin= /var/lib/mysql/mysql-bin
#表示此日志保存时间为10天
expire_logs_days = 10


3. 查看binlog日志内的信息(二进制看不出花样)
shell >> mysqlbinlog /var/lib/mysql/mysql-bin.000001

4. 将binlog日志转换成一个sql文件
4.1 mysql>> flush logs 开启新的binlog日志
4.2 mysql>>show master logs 查看所有的日志文件
4.2 shell >> mysqlbinlog /var/lib/mysql/mysql-bin.000001 > /home/back.sql 转化.sql文件

5.编辑sql文件 删除sql文件中失误的命令(通过最前面的语句号可以看到一条语句的整体)

6.恢复文件
①先恢复 mysqldump 中的全库数据 ,
②再恢复 binlog日志中的数据
shell >> mysql -uroot -p exersize(数据库的名称) </home/back.sql
③如果在恢复过程中有人对数据库进行操作还要将新的binlog日志进行恢复

二、linux定时备份任务执行shell
每天凌晨 2:00 将mysql 数据库,备份到文件中。
步骤(1) crontab -e
步骤(2) 0 2 * * * sh /usr/mysqlbackShell/mysql_db_backup.sh


三、编写shell (/usr/mysqlbackShell/mysql_db_backup.sh)

#备份目录
BACKUP=/data/backup/db
#当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME
#数据库的地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=12345678
#备份的数据库名
DATABASE=mydb
#创建备份目录, 如果不存在,就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
#将文件处理成
tar.gz cd ${BACKUP} tar -zcvf $DATETIME.tar.gz ${DATETIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}
#删除 10 天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库${DATABASE} 成功~"

四、数据的恢复
先恢复mysqldump生成的数据库 source +文件所在的目录
再恢复binlog日志文件信息 如上

posted @ 2021-10-26 13:45  zw至文  阅读(629)  评论(0)    收藏  举报