Mysql大数据备份及恢复
【引自攀岩人生的博客】MySQL备份一般采取全库备份、日志备份;MySQL出现故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间;mysql的二进制日志记录着该数据库的所有增删改的操作日志还包括了这些操作的执行时间
Binlog的用途:主从同步、恢复数据库
使用binlog工具备份
查看binlog是否开启,因为默认是关闭的

从上图可知off为关闭状态,一般logbin为只读,在/etc/my.cnf下开启

重启数据库

重启后在目录下查看是否生成bin日志,黄色表示为日志
创建数据库,表,数据

创建表的时候 auto_increment为自增
重新开始一个新的日志文件
flush logs; #重新生成新的二进制文件
delete from tb1 where id=2; #删除id列中的序列号为2的数据方便测试
insert into tb1(name) values('tom'); #创建一个新的数据名为tom
查看数据

查看mysql上的二进制文件日志

查看二进制日志事件
- mysql> show binlog events;
- +------------------+------+----------------+-----------+-------------+-----------------------------------------------------------------------------------+
- | Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
- +------------------+------+----------------+-----------+-------------+-----------------------------------------------------------------------------------+
- | mysql-bin.000001 | 4 | Format_desc | 1 | 123 | Server ver: 5.7.13-log, Binlog ver: 4 |
- | mysql-bin.000001 | 123 | Previous_gtids | 1 | 154 | |
- | mysql-bin.000001 | 154 | Anonymous_Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
- | mysql-bin.000001 | 219 | Query | 1 | 316 | create database test1 |
- | mysql-bin.000001 | 316 | Anonymous_Gtid | 1 | 381 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
- | mysql-bin.000001 | 381 | Query | 1 | 525 | use `test1`; create table tb1(id int primary key auto_increment,name varchar(20)) |
- | mysql-bin.000001 | 525 | Anonymous_Gtid | 1 | 590 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
- | mysql-bin.000001 | 590 | Query | 1 | 663 | BEGIN |
- | mysql-bin.000001 | 663 | Table_map | 1 | 713 | table_id: 108 (test1.tb1) |
- | mysql-bin.000001 | 713 | Write_rows | 1 | 758 | table_id: 108 flags: STMT_END_F |
- | mysql-bin.000001 | 758 | Xid | 1 | 789 | COMMIT /* xid=10 */ |
- | mysql-bin.000001 | 789 | Anonymous_Gtid | 1 | 854 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
- | mysql-bin.000001 | 854 | Query | 1 | 927 | BEGIN |
- | mysql-bin.000001 | 927 | Table_map | 1 | 977 | table_id: 108 (test1.tb1) |
- | mysql-bin.000001 | 977 | Write_rows | 1 | 1026 | table_id: 108 flags: STMT_END_F |
- | mysql-bin.000001 | 1026 | Xid | 1 | 1057 | COMMIT /* xid=11 */ |
- | mysql-bin.000001 | 1057 | Rotate | 1 | 1104 | mysql-bin.000002;pos=4 | # 此处为日志轮换事件,执行flush logs引起的
- +------------------+------+----------------+-----------+-------------+-----------------------------------------------------------------------------------+
- 17 rows in set (0.00 sec)
查看指定二进制日志的事件(上面那个命令只能查看默认1的)
- mysql> show binlog events in 'mysql-bin.000002';
- +------------------+-----+----------------+-----------+-------------+---------------------------------------+
- | Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
- +------------------+-----+----------------+-----------+-------------+---------------------------------------+
- | mysql-bin.000002 | 4 | Format_desc | 1 | 123 | Server ver: 5.7.13-log, Binlog ver: 4 |
- | mysql-bin.000002 | 123 | Previous_gtids | 1 | 154 | |
- | mysql-bin.000002 | 154 | Anonymous_Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
- | mysql-bin.000002 | 219 | Query | 1 | 292 | BEGIN |
- | mysql-bin.000002 | 292 | Table_map | 1 | 342 | table_id: 108 (test1.tb1) |
- | mysql-bin.000002 | 342 | Delete_rows | 1 | 391 | table_id: 108 flags: STMT_END_F |
- | mysql-bin.000002 | 391 | Xid | 1 | 422 | COMMIT /* xid=14 */ |
- | mysql-bin.000002 | 422 | Anonymous_Gtid | 1 | 487 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
- | mysql-bin.000002 | 487 | Query | 1 | 560 | BEGIN |
- | mysql-bin.000002 | 560 | Table_map | 1 | 610 | table_id: 108 (test1.tb1) |
- | mysql-bin.000002 | 610 | Write_rows | 1 | 654 | table_id: 108 flags: STMT_END_F |
- | mysql-bin.000002 | 654 | Xid | 1 | 685 | COMMIT /* xid=15 */ |
- +------------------+-----+----------------+-----------+-------------+---------------------------------------+
- 12 rows in set (0.00 sec)
使用mysqlbinlog工具的-v(--verbose)选项,该选项会将行事件重构成被注释掉的伪SQL语句,如果想看到更详细的信息可以将该选项给两次如-vv,这样可以包含一些数据类型和元信息的注释内容,如
先切换到binlog所在的目录下
mysqlbinlog mysql-bin.000001
mysqlbinlog -v mysql-bin.000001
mysqlbinlog -vv mysql-bin.000001
-h,-P,-p,-u等,这些参数仅在指定了--read-from-remote-server后有效。
恢复导出binlog日志

恢复完成后查看表的数据是否完整
常见的选项有:
--start-datetime #从二进制日志中读取指定时间戳或者本地计算机时间之后的日志事件
--stop-datetime #从二进制日志中读取指定时间戳或者本地计算机时间之前的日志事件
--start-position #从二进制日志中读取指定position 事件位置作为开始
--stop-position #从二进制日志中读取指定position 事件位置作为事件截至

因为备份得时候把删除那项跳过了,所以id为2的zhangsan也恢复了
使用mysqldump备份恢复
它是用于备份和数据迁移的工具,一般在数据量比较小的情况下使用如几个G,当数据比较大的情况下建议不使用;mysqldump可以对单(多)个表、单(多)个数据库及所有数据库进行导出操作;
- mysqldump [options] db_name [tbl_name ...] #导出指定数据库或单个表
- mysqldump [options] --databases db_name ... #导出多个数据库
- mysqldump [options] --all-databases #导出所有
备份数据库test1
- mysqldump -p123456 --flush-logs test1 > /opt/test1.spl
- #备份整个数据库,并且重新开启一个新的binlog
- mysql -p123456 test1 </opt/test1.spl #从备份的目录中导入
创建数据测试mysqldump工具

查看数据

创建备份的目录及备份数据库和cp bin.000001二进制文件

清楚二进制00000.2之前的日志

删除数据测试

然后在进行备份第二个二进制文件

进行数据库恢复


查看表的数据是否恢复

上面数据已经全部恢复 希望能帮到你
Mysql大数据备份及恢复的更多相关文章
- MySQL 大数据备份方案之Percona XtraBackup
Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbacku ...
- Mysql大数据备份和增量备份及还原
目前主流的有两个工具可以实现物理热备:ibbackup和xtrabackup ;ibbackup是需要授权价格昂贵,而xtrabackup功能比ibbackup强大而且是开源的 Xtrabackup提 ...
- 涂抹mysql笔记-数据备份和恢复
<>物理备份和逻辑备份<>联机备份和脱机备份<>本地备份和远程备份<>完整备份和增量备份<>完整恢复和增量恢复<>复制表相关文件 ...
- 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)
一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...
- Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁
Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...
- 从MySQL全库备份中恢复某个库和某张表【转】
从MySQL全库备份中恢复某个库和某张表 一.全库备份-A [root@mha2 backup]#mysqldump -uroot -p123456 --default-character-set=u ...
- MySQL的数据备份以及pymysql的使用
一.MySQL的数据备份 语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot -p123 ...
- mysql数据库的备份和恢复
Mysql数据库的备份和恢复 1.备份单个数据库 mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: 语法:mysqldump –u <用户名> -p ...
- Salesforce 数据备份和恢复小知识
数据备份的类型 在Salesforce中可以使用多种API进行数据备份,它们是: REST API SOAP API Buik API Metadata API 数据备份有三种选择: 完全备份(Ful ...
随机推荐
- javascript getBoundingClientRect()获取元素四个边相对于窗口或文档的位置
Element.getBoundingClientRect()返回元素的大小及相对于窗口的位置 语法: rectObject=object.getBoundingClientRect(); 返回值是一 ...
- react native "Unable to resolve module `AccessibilityInfo`
error: bundling failed: "Unable to resolve module `AccessibilityInfo` from `/Users/apple/Websto ...
- HAN模型理解1
HAN 模型 最开始看这个模型是看的这个解释: RNN+Attention(HAN) 文本分类 阅读笔记 - 今天做作业没的文章 - 知乎 https://zhuanlan.zhihu.com/p/4 ...
- 笔记-爬虫-scrapy-srcapy-redis组件
笔记-爬虫-scrapy-srcapy-redis组件 1. 简介 scrapy是一个爬虫框架,但不支持分布式,scrapy-redis是为了更方便的实现scrapy分布式爬虫的组件. 可以 ...
- 19,Ubuntu安装之python开发
什么??公司要用Ubuntu(乌班图)?不会用??怎么进行python开发??? 乌班图操作系统下载地址:http://releases.ubuntu.com/18.04/ubuntu-18.04 ...
- P2341 [HAOI2006]受欢迎的牛(tarjan+缩点)
P2341 [HAOI2006]受欢迎的牛 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的 ...
- 页面引入外部字体ttf,如何提取所需要的ttf字体或者加载过慢的解决方法-1127更新
最近几天编写手机端的页面之后,文中需要华文行楷字体,在网上下载后,引入到了自己的前端页面,以为没有什么事了,继续码代码 @font-face { font-family:huawen; src: ur ...
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(二)
本文导航 -7. 安装 PHP0 -8. 安装 MariaDB 数据库 -9. 安装和配置 SSH 服务器 -10. 安装 GCC (GNU 编译器集) -11. 安装 Java 7. 安装 PHP ...
- 《Cracking the Coding Interview》——第11章:排序和搜索——题目7
2014-03-21 22:05 题目:给你N个盒子堆成一座塔,要求下面盒子的长和宽都要严格大于上面的.问最多能堆多少个盒子? 解法1:O(n^2)的动态规划解决.其实是最长递增子序列问题,所以也可以 ...
- 《Cracking the Coding Interview》——第8章:面向对象设计——题目1
2014-04-23 17:32 题目:请设计一个数据结构来模拟一副牌,你要如何用这副牌玩21点呢? 解法:说实话,扑克牌的花样在于各种花色.顺子.连对.三带一.炸弹等等,如果能设计一个数据结构,让判 ...