查看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看不到呢?