查看MariaDB bin log

今天在學習MariaDB在產線的部署架構時,重新了解了主從複製的原理,同時產生想查看binlog的好奇心,折騰了一番最終搞定

MariaDB主從複製

Mariadb 主從複製

MySQL的複製就是基於二進位日誌而完成的,其工作原理如下

當MySQL的Master節點的數據有更改的時候,Master會主動通知Slave,讓Slave主動來Master獲取二進位日誌,於是Slave開啟一個I/Othread,向Master請求二進位日誌中記錄的語句;Master將二進位日誌中記錄的語句發給Slave,Slave則將這些語句存到中繼日誌中,進而從中繼日誌中讀取一句,執行一句,直到所有的語句被執行完。而經SQL語句從中繼日誌中讀取出來,再一一執行的進程叫做SQLthread;將這些語句執行完之後,從節點的數據就和主節點的數據相同了,這就是所謂的MySQL主從複製。

Advertisements

查看bin log

在我們的一個測試環境上,通過如下命令查看

MariaDB [(none)]> show binary logs;

1381 - You are not using binary logging

MariaDB [(none)]> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin | OFF |

+---------------+-------+

錯誤原因:測試環境中部署的實例沒有開啟bin log

Advertisements

MariaDB [(none)]> set globallog_bin_trust_function_creators=1;

MariaDB [(none)]> show variables like'log_bin_trust_function_creators';

+---------------------------------+-------+

| Variable_name | Value |

+---------------------------------+-------+

| log_bin_trust_function_creators | ON |

+---------------------------------+-------+

這樣添加了參數以後,如果mysqld重啟,那個參數又會消失,因此記得在my.cnf配置文件中添加:

log_bin_trust_function_creators=1

log_bin=mysql_bin

添加參數之後重啟mysql

MariaDB [(none)]> show binary logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql_bin.000001 | 217795 |

+------------------+-----------+

[root@mariadb bin]# mysqlbinlog –no-defaultsmysql-bin.00001;

;

;

;

DELIMITER ;

mysqlbinlog: File '' not found (Errcode: 2)

DELIMITER ;

# End of log file

ROLLBACK ;

;

;

遺留問題

從上面Mariadb複製原理中我認為bin log記錄的master上執行的sql語句,但是為什麼binlog看不到呢?

Advertisements

你可能會喜歡