成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL 8.0與MySQL 5.7的binlog差異小結(jié)

數(shù)據(jù)庫(kù) MySQL
Binlog是MySQL的一個(gè)重要特性,它是一個(gè)用于記錄數(shù)據(jù)庫(kù)變更的二進(jìn)制日志文件,每一條會(huì)修改數(shù)據(jù)的SQL語(yǔ)句都會(huì)被記錄在binlog中。

MySQL是一個(gè)廣泛使用的開源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它提供了許多強(qiáng)大的功能,如事務(wù)、存儲(chǔ)過程、觸發(fā)器、視圖、全文索引等。但是,MySQL也有一些不足之處,比如數(shù)據(jù)的安全性和可靠性。如果數(shù)據(jù)庫(kù)發(fā)生故障或損壞,如何恢復(fù)數(shù)據(jù)?如果數(shù)據(jù)庫(kù)需要進(jìn)行主從復(fù)制或讀寫分離,如何保證數(shù)據(jù)的一致性?這些問題都需要借助一個(gè)特殊的機(jī)制來(lái)解決,那就是binlog。

1. binlog的主要用途

binlog是MySQL的一個(gè)重要特性,它是一個(gè)用于記錄數(shù)據(jù)庫(kù)變更的二進(jìn)制日志文件,每一條會(huì)修改數(shù)據(jù)的SQL語(yǔ)句都會(huì)被記錄在binlog中。通過binlog,我們可以實(shí)現(xiàn)以下幾個(gè)目的:

數(shù)據(jù)恢復(fù):如果數(shù)據(jù)庫(kù)發(fā)生故障或損壞,我們可以通過binlog來(lái)恢復(fù)數(shù)據(jù),只需要將binlog中的SQL語(yǔ)句按照順序重新執(zhí)行一遍,就可以將數(shù)據(jù)庫(kù)恢復(fù)到故障發(fā)生前的狀態(tài)。

主從復(fù)制:如果數(shù)據(jù)庫(kù)需要進(jìn)行主從復(fù)制,我們可以通過binlog來(lái)實(shí)現(xiàn),只需要將主庫(kù)的binlog傳輸?shù)綇膸?kù),并在從庫(kù)上執(zhí)行binlog中的SQL語(yǔ)句,就可以將從庫(kù)的數(shù)據(jù)與主庫(kù)保持一致。

審計(jì):如果數(shù)據(jù)庫(kù)需要進(jìn)行審計(jì),我們可以通過binlog來(lái)實(shí)現(xiàn),只需要分析binlog中的SQL語(yǔ)句,就可以了解數(shù)據(jù)庫(kù)的變更歷史,如何操作,何時(shí)操作,操作了哪些數(shù)據(jù)等。

可以看出,binlog是MySQL的一個(gè)非常重要的特性,它對(duì)于數(shù)據(jù)庫(kù)的安全性和可靠性有著重要的作用。但是,隨著MySQL的版本更新,binlog也發(fā)生了一些變化,這些變化可能會(huì)影響我們對(duì)binlog的使用和理解。在本文中,我們將介紹MySQL 8.0版本與MySQL 5.7版本在binlog方面的主要差異,以及這些差異的原因和影響。

2. binlog格式的變化

binlog的格式?jīng)Q定了binlog中記錄的內(nèi)容和形式,MySQL支持三種binlog格式,分別是:

STATEMENT:每一條會(huì)修改數(shù)據(jù)的SQL語(yǔ)句都會(huì)記錄在binlog中,不記錄具體的數(shù)據(jù)變化,而是記錄SQL語(yǔ)句的上下文信息,如執(zhí)行時(shí)間、用戶、數(shù)據(jù)庫(kù)、表等。

ROW:每一條會(huì)修改數(shù)據(jù)的SQL語(yǔ)句都會(huì)記錄在binlog中,不記錄SQL語(yǔ)句本身,而是記錄每一行數(shù)據(jù)的變化,如插入、更新、刪除等。

MIXED:根據(jù)SQL語(yǔ)句的類型和特性,自動(dòng)選擇STATEMENT或ROW格式來(lái)記錄binlog,以達(dá)到最佳的效果。

MySQL 8.0版本與MySQL 5.7版本在binlog格式方面的主要差異是:

  • MySQL 8.0版本引入了一個(gè)新的系統(tǒng)變量binlog_expire_logs_seconds,用來(lái)設(shè)置binlog的過期時(shí)間,單位是秒。這個(gè)變量比MySQL 5.7的expire_logs_days更精確,可以根據(jù)需要?jiǎng)討B(tài)調(diào)整。
  • MySQL 8.0版本支持了事務(wù)性數(shù)據(jù)字典,這意味著數(shù)據(jù)字典的變更也會(huì)記錄在binlog中,以保證主從復(fù)制的一致性。
  • MySQL8.0版本增加了一個(gè)新的binlog事件類型TRANSACTION_PAYLOAD_EVENT,用來(lái)存儲(chǔ)事務(wù)的元數(shù)據(jù),如事務(wù)ID,事務(wù)大小,是否只讀等。這些信息可以用來(lái)優(yōu)化復(fù)制性能和監(jiān)控事務(wù)活動(dòng)。
  • MySQL8.0版本改進(jìn)了binlog的壓縮算法,使用了zstd壓縮庫(kù),可以提高壓縮比和壓縮速度,同時(shí)減少CPU的開銷。

原因:

  • MySQL 8.0版本引入了binlog_expire_logs_seconds變量,是為了提供更靈活的binlog管理,避免binlog文件過多占用磁盤空間,也避免binlog文件過少導(dǎo)致數(shù)據(jù)恢復(fù)或復(fù)制失敗。
  • MySQL 8.0版本支持了事務(wù)性數(shù)據(jù)字典,是為了提高數(shù)據(jù)庫(kù)的可靠性和一致性,避免數(shù)據(jù)字典的損壞或不同步導(dǎo)致的問題。
  • MySQL 8.0版本增加了TRANSACTION_PAYLOAD_EVENT事件類型,是為了提高復(fù)制的效率和穩(wěn)定性,避免復(fù)制延遲或丟失數(shù)據(jù)的問題。
  • MySQL 8.0版本改進(jìn)了binlog的壓縮算法,是為了提高binlog的傳輸和存儲(chǔ)性能,節(jié)省網(wǎng)絡(luò)和磁盤資源,降低系統(tǒng)的負(fù)載。

影響:

  • MySQL 8.0版本引入了binlog_expire_logs_seconds變量,對(duì)于用戶來(lái)說(shuō),可以更靈活地設(shè)置binlog的過期時(shí)間,根據(jù)業(yè)務(wù)需求和資源情況進(jìn)行調(diào)整,提高binlog的管理效率。
  • MySQL8.0版本支持了事務(wù)性數(shù)據(jù)字典,對(duì)于用戶來(lái)說(shuō),可以更放心地使用MySQL,不用擔(dān)心數(shù)據(jù)字典的損壞或不同步導(dǎo)致的問題,也可以更方便地查看和修改數(shù)據(jù)字典的信息。
  • MySQL 8.0版本增加了TRANSACTION_PAYLOAD_EVENT事件類型,對(duì)于用戶來(lái)說(shuō),可以更快速地進(jìn)行主從復(fù)制,也可以更清晰地監(jiān)控事務(wù)的活動(dòng),提高數(shù)據(jù)庫(kù)的性能和可觀察性。
  • MySQL8.0版本改進(jìn)了binlog的壓縮算法,對(duì)于用戶來(lái)說(shuō),可以更節(jié)省網(wǎng)絡(luò)和磁盤資源,也可以更快地傳輸和存儲(chǔ)binlog,提高數(shù)據(jù)庫(kù)的性能和可靠性。

3. binlog管理的變化

binlog的管理主要涉及到binlog的生成、傳輸、存儲(chǔ)、刪除等操作,MySQL提供了一些命令和變量來(lái)進(jìn)行binlog的管理,如:

  • show master logs:查看所有binlog的日志列表。
  • show master status:查看binlog日志狀態(tài)。
  • flush logs:刷新binlog日志文件,刷新之后會(huì)創(chuàng)建一個(gè)新的binlog日志文件。
  • reset master:清空所有的binlog日志文件。
  • mysqlbinlog:查看或解析binlog日志文件的內(nèi)容。
  • log_bin:binlog的開關(guān)。
  • binlog_format:binlog日志的格式。
  • expire_logs_days:binlog日志的過期天數(shù)。
  • sync_binlog:binlog日志的同步策略。

MySQL 8.0版本與MySQL 5.7版本在binlog管理方面的主要差異是:

  • MySQL 8.0版本引入了一個(gè)新的系統(tǒng)變量binlog_expire_logs_seconds,用來(lái)設(shè)置binlog的過期時(shí)間,單位是秒。這個(gè)變量比MySQL 5.7的expire_logs_days更精確,可以根據(jù)需要?jiǎng)討B(tài)調(diào)整
  • MySQL8.0版本引入了一個(gè)新的系統(tǒng)變量binlog_rotate_encryption_master_key_at_startup,用來(lái)設(shè)置是否在啟動(dòng)時(shí)旋轉(zhuǎn)加密的binlog主鍵。如果這個(gè)變量設(shè)置為ON,那么每次服務(wù)器重啟時(shí),都會(huì)生成一個(gè)新的binlog加密密鑰,并用作新的binlog主鍵。這樣可以增強(qiáng)binlog的安全性,防止密鑰泄露或被破解
  • MySQL 8.0版本支持使用ALTER INSTANCE ROTATE BINLOG MASTER KEY語(yǔ)句手動(dòng)旋轉(zhuǎn)binlog主鍵。當(dāng)使用這個(gè)語(yǔ)句時(shí),服務(wù)器會(huì)執(zhí)行以下操作:生成一個(gè)新的binlog加密密鑰并存儲(chǔ)在密鑰環(huán)上,用作新的binlog主鍵;旋轉(zhuǎn)所有通道上的binlog和中繼日志文件;使用新的binlog主鍵加密新的和現(xiàn)有的binlog和中繼日志文件的文件密碼;刪除不再使用的binlog加密密鑰
  • MySQL8.0版本支持使用binlog_row_event_max_size系統(tǒng)變量設(shè)置row格式的binlog事件的最大大小,單位是字節(jié)。這個(gè)變量是一個(gè)軟限制,盡可能地將binlog中的行分組到不超過這個(gè)值的事件中。如果一個(gè)事件無(wú)法分割,那么最大大小可以超過。這個(gè)變量的值必須是(或者會(huì)被向下取整到)256的倍數(shù)。默認(rèn)值是8192字節(jié)

4. 小結(jié)

MySQL 8.0和MySQL 5.7之間的二進(jìn)制日志(binlog)主要的變化如下:

默認(rèn)的binlog格式:MySQL 8.0默認(rèn)使用ROW格式,ROW格式記錄每行數(shù)據(jù)的變化,而STATEMENT格式記錄SQL語(yǔ)句的執(zhí)行

新的binlog緩沖機(jī)制:MySQL 8.0引入了一種新的binlog緩沖機(jī)制,可以提高性能并減少磁盤I/O。在MySQL 5.7中,使用了基于磁盤的binlog緩沖

binlog加密:MySQL 8.0引入了二進(jìn)制日志的加密功能,可以在傳輸過程中對(duì)binlog進(jìn)行加密。MySQL 5.7沒有原生支持二進(jìn)制日志的加密

在線binlog重置:MySQL 8.0支持在線重置二進(jìn)制日志,而MySQL 5.7需要停止和啟動(dòng)MySQL服務(wù)進(jìn)行重置

新的事務(wù)描述事件:MySQL 8.0引入了新的ANONYMOUS_GTID_EVENT事務(wù)描述事件,用于記錄匿名GTID的信息。MySQL 5.7中沒有這個(gè)事件

GTID的一些改進(jìn):MySQL 8.0對(duì)GTID的處理進(jìn)行了一些改進(jìn),提高了復(fù)制的可靠性和易用性其他性能和安全性的改進(jìn):

MySQL 8.0包含許多其他性能和安全性的改進(jìn),包括更好的并行復(fù)制支持、更好的崩潰安全性等

責(zé)任編輯:姜華 來(lái)源: 數(shù)據(jù)庫(kù)干貨鋪
相關(guān)推薦

2020-12-31 05:35:53

MySQL 8.0MySQL 5.7JSON

2019-09-24 13:53:19

MySQLMySQL 8.0數(shù)據(jù)庫(kù)

2024-04-18 09:00:00

MySQL數(shù)據(jù)庫(kù)

2020-07-31 13:55:57

MySQL數(shù)據(jù)庫(kù)DBA

2020-11-03 14:30:02

MySQL5.7MyS8.0數(shù)據(jù)庫(kù)

2025-01-22 16:00:00

MySQL數(shù)據(jù)庫(kù)Binlog

2024-08-08 07:38:42

2019-07-19 15:53:45

MySQL 5.7MySQL 8.0MySQL

2023-11-02 08:44:58

2023-10-25 07:59:40

2010-05-18 11:28:57

MySQL binlo

2025-05-13 08:10:00

MySQL二進(jìn)制日志binlog

2024-03-25 07:30:03

MySQL數(shù)據(jù)庫(kù)SQL日志

2023-06-27 07:29:30

dba+開源工具Binlog

2022-06-20 12:00:43

MySQL數(shù)據(jù)庫(kù)升級(jí)

2021-06-03 19:13:06

MySQLJson數(shù)據(jù)

2010-05-18 12:24:16

MySQL binlo

2025-05-06 00:43:00

MySQL日志文件MIXED 3

2022-09-23 13:24:21

MySQL數(shù)據(jù)庫(kù)

2023-06-08 07:37:35

MySQLbinlog機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 福利网站在线观看 | 欧美456 | 欧美精品导航 | 91久久久久久久久久久久久 | 欧美视频三区 | 国产免费福利在线 | 亚洲一区二区三区在线免费观看 | 懂色中文一区二区三区在线视频 | 久久国产精品一区二区三区 | 欧美成人二区 | 亚洲黄色一级毛片 | 欧美一区二区三区在线观看 | 黄色欧美在线 | 欧美日韩一区二区三区四区五区 | yiren22 亚洲综合 | 久久久青草婷婷精品综合日韩 | 中文字幕在线免费观看 | 亚洲成人一区二区 | 好好的日在线视频 | 日日日色| 黄 色 毛片免费 | 黑色丝袜三级在线播放 | 一级毛片视频免费观看 | 国产精品伦理一区二区三区 | 超碰97人人人人人蜜桃 | 免费国产成人av | 伊人久久精品一区二区三区 | 午夜精品久久久久久久久久久久久 | 精品一区二区电影 | 久久精品视频在线观看 | 久久精品av麻豆的观看方式 | 久久久久中文字幕 | 亚洲精品国产成人 | av一级| 欧美在线观看网站 | 亚洲情侣视频 | 成人精品国产免费网站 | 久久久精品 | 国产中文字幕网 | 九九视频在线观看视频6 | 在线观看日韩 |