MariaDB: 選擇性二進位日誌事件

來源:互聯網
上載者:User

MariaDB: 選擇性二進位日誌事件

作為MariaDB一系列有趣特性的第一篇文章,我們從選擇性跳過複製binlog事件開始。MariaDB 5.5和10支援此特性。

預設情況下使用MySQL標準複製功能時,所有事件都記錄在二進位日誌中,並複製到所有從機(可以過濾掉一些模式)。但使用此特性,可以在從機上跳過一些事件的複製,即使這些事件是被寫入到二進位日誌中的。在二進位日誌中儲存那些事件對於時間點恢複來說總是有用的。

的確,當不需要複製一個事件時,我們通常會設定 sql_log_bin = 0 ,該事件就會被跳過:既不會寫入binlog也不會複製到從機。

然而使用此新特性,只需要設定一個會話級變數標記一些事件,就可以使這些事件寫入二進位日誌,隨即在一些從機上被跳過。

而且該特性真的非常便於使用,你需要在主機上設定:

set skip_replication=1;

並在從機上設定replicate_events_marked_for_skip='FILTER_ON_MASTER'或'FILTER_ON_SLAVE',主機上跳過的事件就不會被複製。

replicate_events_marked_for_skip得有效值包括:

 

  • REPLICATE(預設值) : 從機會複製被跳過的事件

  • FILTER_ON_SLAVE: 從機會跳過權杖的事件並且不會複製

  • FILTER_ON_MASTER : 過濾操作會在主機完成,因此從機不會收到被跳過的事件從而節省網路頻寬

這是一個很酷的特性,但是它在什麼時候會特別有用呢?

用例:

在歸檔時使用它非常有意思。的確,很多時候當人們歸檔資料時,他們使用pt-archiver 等工具刪除資料並在歸檔伺服器上複製刪除的資料。

由於有了此特性,我們可以使一個從機不刪除那些資料,而不必使用歸檔伺服器複製被刪除的資料。這將會快得多(更智能?),從而使歸檔伺服器總是最新的。當然,在這種情況下 sql_log_bin = 0 會起作用(如果我們忽略時間點恢複)。

但是對於Galera Cluster呢?是的,這正是此特性非常酷的地方,如果我們在一個Galera Cluster節點上使用了 sql_log_bin = 0 ,其他所有節點都將會忽略刪除操作,從而使節點之間不一致。

所以,如果你使用一個非同步從機作為Galera Cluster的歸檔伺服器,此特性真的很有必要。

如所示,你可以使一個MariaDB Galera Cluster節點加入 Percona XtraDB Cluster ,以便藉助pt-archiver刪除曆史資料:

pt-archiveris 使用 --set-vars "skip_replication=1" 參數啟動。

在 CentOS/RHEL/Scientific Linux 6 下安裝 LAMP (Apache with MariaDB and PHP)

MariaDB Proxy讀寫分離的實現

MariaDB 的詳細介紹:請點這裡
MariaDB 的:請點這裡

本文永久更新連結地址:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.