使用mysqldump对mysql进行备份与恢复
说明:
主参考:
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进行备份与恢复的更多相关文章
- MySQL的备份与恢复
Linux下的mysql的备份与恢复 备份: 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# ...
- MySQL增量备份与恢复实例【转】
小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的 ...
- Mysql 数据备份与恢复,用户创建,授权
Mysql 数据备份与恢复,用户创建,授权 1. Mysqldump >outfile.sql 2. Mysql –uxxx –pxxx < backfile.sql 3. Create ...
- 2020重新出发,MySql基础,MySql数据库备份与恢复
@ 目录 MySQL数据库备份与恢复 数据库为什么需要备份 MySQL备份类型 MySQL热备份及恢复 逻辑备份 mysqldump SELECT INTO-OUTFILE mydumper 裸文件备 ...
- 使用mysqldump进行mysql数据库备份还原
mysqldump是mysql自带的备份还原工具,默认在安装目录的bin下 可通过cmd命令行启动,然后运行: 还原一个数据库: mysql -h 主机 -u 用户名 -p密码 数据库名 < 指 ...
- MYSQL数据库备份与恢复
mysqldump -h主机名 -P端口 -u用户名 -p密码 (–database) 数据库名 > 文件名.sql 备份MySQL数据库的命令 mysqldump -hhostname -u ...
- 七、linux-mysql下mysql增量备份与恢复
1.备份的意义 运维工作:保护公司的数据 . 网站7*24小时服务 但相当来说,数据更加重要,而数据最核心的就是数据库数据,所以数据库的备份和恢复就显得十分重要. 2.备份的几个参数 mys ...
- MYSQL的备份与恢复--逻辑备份mysqldump
目录 0.备份与恢复概述 1.逻辑备份-完整备份与恢复 2.逻辑备份-增量备份与恢复 (1)环境准备 (2)恢复全量数据 (3)恢复增量备份 3.新来的开发妹子删了库! (1)模拟环境准备 (2)全备 ...
- MySQL的备份与恢复理解与备份策略
MySQL的备份主要分为逻辑备份和物理备份 逻辑备份 在MySQL中逻辑备份的最大优点是对各种存储引擎都可以用同样的方法来备份.而物理备份则不同,不同的存储引擎有着不同的备份方法.Mysql中的逻辑备 ...
随机推荐
- Rasterize order group
增加shade 这里的并行 可以让更多 ...并行只在write那里wait 语法 struct I {float a [[raster_order_group(0)]];};
- [2019牛客多校第二场][G. Polygons]
题目链接:https://ac.nowcoder.com/acm/contest/882/G 题目大意:有\(n\)条直线将平面分成若干个区域,要求处理\(m\)次询问:求第\(q\)大的区域面积.保 ...
- [jenkins] 启动错误 Failed to start LSB: Jenkins Automation Server.
解决办法见https://blog.csdn.net/qq_34208844/article/details/87865672
- Idea使用Lombok简化实体类代码
引入相应的maven包 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lo ...
- App自动化-python-Unittest框架
TestCase: 一段Testcase代码示例: # -*- coding: utf-8 -*- ''' Created on 2019-6-27 @author: adminstrator ''' ...
- Codevs 2482 宝库通道 2007年省队选拔赛安徽
2482 宝库通道 2007年省队选拔赛安徽 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 探宝的旅程仍然继续中,由于你的帮助 ...
- 百度AI接口调用
创建应用 登录网站 登录www.ai.baidu.com 进入控制台 进入语音技术 创建应用 管理应用 技术文档 SDK开发文档 接口能力 版本更新记录 注意事项 目前本SDK的功能同REST API ...
- IDEA2019.1.3的安装和破解
上一篇文章我有写过我会尝试安装IDEA(这玩意儿收费啊!),倘若尝试成功以后都会用它编译,很幸运,我安装成功了,所以今天这篇文章我来写安装和破解方法. IDEA界面: 首先我们访问官方网站:htt ...
- elasticsearch+logstash+kibana部署
这篇博客讲的是elasticsearch+logstash+kibana部署的方法. 内容大纲: 1.elasticsearch+logstash+kibana部署 2.收集Tomcat日志 3.收集 ...
- 苹果系统OSX中Automator批量重命名
Automator,看字面意思就无比强大,[自动机器].有什么能比自动还让人着魔? 答案是没有✔ 如果你用的是mac,如果你有一堆文件要重新整理命名,如果你还在Goole什么"批量重命名软件 ...