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)
相關文章
相關標籤/搜索