mysql全量备份以及binlog
1.binlog简介
mysql 的二进制日志记录着该数据库的所有增删改的操作日志(前提是要在自己的服务器上开启 binlog),还包括了这些操作的执行时间。为了显示这些二进制内容,我们可以使用
mysqlbinlog 命令来查看
2.binlog用途
其一:MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。 其二:自然就是数据恢复了,通过使用mysqlbinlog工具来使恢复数据。 二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句)语句事件。
3.开启binlog日志
通过编辑 my.cnf 中的 log-bin 选项可以开启二进制日志;形式如下: log-bin [=DIR/[filename]],其中,DIR 参数指定二进制文件的存储路径;filename 参数指定二级制文件的文件名,其形式为 filename.number,number 的形式为 000001、000002 等。每次重启 mysql 服务或运行
4.具体操作如下
用vi 打开/etc/my.cnf 编译添加如图这行,启动mysql即可
重启可以看到正常是一个binlog,一个索引,我重启两回所以产生两个binlog
5.进入mysql服务查看:
登录mysql服务器,通过mysql的变量配置表,查看二进制日志是否已开启 单词:variable[ˈvɛriəbəl] 变量
6.常用binlog日志操作命令
1.查看所有binlog日志列表 mysql> show master logs; 2.查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值 mysql> show master status; 3.刷新log日志,自此刻开始产生一个新编号的binlog日志文件 mysql> flush logs; 注:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志; 4.重置(清空)所有binlog日志 mysql> reset master; 轻易别这样玩,找专业的DBA搞来搞
7.查看某个binlog日志内容,常用方式:
截取部分
# at 214 #170730 16:19:41 server id 1 end_log_pos 356 CRC32 0x7c20c662 Query thread_id=2 exec_time=0 error_code=0 use `cmdb`/*!*/; SET TIMESTAMP=1501402781/*!*/; create table tb1(id int primary key auto_increment,name varchar(20)) /*!*/;
解析binlog格式
位置
位于文件中的位置,“at 214”说明“事件”的起点,是以第214字节开始;“end_log_pos 356”说明以第356字节结束
时间戳
事件发生的时间戳:“120330 17:54:46”
事件类型:Query
线程id
thread_id=2
事件执行时间
事件执行花费的时间:"exec_time=0"
错误码
错误码为:“error_code=0”
服务器的标识
服务器的标识id:“server id 1”
8.上面这种办法读取出binlog日志的全文内容较多,不容易分辨查看pos点信息,这里介绍一种更为方便的查询命令
mysql> show binlog events [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count];
mysql> show binlog events [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]; 选项解析: IN \'log_name\' 指定要查询的binlog文件名(不指定就是第一个binlog文件) FROM pos 指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算) LIMIT [offset,] 偏移量(不指定就是0) row_count 查询总条数(不指定就是所有行)
释义: 查询的binlog日志文件名 pos起始点 事件类型:Query 标识是由哪台服务器执行的 pos结束点:11308(即:下行的pos起始点)
A.查询第一个(最早)的binlog日志: mysql> show binlog events\G; B.指定查询 mysql-bin.000021 这个文件: mysql> show binlog events in \'mysql-bin.000021\'\G; C.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起: mysql> show binlog events in \'mysql-bin.000021\' from 8224\G; D.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起,查询10条 mysql> show binlog events in \'mysql-bin.000021\' from 8224 limit 10\G; E.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起,偏移2行,查询10条 mysql> show binlog events in \'mysql-bin.000021\' from 8224 limit 2,10\G;