说明:
主参考:
https://blog.csdn.net/fanren224/article/details/79693860

mysql数据全量备份

1.开启二进制日志,备份指定数据库

cat << EOF > /root/sqlfull.sh

#!/bin/bash

BACKUP_USER='root'

BACKUP_PASSWD='m4r!adbOP'

mysqldump --quick --events  --routines --triggers --hex-blob --flush-logs --single-transaction --master-data=2 -u${BACKUP_USER} -h 127.0.0.1 -p${BACKUP_PASSWD} --databases {"test","test2"} > /root/dbbak.sql

EOF

chmod +x /root/sqlfull.sh

--flush-logs 备份开始时滚动一次二进制日志

--routines  备份存储过程和函数

--triggers  备份触发器

--events    备份事件表

--single-transaction  表类型为InnoDB时,热备,表类型为MyISAM时,温备

--master-data=2  以注释的方式记录备份开始时二进制日志的前缀名和位置

--master-data=1  记录备份开始时二进制日志的前缀名和位置,用于从库通过备份sql还原数据,还原后能从指定位置开始同步

2.未开启二进制日志,备份指定数据库

cat << EOF > /root/sqlfull.sh

#!/bin/bash

BACKUP_USER='root'

BACKUP_PASSWD='m4r!adbOP'

mysqldump --quick --events  --routines --triggers --hex-blob --single-transaction -u${BACKUP_USER} -h 127.0.0.1 -p${BACKUP_PASSWD} --databases {"test","test2"} > /root/dbbak.sql

EOF

chmod +x /root/sqlfull.sh

mysql数据恢复

因为恢复数据时会执行大量的insert语句,如果没有特殊要求,还原时没有必要将这些操作记录到二进制日志中,所以关闭当前会话的二进制日志记录。

set sql_log_bin=OFF;

所有恢复操作完成后,再将当前会话中的sql_log_bin再次开启。

恢复命令

source /root/dbbak.sql

此命令只是恢复到了备份sql对应的时间点,还需要进行时间点还原。

进行时间点恢复时,备份时间点之后的数据则需要通过二进制日志进行还原,首先,要从二进制日志中提取对应的sql,提取sql的起始位置为备份开始时那一刻二进制文件对应的position,因为在使用mysldump备份时,我们推荐使用--master-data=2选项,所以在对应的数据库备份sql文件中应该存在对应的position,提取sql的结束位置应该是drop语句对应的位置,因为咱们模拟的场景是有人误操作drop了数据库,所以结束位置应该是drop语句的位置。注意,不要把误操作的drop语句提取出来,否则重放对应sql时又会将对应的数据删除,如果是那样就前功尽弃了。

通过二进制日志进行还原

主参考:
https://blog.csdn.net/liuchen1314/article/details/79628555

基于位置恢复,通过查看日志文件信息,确认6259-6362为误操作点
mysqlbinlog --stop-position=6259 mysql-bin.000001 | mysql -uroot -p #从1开始至6259的事件读,不包括6259事件
mysqlbinlog --start-position=6363 mysql-bin.000001 | mysql -uroot -p #从6259的事件开始读
取两事件点
mysqlbinlog --start-position=5786 --stop-position=6254 mysql-bin.000001 | mysql -uroot -p

mysql数据增量备份

cat << EOF > /root/sqladd.sh

#!/bin/bash

BACKUP_USER='root'

BACKUP_PASSWD='m4r!adbOP'

backupdir=/root/backup

datedir=`date "+%Y%m%d"`

mkdir $backupdir/$datedir

logsindexpath=/usr/local/mysqldata/binlogs/mysql-bin.index

mysqladmin -u${BACKUP_USER} -h 127.0.0.1 -p${BACKUP_PASSWD} flush-logs

binlog_cp=`head -n -1 ${logsindexpath}`

for i in ${binlog_cp}

do

mysql -u${BACKUP_USER} -h 127.0.0.1 -p${BACKUP_PASSWD} -e "\! cp -p ${i} ${backupdir}/${datedir}/"

done

binlog_rm=`tail -n 1 ${logsindexpath} | awk -F '/' '{print $NF}'`

mysql -u${BACKUP_USER} -h 127.0.0.1 -p${BACKUP_PASSWD} -e "purge binary logs to '${binlog_rm}'"

EOF

chmod +x /root/sqladd.sh

每周一次全量备份,每天一次增量备份,只保留一月以内的备份。

echo << EOF > /root/sqlclean.sh

#!/bin/bash

find /root/backup/ -type f -mtime +30 -exec rm -rf {} \;

EOF

chmod +x /root/sqlclean.sh

crontab -e

0 22 * * 6  /root/sqlfull.sh

0 3 * * *   /root/sqladd.sh

0 0 * * 7 /root/sqlclean.sh

crontab -l

使用mysqldump对mysql进行备份与恢复的更多相关文章

  1. MySQL的备份与恢复

    Linux下的mysql的备份与恢复 备份: 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# ...

  2. MySQL增量备份与恢复实例【转】

    小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的 ...

  3. Mysql 数据备份与恢复,用户创建,授权

    Mysql 数据备份与恢复,用户创建,授权 1. Mysqldump >outfile.sql 2. Mysql –uxxx –pxxx < backfile.sql 3. Create  ...

  4. 2020重新出发,MySql基础,MySql数据库备份与恢复

    @ 目录 MySQL数据库备份与恢复 数据库为什么需要备份 MySQL备份类型 MySQL热备份及恢复 逻辑备份 mysqldump SELECT INTO-OUTFILE mydumper 裸文件备 ...

  5. 使用mysqldump进行mysql数据库备份还原

    mysqldump是mysql自带的备份还原工具,默认在安装目录的bin下 可通过cmd命令行启动,然后运行: 还原一个数据库: mysql -h 主机 -u 用户名 -p密码 数据库名 < 指 ...

  6. MYSQL数据库备份与恢复

    mysqldump -h主机名  -P端口 -u用户名 -p密码 (–database) 数据库名 > 文件名.sql 备份MySQL数据库的命令 mysqldump -hhostname -u ...

  7. 七、linux-mysql下mysql增量备份与恢复

    1.备份的意义 运维工作:保护公司的数据     .  网站7*24小时服务 但相当来说,数据更加重要,而数据最核心的就是数据库数据,所以数据库的备份和恢复就显得十分重要. 2.备份的几个参数 mys ...

  8. MYSQL的备份与恢复--逻辑备份mysqldump

    目录 0.备份与恢复概述 1.逻辑备份-完整备份与恢复 2.逻辑备份-增量备份与恢复 (1)环境准备 (2)恢复全量数据 (3)恢复增量备份 3.新来的开发妹子删了库! (1)模拟环境准备 (2)全备 ...

  9. MySQL的备份与恢复理解与备份策略

    MySQL的备份主要分为逻辑备份和物理备份 逻辑备份 在MySQL中逻辑备份的最大优点是对各种存储引擎都可以用同样的方法来备份.而物理备份则不同,不同的存储引擎有着不同的备份方法.Mysql中的逻辑备 ...

随机推荐

  1. pandas df 遍历行方法

    pandas 遍历有以下三种访法. iterrows():在单独的变量中返回索引和行项目,但显着较慢 itertuples():快于.iterrows(),但将索引与行项目一起返回,ir [0]是索引 ...

  2. vue初级尝试

    为了跟上前端后台化的潮流,本少不得不开始关注vue,下列上机代码是针对App.vue进行的更改 数据渲染----一般键值对,数组,对象和对象数组 <template> <div id ...

  3. 4. CSS新特性之浏览器私有前缀

    1. 浏览器私有前缀 浏览器私有前缀是为了兼容老版本的写法,比较新版本的浏览器无需添加 -moz-:代表firefox浏览器私有属性 -ms-:代表ie浏览器私有属性 -webkit-:代表safar ...

  4. Codeforces Round #589 (Div. 2) C - Primes and Multiplication(数学, 质数)

    链接: https://codeforces.com/contest/1228/problem/C 题意: Let's introduce some definitions that will be ...

  5. SpringBoot AOP注解式拦截与方法规则拦截

    AOP的本质还是动态代理对方法调用进行增强. SpringBoot 提供了方便的注解实现自定义切面Aspect. 1.使用需要了解的几个概念: 切面.@Aspect 切点.@Pointcut. 通知. ...

  6. visualstudio2019 的报表技术rdlc在windows10上出现乱码的问题解决方法

    vs2019 的报表技术rdlc在windows10上出现乱码的问题解决方法 现在好多新电脑默认是安装windows10 可能有些程序员还不习惯,但是这是趋势,windows10以下的系统漏洞很多,这 ...

  7. 小米oj 不要乱改代码(并查集)

     不要乱改代码 序号:#91难度:非常难时间限制:2000ms内存限制:50M 描述 最近小米公司内爆发了一种名叫"瞎改我代码就会死"的传染病. 传播方式是只要与染病者共同编辑过一 ...

  8. Codevs 1629 01迷宫

    1629 01迷宫 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一个由01组成的n*n格迷宫,若你位于一格0上,那么你可 ...

  9. 平衡Dom总结

    介绍: 新的项目中有些Dom元素需要和画布保持统一个适配比例 项目地址: 宝岛之光-台湾偶像剧 遇到的问题 H5项目使用Canvas, 适配采用保持宽高比例, 上下或者左右留白方式 在项目中有些Dom ...

  10. js scroll动画

    知识点 1.window.scrollTo (x,y):可以把内容滚动到指定位置  scroll  scroll:卷动意思(书卷)  从上到下移动   1.window.onscroll 窗口滚动事件 ...