mysql日志binlog操做

  • MySQL binlog格式

binlog的格式也有三种:STATEMENT、ROW、MIXED 。mysql

一、STATMENT模式:基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中。sql

     优势:不须要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减小了磁盘IO,提升性能。c#

     缺点:在某些状况下会致使master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)函数

二、基于行的复制(row-based replication, RBR):不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改为了什么样子了。性能

     优势:不会出现某些特定状况下的存储过程、或function、或trigger的调用和触发没法被正确复制的问题。spa

     缺点:会产生大量的日志,尤为是alter table的时候会让日志暴涨。日志

三、混合模式复制(mixed-based replication, MBR):以上两种模式的混合使用,通常的复制使用STATEMENT模式保存binlog,对于STATEMENT模式没法复制的操做使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。orm

  • binlog日志经常使用操做

查看binlog日志是否开启事件

mysql> show variables like 'log_%'; 

+----------------------------------------+----------------------------------------+
| Variable_name                          | Value                                  |
+----------------------------------------+----------------------------------------+
| log_bin                                | ON                                     |
| log_bin_basename                       | /usr/local/mysql/data/binlog           |
| log_bin_index                          | /usr/local/mysql/data/binlog.index     |
| log_bin_trust_function_creators        | OFF                                    |
| log_bin_use_v1_row_events              | OFF                                    |
| log_error                              | /usr/local/mysql/data/mysqld.local.err |
| log_error_services                     | log_filter_internal; log_sink_internal |
| log_error_suppression_list             |                                        |
| log_error_verbosity                    | 2                                      |
| log_output                             | TABLE                                  |
| log_queries_not_using_indexes          | OFF                                    |
| log_slave_updates                      | ON                                     |
| log_slow_admin_statements              | OFF                                    |
| log_slow_extra                         | OFF                                    |
| log_slow_slave_statements              | OFF                                    |
| log_statements_unsafe_for_binlog       | ON                                     |
| log_throttle_queries_not_using_indexes | 0                                      |
| log_timestamps                         | UTC                                    |
+----------------------------------------+----------------------------------------+
18 rows in set (0.00 sec)

查看binlog日志格式it

mysql> show variables like '%binlog_format%';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
1 row in set (0.00 sec)

设置binlog格式

mysql> set global binlog_format='MIXED';

Query OK, 0 rows affected (0.00 sec)

查询全部binlog日志列表

mysql> show master logs;

+---------------+-----------+-----------+
| Log_name      | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000001 |       668 | No        |
| binlog.000002 |       337 | No        |
+---------------+-----------+-----------+
2 rows in set (0.00 sec)

查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操做事件pos结束点(Position)值

mysql> show master status;

+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000002 |      337 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

查询第一个最先的binlog日志

mysql> show binlog events;

+---------------+-----+----------------+-----------+-------------+------------------------------------------------------------------------
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                                                    
+---------------+-----+----------------+-----------+-------------+------------------------------------------------------------------------
| binlog.000001 |   4 | Format_desc    |         1 |         124 | Server ver: 8.0.17, Binlog ver: 4                   
| binlog.000001 | 124 | Previous_gtids |         1 |         155 |                                          
| binlog.000001 | 155 | Anonymous_Gtid |         1 |         234 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                
| binlog.000001 | 234 | Query          |         1 |         477 | ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' AS '$A$005$\\\"r^.c#qdplP\'+ya2kiwXO5BzYZL/FFhC2d33MFMdRMSFbzECvYz62sZS/' /* xid=2 */ |
| binlog.000001 | 477 | Anonymous_Gtid |         1 |         554 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                       
| binlog.000001 | 554 | Query          |         1 |         645 | FLUSH PRIVILEGES;           
| binlog.000001 | 645 | Stop           |         1 |         668 |                   
+---------------+-----+----------------+-----------+-------------+------------------------------------------------------------------------
7 rows in set (0.01 sec)

查询指定binlog信息

mysql> show binlog events in 'binlog.000002';
+---------------+-----+----------------+-----------+-------------+--------------------------------------+
| Log_name      | Pos | Event_type     | Server_id | End_log_pos | Info                                 |
+---------------+-----+----------------+-----------+-------------+--------------------------------------+
| binlog.000002 |   4 | Format_desc    |         1 |         124 | Server ver: 8.0.17, Binlog ver: 4    |
| binlog.000002 | 124 | Previous_gtids |         1 |         155 |                                      |
| binlog.000002 | 155 | Anonymous_Gtid |         1 |         232 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| binlog.000002 | 232 | Query          |         1 |         337 | CREATE SCHEMA `log` /* xid=207 */    |
+---------------+-----+----------------+-----------+-------------+--------------------------------------+
4 rows in set (0.01 sec)
相关文章
相关标签/搜索