MySQL CGE(Consistent Global Enumeration)是一個MySQL解決方案,旨在解決用于分布式MySQL部署的自動ID生成
在分布式MySQL部署中,例如高可用性集群或分片集群,生成唯一ID的傳統方法不再可靠分布式系統的本質意味著數據分片行為,而這些分片行為需要對生成的ID進行限制
MySQL CGE的解決方案是使用另外一個表,稱為“globally unique identifier”(GUID)表,其中包含有關ID的元數據。下面的代碼顯示了如何創建GUID表:
CREATE TABLE `guid` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, `hostname` VARCHAR(255) NOT NULL DEFAULT '', `process` INT UNSIGNED NOT NULL DEFAULT 0, `datetime` BIGINT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `guid_uk` (`hostname`,`process`,`datetime`) ) ENGINE= InnoDB;
同時,MySQL CGE使用內置存儲過程,使應用程序查詢服務器和GUID表來獲得全球惟一的序號
在使用前,請確保在MySQL實例上安裝了MySQL CGE
安裝命令:
mysql -uroot< /path/to/cge.sql
安裝后,現在可以查詢mysql_cge_get_guid存儲過程,如下所示:
CALL mysql_cge_get_guid(@guid); SELECT @guid;
這將輸出一個全球惟一的數字ID
MySQL CGE是一個非常實用的MySQL解決方案,幫助我們輕松解決了自動ID生成在分布式系統中出現的問題。它易于安裝,易于使用,因此非常受歡迎。