GreatSQL 8.0.32-26 今日發佈

来源:https://www.cnblogs.com/greatsql/p/18342627
-Advertisement-
Play Games

GreatSQL 8.0.32-26 今日發佈 版本信息 發佈時間:2024年08月05日 版本號:8.0.32-26, Revision a68b3034c3d 下載鏈接:https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.3 ...


GreatSQL 8.0.32-26 今日發佈

版本信息

特性增強

GreatSQL 8.0.32-26 版本在 高可用高性能高相容高安全 等多方面都有增強新特性,包括 Clone 增量備份、壓縮備份,MGR 新加入成員節點時自動選擇最新數據節點為 donor 節點,NUMA 親和性優化,非阻塞式 DDL,無主鍵表導入優化,更多 Oracle 相容用法,最後登錄信息,基於規則的數據脫敏功能等多個新特性。

高可用

  • 當有新成員節點加入 MGR 時,如果選擇 Clone 方式複製數據,支持自動選擇從最新事務數據的成員節點複製數據,可有效提升 Clone 速度,提高 MGR 的服務可靠性。當新加入節點觸發 Clone 方式複製數據時,也支持該特性。

    參數 group_replication_donor_threshold 用於定義選擇 donor 節點時判斷事務延遲閾值,取值範圍 [1, MAX],預設值為 MAX。MAX 值取決於 CPU 類型,在 32-bit 系統中是 2147483647(2^31-1),而在 64-bit 系統中是 9223372036854775807(2^63-1)。

    當新成員節點加入 MGR 時,新成員節點只會選擇那些延遲小於 group_replication_donor_threshold 的節點作為 donor 節點。

    假設 group_replication_donor_threshold = 100,那麼:

  1. 現在 MGR 中有兩個節點A、B,它們的 GTID 分別是 [1-300]、[1-280],新節點 C 加入,由於 A & B 節點的 GTID 差值小於預設閾值,則隨機選擇 A 或 B 其中一個節點作為 donor 節點。
  2. 現在 MGR 中有兩個節點A、B,它們的 GTID 分別是 [1-400]、[1-280],新節點 C 加入,由於 A & B 節點的 GTID 差值大於預設閾值,則只會選擇 A 作為 donor 節點。
  3. 現在 MGR 中有三個節點A、B、C,它們的 GTID 分別是 [1-400]、[1-350]、[1-280],新節點 D 加入,由於 C 節點的 GTID 差值大於預設閾值,A & B 節點 GTID 延遲小於預設閾值,則會隨機選擇 A 或 B 其中一個作為 donor 節點。
  • 在主從複製中,由從節點向主節點發起 Binlog 讀取請求,如果讀取太快或併發太多線程就會加大主節點的壓力。新增參數 rpl_read_binlog_speed_limit 用於控制從節點上向主節點發起 Binlog 讀取請求的限速,這對於控制主從複製中的網路帶寬使用率、降低主節點壓力、或在數據恢復過程中降低消耗資源非常有用。該參數可在從節點端設置生效。

  • 優化了在 快速單主模式 下 relay log 應用邏輯,提升 MGR 整體性能;並優化了當 relay log 存在堆積時的 applier 線程的記憶體消耗異常情況。

  • 優化了 asynchronous connection failover 中的故障檢測效率,特別是發生網路故障時,備用集群能更快完成主從複製通道調整,降低主從複製鏈路斷開的時間,提高整體可用性。以設置 MASTER_RETRY_COUNT = 2 為例(slave_net_timeoutMASTER_CONNECT_RETRY 預設值均為 60),在主從複製通道間發生網路故障時導致的複製中斷持續約 3 分鐘,優化後故障影響時長縮短到 10 - 20 秒以內。可以利用 asynchronous connection failover 實現兩個 MGR 集群間的主從複製,實現跨機房間的高可用切換方案。

  • 地理標簽 功能中包含兩個參數 group_replication_zone_id(預設值為 0)和 group_replication_zone_id_sync_mode(預設值為ON)。在舊版本中,要求各個節點的 group_replication_zone_id_sync_mode 保持一致,否則無法加入 MGR。新版本中,允許仲裁節點設置不同的 group_replication_zone_id_sync_mode。例如,節點 A1、A2 設置 group_replication_zone_id = 0 & zone_id_sync_mode = ON;節點 B1、B2 設置 group_replication_zone_id = 1,它們也必須設置 zone_id_sync_mode = ON;仲裁投票節點C 設置 group_replication_zone_id = 2,但可以設置 group_replication_zone_id_sync_mode = OFF

  • 當啟用 greatdb_ha Plugin 時,新增支持 IPv6。

更多信息詳見文檔:高可用 ➥ https://greatsql.cn/docs/8.0.32-26/5-enhance/5-2-ha.html

高性能

更多信息詳見文檔:高性能 ➥ https://greatsql.cn/docs/8.0.32-26/5-enhance/5-1-highperf.html

高相容

更多信息詳見文檔:高相容 ➥ https://greatsql.cn/docs/8.0.32-26/5-enhance/5-3-easyuse.html

高安全

更多信息詳見文檔:高安全 ➥ https://greatsql.cn/docs/8.0.32-26/5-enhance/5-4-security.html

其他

缺陷修複

  • 修複了在部分 ARM 架構環境中無法使用並行複製的問題,詳見:MySQL Bug 110752 ➥ https://bugs.mysql.com/bug.php?id=110752
  • 修複了最後登錄信息和審計日誌入表時未處理 Binlog 可能導致主從異常的問題。在新版本中,最後登錄信息和審計日誌都不會記錄 Binlog,避免因為主從複製(也包括 MGR)中各實例都開啟該特性記錄 Binlog 而造成主從複製失敗(或 MGR 報錯)。
  • 修複了數個因為 SQL 註入可能導致資料庫實例發生 coredump 的問題,大幅提升 GreatSQL 對 SQL 註入風險的抵禦能力。
  • 修複了 Oracle 模式下 NULL 值唯一約束問題。在原來的 Oracle 模式下,插入 NULL 值會觸發唯一約束衝突;而在 Oracle 資料庫中,是允許向唯一約束列中重覆寫入 NULL 值的。在新版本中修複了這個問題。
-- 在老版本中
greatsql> SET sql_mode = ORACLE;
greatsql> CREATE TABLE t1 (c1 INT UNIQUE);
greatsql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE "t1" (
  "my_row_id" bigint unsigned NOT NULL AUTO_INCREMENT /*!80023 INVISIBLE */,
  "c1" int DEFAULT NULL,
  PRIMARY KEY ("my_row_id"),
  UNIQUE KEY "c1" ("c1") /* nulls are equal in unique index as oracle does */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

greatsql> INSERT INTO t1 SELECT NULL;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

greatsql> INSERT INTO t1 SELECT NULL;
ERROR 1062 (23000): Duplicate entry 'NULL' for key 't1.c1'

在新版本中修複了這個唯一性約束問題:

-- 在新版本中
greatsql> SET sql_mode = ORACLE;
greatsql> CREATE TABLE t1 (c1 INT UNIQUE);
greatsql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE "t1" (
  "my_row_id" bigint unsigned NOT NULL AUTO_INCREMENT /*!80023 INVISIBLE */,
  "c1" int DEFAULT NULL,
  PRIMARY KEY ("my_row_id"),
  UNIQUE KEY "c1" ("c1") /* nulls are equal in unique index as oracle does */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

greatsql> INSERT INTO t1 SELECT NULL;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

-- 不再報告唯一性約束衝突
greatsql> INSERT INTO t1 SELECT NULL;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

註意事項

無。

升級/降級到 GreatSQL 8.0.32-26

升級到 GreatSQL 8.0.32-26

以下是升級到 GreatSQL 8.0.32-26 的幾種不同場景說明。

  • 如果舊版本是 GreatSQL 8.0.32-25,並且沒有使用 Rapid 引擎,則可以直接在原來的 datadir 基礎上,修改 basedir 後,原地(in-place)啟動 GreatSQL 8.0.32-26 後會完成自動升級。
  • 如果舊版本是 GreatSQL 8.0.32-25,並且已啟用 Rapid 引擎,這種情況下暫時先不要升級,可以等到後續發佈帶新版本 Rapid 引擎的 GreatSQL 8.0.32-26 版本後再升級。
  • 如果舊版本是 GreatSQL 8.0.32-24、8.0.25-*、5.7.36-39 等系列版本,則可以直接在原來的 datadir 基礎上,修改 basedir 後,原地(in-place)啟動 GreatSQL 8.0.32-26 後會完成自動升級。
  • 如果是 MySQL 8.0.(<= 8.0.32 版本)、Percona Server 8.0.(<= 8.0.32 版本)等系列版本,則可以直接在原來的 datadir 基礎上,修改 basedir 後,原地(in-place)啟動 GreatSQL 8.0.32-26 後會完成自動升級。
  • 如果是 MySQL 8.0.(> 8.0.32 版本)、Percona Server 8.0.(> 8.0.32 版本)等系列版本,則需要利用邏輯備份方式導出數據,再導入的方式完成升級,不支持原地(in-place)升級到 GreatSQL 8.0.32-26。
  • 如果是 MySQL 5.7.(>= 5.7.23 版本)、Percona Server 5.7.(<= 5.7.23 版本)等系列版本,則可以直接在原來的 datadir 基礎上,修改 basedir 後,原地(in-place)啟動 GreatSQL 8.0.32-26 後會完成自動升級。

在以上幾個原地升級場景中,務必保證 GreatSQL 中參數 upgrade 不能設置為 NONE,可以設置為預設的 AUTOFORCE。例如:

[mysqld]
upgrade = AUTO

更多遷移升級方案請參考:遷移升級

降級到 GreatSQL 8.0.32-26

如果是要從 MySQL/Percona 8.0.32 之後的版本降級到 GreatSQL 8.0.32-26 版本,則需要採取邏輯備份 + 邏輯導入方式完成降級操作,並且在邏輯備份導入完成後的首次重啟時,務必設置 upgrade = FORCE 強制升級所有數據表,包括系統表。

降級過程操作大致如下所示:

  1. 在高版本中邏輯備份全量數據
$ mysqldump -S/data/MySQL/mysql.sock -A --triggers --routines --events --single-transaction > /data/backup/fulldump.sql
  1. 在GreatSQL 8.0.32-26版本環境中導入邏輯備份文件,完成邏輯恢復
$ mysql -S/data/GreatSQL/mysql.sock -f < /data/backup/fulldump.sql
  1. 修改my.cnf,確保 upgrade = FORCE 設置
$ vim /etc/my.cnf
...
[mysqld]
...
upgrade = FORCE
...
  1. 重啟GreatSQL,降級完成
$ systemctl restart greatsql

重啟過程中,可以看到日誌有類似下麵的強制升級過程

$ tail -f /data/GreatSQL/error.log
...
[Note] [MY-013387] [Server] Upgrading system table data.
[Note] [MY-013385] [Server] Upgrading the sys schema.
[Note] [MY-013400] [Server] Upgrade of help tables started.
[Note] [MY-013400] [Server] Upgrade of help tables completed.
[Note] [MY-013394] [Server] Checking 'mysql' schema.
[Note] [MY-013394] [Server] Checking 'sys' schema.
[System] [MY-013381] [Server] Server upgrade from '80032' to '80032' completed.
...

如果不設置 upgrade = FORCE 強制升級所有表,有可能發生系統表 mysql.procs_priv 損壞錯誤,在創建用戶時可能會報告類似下麵的錯誤:

greatsql> create user tpch identified by 'tpch';
ERROR 1728 (HY000): Cannot load from mysql.procs_priv. The table is probably corrupted

GreatSQL VS MySQL

1.主要特性 GreatSQL 8.0.32-26 MySQL 8.0.32
開源 ✔️ ✔️
ACID 完整性 ✔️ ✔️
MVCC 特性 ✔️ ✔️
支持行鎖 ✔️ ✔️
Crash 自動修複 ✔️ ✔️
表分區(Partitioning) ✔️ ✔️
視圖(Views) ✔️ ✔️
子查詢(Subqueries) ✔️ ✔️
觸發器(Triggers) ✔️ ✔️
存儲程式(Stored Programs) ✔️ ✔️
外鍵(Foreign Keys) ✔️ ✔️
視窗函數(Window Functions) ✔️ ✔️
通用表表達式 CTE ✔️ ✔️
地理信息(GIS) ✔️ ✔️
基於 GTID 的複製 ✔️ ✔️
組複製(MGR) ✔️ ✔️
MyRocks 引擎 ✔️
支持龍芯架構 ✔️
2. 性能提升擴展 GreatSQL 8.0.32-26 MySQL 8.0.32
AP 引擎 ✔️ 僅雲上HeatWave
NUMA 親和性優化 ✔️
非阻塞式 DDL ✔️
無主鍵表導入優化 ✔️
InnoDB 並行查詢 ✔️ 僅主鍵掃描
並行 LOAD DATA ✔️
InnoDB 事務 ReadView 無鎖優化 ✔️
InnoDB 事務大鎖拆分優化 ✔️
InnoDB 資源組 ✔️ ✔️
自定義 InnoDB 頁大小 ✔️ ✔️
Contention-Aware Transaction Scheduling ✔️ ✔️
InnoDB Mutexes 拆分優化 ✔️
MEMORY 引擎優化 ✔️
InnoDB Flushing 優化 ✔️
並行 Doublewrite Buffer ✔️ ✔️
InnoDB 快速索引創建優化 ✔️
VARCHAR/BLOB/JSON 類型存儲單列壓縮 ✔️
數據字典中存儲單列壓縮信息 ✔️
3. 面向開發者提升改進 GreatSQL 8.0.32-26 MySQL 8.0.32
X API ✔️ ✔️
JSON ✔️ ✔️
NoSQL Socket-Level介面 ✔️ ✔️
InnoDB 全文搜索改進 ✔️
更多 Hash/Digest 函數 ✔️
Oracle 相容-數據類型 ✔️
Oracle 相容-函數 ✔️
Oracle 相容-SQL語法 ✔️
Oracle 相容-存儲程式 ✔️
4. 基礎特性提升改進 GreatSQL 8.0.32-26 MySQL 8.0.32
MGR 提升-地理標簽 ✔️
MGR 提升-仲裁節點 ✔️
MGR 提升-讀寫節點綁定VIP ✔️
MGR 提升-快速單主模式 ✔️
MGR 提升-智能選主機制 ✔️
MGR 提升-全新流控演算法 ✔️
MGR 提升-網路分區異常處理 ✔️
MGR 提升-節點異常退出處理 ✔️
MGR 提升-節點磁碟滿處理 ✔️
MGR 提升-自動選擇 donor 節點 ✔️
Clone 增量備份 ✔️
Clone 備份壓縮 ✔️
Binlog 讀取限速 ✔️
information_schema 表數量 95 65
全局性能和狀態指標 853 434
優化器直方圖(Histograms) ✔️ ✔️
Per-Table 性能指標 ✔️
Per-Index 性能指標 ✔️
Per-User 性能指標 ✔️
Per-Client 性能指標 ✔️
Per-Thread 性能指標 ✔️
全局查詢相應耗時統計 ✔️
SHOW INNODB ENGINE STATUS 增強 ✔️
回滾段信息增強 ✔️
臨時表信息增強 ✔️
用戶統計信息增強 ✔️
Slow log 信息增強 ✔️
5.安全性提升 GreatSQL 8.0.32-26 MySQL 8.0.32
國密支持 ✔️
備份加密 ✔️
審計 ✔️ 僅企業版
數據脫敏 ✔️
最後登錄記錄 ✔️
SQL Roles ✔️ ✔️
SHA-2 密碼Hashing ✔️ ✔️
密碼輪換策略 ✔️ ✔️
PAM 認證插件 ✔️ 僅企業版
Keyring 存儲在文件中 ✔️ ✔️
Keyring 存儲在Hashicorp Vault中 ✔️ 僅企業版
InnoDB 數據加密 ✔️ ✔️
InnoDB 日誌加密 ✔️ ✔️
InnoDB 各種表空間文件加密 ✔️ ✔️
二進位日誌加密 ✔️
臨時文件加密 ✔️
強制加密 ✔️
6. 運維便利性提升 GreatSQL 8.0.32-26 MySQL 8.0.32
DDL 原子性 ✔️ ✔️
數據字典存儲 InnoDB 表 ✔️ ✔️
快速 DDL ✔️ ✔️
SET PERSIST ✔️ ✔️
不可見索引 ✔️ ✔️
線程池(Threadpool) ✔️ 僅企業版
備份鎖 ✔️
SHOW GRANTS 擴展 ✔️
表損壞動作擴展 ✔️
殺掉不活躍事務 ✔️
START TRANSACTION WITH CONSISTENT SNAPSHOT 擴展 ✔️

GreatSQL 8.0.32-26 基於 Percona Server for MySQL 8.0.32 版本,它在 MySQL 8.0.32 基礎上做了大量的改進和提升以及眾多新特性,詳情請見:Percona Server for MySQL feature comparison ➥ https://docs.percona.com/percona-server/8.0/feature-comparison.html,這其中包括線程池、審計、數據脫敏等 MySQL 企業版才有的特性,以及 performance_schema 提升、information_schema 提升、性能和可擴展性提升、用戶統計增強、PROCESSLIST 增強、Slow Log 增強等大量改進和提升,這裡不一一重覆列出。

GreatSQL Release Notes

GreatSQL 8.0

GreatSQL 5.7


Enjoy GreatSQL

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 眾所周知,WSL 2 為 Windows 用戶提供了一個強大、高效且靈活的 Linux 環境,特別適合開發者使用。它結合了 Windows 和 Linux 的優點,為用戶提供了更加全面和高效的工作環境。但缺點也很明顯,那就是預設安裝在本來空間就不富裕的C盤。 本次我們在非C盤的盤符快速安裝... ...
  • Keepalived是Linux下一個輕量級別的高可用解決方案。高可用:廣義來講,是指整個系統的高可用行;狹義的來講就是主機的冗餘和接管。 ...
  • 1、OrthoFinder 教程:用於比較基因組學的系統發育直系學推斷 1.1 orthofinder介紹 OrthoFinder是一種快速、準確和全面的比較基因組學分析工具。它可以找到直系和正群,為所有的正群推斷基因樹,併為所分析的物種推斷一個有根的物種樹。OrthoFinder還為比較基因組分析 ...
  • 寫在前面 本隨筆是非常菜的菜雞寫的。如有問題請及時提出。 可以聯繫:[email protected] GitHhub:https://github.com/WindDevil (目前啥也沒有 編程題 實現一個裸機應用程式A,能列印調用棧 首先在這裡卡了我很久的是調用棧保存在哪裡,回想到上一部分畫的 ...
  • 第十六章 machine模塊實驗 1)實驗平臺:正點原子DNK210開發板 2)章節摘自【正點原子】DNK210使用指南 - CanMV版 V1.0 3)購買鏈接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套實驗源碼+手冊+視頻下載地 ...
  • @目錄前言簡介一、準備工作二、操作步驟2.1 啟動MySQL服務2.2 拷貝配置2.3 賦值許可權2.4 添加為系統服務2.5 驗證總結 前言 請各大網友尊重本人原創知識分享,謹記本人博客:南國以南i、 提示:以下是本篇文章正文內容,下麵案例可供參考 簡介 一、準備工作 註意:準備已經安裝MySQL的 ...
  • 問題背景 公司配發的電腦是 macOS,日常開發需要訪問 Linux 虛擬機,出於安全方面的考慮,只能通過跳板機登錄。這阻止了大多數遠程圖形界面的使用,讓寫代碼的工作變得複雜起來,市面上非常好用的 VSCode 都用不了。因此考慮基於 vim 搭建一套個人開發環境,需要支持以下特性: 語法高亮 (風 ...
  • 1.背景 或許你面試的時候被問到了mysql的排序問題 又或許你在學習排序演算法的時候想到了資料庫的排序是如何實現的呢 下麵重點從面試的角度來回答這個問題 2.面試回答 1.普通面試者回答 普通面試者的回答通常是點對點的回答,如下: MySQL 實現數據的排序主要通過排序演算法和索引結構來完成。排序操作 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...