欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL?binlog格式之Row和Statement語句詳解

 更新時間:2023年12月18日 09:47:31   作者:a朋  
這篇文章主要為大家介紹了MySQL?binlog格式之Row和Statement語句詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

MySQL binlog記錄

binlog記錄MySQL的所有修改操作,包括DML操作(create/update/delete)以及DDL操作,必須是已提交的事務(wù)。

binlog可以在從庫中進(jìn)行重放,以實(shí)現(xiàn)MySQL數(shù)據(jù)的高可用:

  • master節(jié)點(diǎn)將數(shù)據(jù)修改操作寫入本機(jī)的binlog;
  • slave節(jié)點(diǎn)上的I/O線程讀取master節(jié)點(diǎn)的binlog,并寫入到本地的relay-log;
  • slave節(jié)點(diǎn)上的SQL線程讀取relay-log并進(jìn)行重放;

binlog格式有:statement、row、mixed;

> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.001 sec)

statement格式

statement記錄的是執(zhí)行的sql語句,也就是主庫上執(zhí)行了什么語句,binlog中就記錄什么語句。

statement格式的優(yōu)點(diǎn):

  • 由于僅記錄sql語句,日志記錄量較少,可以節(jié)約磁盤和網(wǎng)絡(luò)I/O;

statement格式的缺點(diǎn):

  • 對于特定的函數(shù),比如UUID(),user()這些非確定性函數(shù),在主備服務(wù)器上的執(zhí)行結(jié)果不同,可能造成主備數(shù)據(jù)不一致;
  • 生產(chǎn)環(huán)境中一般不使用。

statement格式的問題

statement格式可能導(dǎo)致主備服務(wù)器數(shù)據(jù)的不一致,比如下表t:

mysql> CREATE TABLE `t` (
  `id` int(11) NOT NULL,
  `a` int(11) DEFAULT NULL,
  `t_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `a` (`a`),
  KEY `t_modified`(`t_modified`)
) ENGINE=InnoDB;
insert into t values(1,1,'2018-11-13');
insert into t values(2,2,'2018-11-12');
insert into t values(3,3,'2018-11-11');
insert into t values(4,4,'2018-11-10');
insert into t values(5,5,'2018-11-09');

當(dāng)執(zhí)行sql語句:

mysql> delete from t where a>=4 and t_modified<='2018-11-10' limit 1;

設(shè)置binlog_format=statement,如果主庫和從庫上在執(zhí)行上述sql語句時,選擇了不同的索引,則會刪除不同的數(shù)據(jù):

  • 在主庫上:如果delete操作使用索引a,那么將刪除a=4這一行;
  • 在從庫上:如果delete操作使用索引t_modified,那么將刪除t_modified='2018-11-09',也就是a=5這一行;

row格式

row記錄的是每一行記錄的增/刪/改操作,若一條sql語句修改了1000條記錄,row格式的日志將會分別記錄1000條記錄的修改,而statement僅記錄一條sql語句。

row格式的優(yōu)點(diǎn):

  • 主從復(fù)制安全,可以保證主備服務(wù)器數(shù)據(jù)完全一致;
  • 若誤操作修改了數(shù)據(jù),同時沒有備份恢復(fù),可以通過分析二進(jìn)制日志,通過對記錄做反向操作,達(dá)到恢復(fù)數(shù)據(jù)的目的;

mixed格式

mixed格式下,根據(jù)sql語句特點(diǎn),由系統(tǒng)決定某個修改使用row還是statement格式進(jìn)行存儲。

若sql語句可能引起主備不一致,那么使用row格式,否則使用statement格式。

以上就是MySQL binlog格式之Row和Statement語句詳解的詳細(xì)內(nèi)容,更多關(guān)于MySQL binlog格式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 修改Mysql root密碼的方法

    修改Mysql root密碼的方法

    這篇文章主要介紹了修改Mysql root密碼的方法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • mysql建立高效的索引實(shí)例分析

    mysql建立高效的索引實(shí)例分析

    這篇文章主要介紹了mysql建立高效的索引,結(jié)合實(shí)例形式分析了mysql建立高效索引的相關(guān)實(shí)現(xiàn)技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • MySQL字段時間類型該如何選擇實(shí)現(xiàn)千萬數(shù)據(jù)下性能提升10%~30%

    MySQL字段時間類型該如何選擇實(shí)現(xiàn)千萬數(shù)據(jù)下性能提升10%~30%

    這篇文章主要介紹了MySQL字段的時間類型該如何選擇?才能實(shí)現(xiàn)千萬數(shù)據(jù)下性能提升10%~30%,主要概述datetime、timestamp與整形時間戳相關(guān)的內(nèi)容,并在千萬級別的數(shù)據(jù)量中測試它們的性能,最后總結(jié)出它們的特點(diǎn)與使用場景
    2023-10-10
  • MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實(shí)現(xiàn)原理

    MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實(shí)現(xiàn)原理

    這篇文章主要介紹了MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實(shí)現(xiàn)原理,但是mvcc?的實(shí)現(xiàn)原理是什么呢?下文我們就來實(shí)例說明來mvcc?的實(shí)現(xiàn)原理,感興趣的小伙伴可以參考一下
    2022-05-05
  • MySQL慢查日志的開啟方式與存儲格式詳析

    MySQL慢查日志的開啟方式與存儲格式詳析

    這篇文章主要給大家介紹了關(guān)于MySQL慢查日志的開啟方式與存儲格式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Sysbench多線程性能測試工具

    Sysbench多線程性能測試工具

    sysbench是一個多線程性能測試工具,可以進(jìn)行CPU/內(nèi)存/IO/數(shù)據(jù)庫等性能測試,不過我絕大多數(shù)的時候都是用它來對數(shù)據(jù)庫(MySQL)進(jìn)行oltp測試
    2012-11-11
  • MySQL主從切換的超詳細(xì)步驟

    MySQL主從切換的超詳細(xì)步驟

    一般來說在客戶的生產(chǎn)環(huán)境,每隔一段實(shí)踐就需要進(jìn)行MySQL數(shù)據(jù)庫的功能演練,主從切換,數(shù)據(jù)同步,數(shù)據(jù)備份等,下面這篇文章主要給大家介紹了關(guān)于MySQL主從切換的超詳細(xì)步驟,需要的朋友可以參考下
    2022-06-06
  • MySQL中UPDATE JOIN語句的使用詳細(xì)

    MySQL中UPDATE JOIN語句的使用詳細(xì)

    UPDATE JOIN是MySQL中一種結(jié)合UPDATE語句和JOIN操作的技術(shù),本文主要介紹了MySQL中UPDATE JOIN語句的使用詳細(xì),具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • mysql.help_topic的作用以及使用方法

    mysql.help_topic的作用以及使用方法

    這篇文章主要給大家介紹了關(guān)于mysql.help_topic的作用以及使用方法,mysql.help_topic表是MySQL數(shù)據(jù)庫中的一個系統(tǒng)表,它存儲了MySQL數(shù)據(jù)庫中所有可用的幫助主題的信息,需要的朋友可以參考下
    2023-11-11
  • MySQL之臨時表的實(shí)現(xiàn)示例

    MySQL之臨時表的實(shí)現(xiàn)示例

    MySQL臨時表是存儲在內(nèi)存或者磁盤上的臨時數(shù)據(jù)表,它們的生命周期只限于當(dāng)前數(shù)據(jù)庫會話,臨時表的創(chuàng)建和使用方式與普通表類似,本文就詳細(xì)的介紹了MySQL之臨時表,感興趣的可以了解一下
    2023-08-08

最新評論