hanhy

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 的形式为 000001000002 等。每次重启 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;

 


 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-11-20
  • 2021-11-20
  • 2021-11-20
  • 2021-11-20
  • 2021-11-20
  • 2021-12-29
猜你喜欢
  • 2022-12-23
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-21
  • 2021-11-20
相关资源
相似解决方案