目录
前言
- MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL(create alter drop)和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
思考:
1. 如果只用redo log或者只用binlog可以吗?
要搞清楚这个问题我们首先要了解MySQL服务层的日志都有哪些及更新修改数据的过程:
Type input.information 二进制(binnary)日志 记录了对MySQL数据库执行更改的所有操作 慢查询日志 记录所有执行时间超过 long_query_time 秒的所有查询或不使用索引的查询,这里的参数可以修改 错误日志 记录在启动,运行或停止mysqld时遇到的问题 通用查询日志 记录建立的客户端连接和执行的语句 中继日志 从复制主服务器接收的数据更改
redolog日志(innodb.redolog) | 记录了更新后待写入磁盘的数据 |
undolog日志 | 记录了更新修改前的记录 |
结论:mysql中redo log日志使用了一个WAL技术(也就是先写日志再写入磁盘,其中当innodb的更新数据到buffer pool时写入redolog日志时是写入redo buffer中而不是直接写入redo日志文件内)起到一个重要作用就是减少了因为更新修改的数据量过大而造成的磁盘多次i/o成本,并且在数据过大写满时它会将部分数据优先写入磁盘,来扩出新的空间,当出现宕机的情况,我们可以根据之前的redolog记录来进行恢复;binlog日志属于MySQL服务层的操作记录日志,它记录了所有更改的操作,对于数据的恢复起到很大作用;所以当你的MySQL使用的是INNODB引擎时他们两个日志需要一起使用会更好,当你的MySQL不是INNODB引擎时也就不存在redolog所以要看情况去使用。
2.xtrabackup实现mysql:全量备份+增量备份
(1)简介:
Percona XtraBackup是一款基于MySQL的服务器的开源热备份实用程序,备份时不影响数据库的正常读写,它可以备份MySQL5.1,5.5,5.6,5.7,8.0服务器上的InnoDB,XtraDB和MyISAM表的数据,以及带有XtraDB的Percona服务器。
(2)下载:
GitHub: