計算節點快速配置
本節將描述快速配置關係叢集資料庫HHDB Server的方法。本節僅介紹必要的配置功能,用於達到快速入門的目的。如果需要了解更多的配置功能,請參考管理平臺文件。
在下面的例子中,將配置一個3個節點的資料分片,該分片使用名稱為"test"的邏輯庫,分片表名稱為"customer",分片欄位為"provinceid",自動分片表。
在配置HHDB Server前,請確保管理平臺與計算節點已經正常啟動,並且已經準備好了6個儲存節點(此例子中,將以配置雙主型別的資料節點為例,若只需要單庫的資料節點,只需要準備3個例項即可)。
登入管理平臺
在瀏覽器中輸入管理平臺的HTTP連結地址,並登入到管理平臺;HTTP連結地址通常為部署管理平臺的伺服器IP,埠預設為3324,如http://192.168.200.89:3324/login.html。
管理平臺提供了兩類使用者角色:超級管理員與普通使用者,超級管理員預設初始使用者名稱和密碼分別為:admin,DRDS_management@2013;普通使用者由超級管理員建立,預設密碼為:service_hotdb@hotdb.com。
超級管理員登入後主要有"計算節點叢集管理"、"使用者管理"功能,管理員可以建立、編輯計算節點叢集,並配置計算節點連線資訊,新增管理平臺使用者以及為使用者新增許可權等。
新增計算節點叢集
計算節點叢集為一組具有高可用關係的計算節點服務,新增計算節點叢集是為了將已經部署好的計算節點新增到管理平臺進行管理,若要從頭部署一套計算節點叢集需要使用叢集部署功能,請參考安裝部署文件。
在計算節點叢集管理頁面點選"叢集部署與配置"->新增計算節點叢集,輸入計算節點所在的伺服器IP 服務埠、管理埠、連線管理埠的使用者名稱、密碼即可建立單計算節點,選擇主備節點或多節點後可新增一組高可用的計算節點。
輸入完成後,點選測試,連線成功後則可以將此計算節點叢集分配給管理平臺使用者來配置管理。
新增管理平臺使用者
管理平臺使用者是管理、配置、監控、檢測計算節點叢集的使用者,它有兩種許可權,一種為訪問許可權(只能檢視部分頁面),一種為控制許可權(可編輯操作)。
管理員在建立管理平臺使用者時將計算節點叢集分配給管理平臺使用者,同時分配控制許可權,建立成功後,以管理平臺使用者登入,就可以管理、配置、監控計算節點叢集了。
登入管理平臺,在管理平臺使用者頁面點選 "新增新使用者" 輸入使用者名稱稱,分配計算節點叢集的控制許可權。新增完成後,該使用者登入後可以對計算節點進行管理。
建立資料庫與儲存節點使用者
分別在6個儲存節點上建立資料庫與使用者,登入儲存節點,執行以下語句:
set session sql_log_bin=0;
//執行此語句是為了防止建立物理庫和使用者時同時操作了主備儲存節點,如果開啟gtid,然後後續又搭建複製,操作不當的情況下可能導致一定的複製中斷或主從不一致的風險。
CREATE DATABASE db01 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,PROCESS,REFERENCES,SUPER,LOCK TABLES,REPLICATION SLAVE,REPLICATION CLIENT,TRIGGER,SHOW VIEW,CREATE VIEW,CREATE ROUTINE,ALTER ROUTINE,EXECUTE,EVENT,RELOAD,CREATE TEMPORARY TABLES ON *.* TO 'hotdb_datasource'@'%' IDENTIFIED BY 'hotdb_datasource';
set session sql_log_bin=1;
注意
如果儲存節點是8.0版本,授權語句需要增加XA_RECOVER_ADMIN許可權。
hotdb_datasource賬戶是計算節點連線各個儲存節點例項的唯一賬戶,所有新增的平臺使用者都是透過對映到hotdb_datasource賬戶來連線儲存節點例項,各平臺使用者只作用在前端業務連線和使用者訪問控制。
通常在計算節點中create database建立的資料庫稱為"邏輯庫",但是在關係叢集資料庫系統中稱呼有所區別,一般因為其是實際儲存資料的原因稱為"物理庫",或者稱為"某個關係叢集資料庫"。
為了配置方便,6個儲存節點上建立的資料庫和使用者需要保持一致。
新增邏輯庫
通常在計算節點中create database建立的資料庫稱為"邏輯庫",一個"邏輯庫"可以為一個應用或一個微服務提供資料庫服務。為了保持一致性,關係叢集資料庫系統同樣透過"邏輯庫"為一個應用或一個微服務提供資料庫服務,但是關係叢集資料庫系統由多套例項組成(本例是6套),所以在HHDB Server中"邏輯庫"是"全域性邏輯庫",即6套例項中"邏輯庫"的集合,在HHDB Server中仍稱為邏輯庫。
邏輯庫是計算節點中的虛擬資料庫,用命令登入計算節點後,透過如下語句顯示邏輯庫列表:
show databases;
登入管理平臺頁面,選擇"配置"->"邏輯庫"->新增邏輯庫,輸入"test"邏輯庫名稱,點選"√",儲存配置,邏輯庫即新增成功。
賦予使用者邏輯庫許可權
只有被賦予邏輯庫許可權的使用者才能使用邏輯庫。
登入管理平臺頁面,選擇"配置"->"資料庫使用者",選擇root使用者,並點選"編輯"按鈕。跳轉到"編輯使用者許可權"頁面,在下拉框中勾選建立好的邏輯庫"test",點選"儲存",許可權賦予成功。
注意
管理平臺安裝後,系統預設建立一個平臺使用者root(密碼DRDS_server@2013)。
新增儲存節點組
新增儲存節點組可以更方便地新增或修改一組具有相同引數值的儲存節點。
登入關係叢集資料庫視覺化管理平臺頁面,選擇"配置"->"節點管理"->"儲存節點組"->"新增組":
引數包括:
- 組名:輸入儲存節點組命名;
- 連線使用者:有許可權訪問該物理庫的使用者名稱(上節新增的使用者名稱);
- 連線使用者密碼:有許可權訪問該物理庫的使用者密碼;
- 物理庫名:儲存節點中可引用的資料庫名稱,例如"db01"(3.4節新增的物理庫);
- 備份使用者:(選填)用於備份該物理庫的使用者名稱;
- 備份使用者密碼:(選填)用於備份該物理庫的使用者密碼;
- 字符集:被連線的物理庫字符集,預設utf8mb4;
- 最大連線數:物理庫最大連線數,預設4200;
- 初始連線數:物理庫初始連線數,預設32;
- 最大空閒連線數:物理庫最大空閒連線數,預設512;
- 最小空閒連線數:物理庫最小空閒連線數,預設32;
- 空閒檢查週期(秒):物理庫空閒檢查週期,預設600。當連線長時間沒有向伺服器發請求的時候,定時斷開這個連線,避免對資料庫連線的浪費。
根據業務場景選擇相同引數值設定為一個儲存節點組,例如在本例中,下圖中勾並輸入的引數值組成一個儲存節點組。
在新增節點時應用在若干個儲存節點上,會自動填充組內預設的引數值;修改組內某一引數時,組內所有儲存節點的該條引數被批次修改。
新增資料節點與儲存節點
在本案例中,將6個儲存節點分成3組(3分片),每組兩個儲存節點(一主一備)。上述描述對應到關係叢集資料庫系統為:全量資料由3個資料節點組成,每個資料節點下各有2個儲存節點。我們需要在平臺做如下操作:新增3個資料節點,併為這3個資料節點分別新增2個儲存節點。
登入管理平臺頁面,選擇"配置"->"節點管理"->"新增節點":
可以批次新增新的資料節點與其對應儲存節點,也可以為已有的資料節點新增儲存節點,此處僅介紹批次新增新的資料節點和儲存節點,操作演示如下:
1.填寫資料節點引數:在此例子中,需要新增資料節點個數為3個,資料節點型別為雙主(也可以選擇其他型別)。此例子中,儲存節點組選擇不使用組,你也可以在下拉選單中選擇使用上小節新增的儲存節點組,以此批次新增或修改相似引數。沒有特殊要求時,節點字首、編碼位數、起始編碼可使用預設值。填入引數後點選【生成】。
2.根據提示資訊填寫儲存節點配置引數。
引數包括:
- 資料節點:預設根據之前填寫的引數生成,可修改;
- 儲存節點型別:預設根據之前填寫的引數生成,可修改;
- 儲存節點組:預設根據之前填寫的引數生成,可修改;
- 儲存節點名稱:預設勾選自動生成,也可以取消勾選後在文字框中輸- 入儲存節點命名,例如"ds_01";
- 主機名:輸入儲存節點的主機IP;
- 埠號:輸入儲存節點埠;
- 連線使用者:有許可權訪問該物理庫的使用者名稱(3.4節新增的使用者名稱);
- 連線使用者密碼:有許可權訪問該物理庫的使用者密碼;
- 物理庫名:儲存節點中可引用的資料庫名稱,例如"db01" (3.4節新增的物理庫);
- 備份使用者:(選填)用於備份該物理庫的使用者名稱;
- 備份使用者密碼:(選填)用於備份該物理庫的使用者密碼;
- 監聽程式主機名:(選填)安裝監聽程式可用於解決計算節點叢集模式的效能線性擴充套件問題。預設儲存節點所在伺服器的主機名;
- 監聽埠:(選填)用於設定監聽程式啟動埠;
- 監聽程式服務埠:(選填)監聽程式服務埠是計算節點透過監聽程式連線儲存節點的埠,若一個監聽程式需要監聽多個儲存節點,則需要為其分別填寫不同的服務埠;
- 自動主從搭建:選擇後,管理平臺會自動根據配置資訊為相應的儲存節點搭建複製關係;
- 主儲存節點:僅在需要搭建雙主帶從或多級從的複製關係時才需要填寫此引數。可將當前儲存節點需要搭建複製關係的主儲存節點名稱複製後貼上於此。預設時為系統根據配置自動判斷。
填寫完引數後,點選【測試連線】驗證輸入無誤且所有儲存節點連線成功後,點選【儲存並返回】,成功新增3個資料節點及其分別對應的6個儲存節點。
新增分片規則
新增分片規則的目的是為表的水平拆分提供手動設定的路由方法及演算法,如果希望使用自動分片方式建立表資訊,則可跳過此步驟。
登入管理平臺頁面,選擇"配置"->"分片規則"->新增分片規則。
根據業務場景,輸入配置引數,包括:
- 分片規則名稱:預設生成,取消勾選後可修改;
- 分片型別:包括ROUTE,RANGE,MATCH,SIMPLE_MOD,CRC32_MOD。以RANGE為例,若要了解更多分片規則可以檢視更詳細的功能說明文件,請參考管理平臺文件;
- 設定方式:包括自動設定和手動設定,以自動設定為例。選擇自動設定,管理平臺根據配置引數自動計算值範圍並自動劃分資料節點;選擇手動設定可以手動輸入資料節點對應落入的值範圍;
- 資料節點:選擇分片的資料節點;
- 值範圍:輸入分片欄位的全部值範圍,管理平臺結合選擇的節點數自動計算步長。
點選【預覽】檢視生成結果,點選【修改】可修改值範圍或資料節點,以解決資料傾斜問題。
點選【儲存並返回】新增分片規則。
新增表資訊
登入管理平臺頁面,選擇"配置"->"表資訊"->新增表資訊
根據業務場景,選擇表型別後輸入配置引數,在此例子中,在水平分片表頁面下,新增引數配置如下:
- 邏輯庫:下拉選單中選擇上節新增的邏輯庫test;
- 預設分片欄位:在填寫表名稱時,表名稱與其對應的分片欄位應使用英文冒號間隔,若未填寫分片欄位,則取預設分片欄位。所以此處填寫"provinceid";
- 分片方式:在此例子中,選擇自動分片,也可以選擇上節新增的分片規則應用於此;
- 資料節點:選擇分片的資料節點,此例子中,選擇3.8節新增的資料節點;
- 請填寫表名稱:輸入"customer",新增多表但不同分片欄位時,可以輸入"customer:provinceid"表示。
點選【儲存】,成功新增customer自動分片表。注:該表引用的分片規則是AUTO_CRC32型別(AUTO_MOD 與 AUTO_CRC32分片型別區別可檢視頁面中的"方式說明")。
校驗並動態載入配置資訊
登入管理平臺頁面,對計算節點資料庫使用者,邏輯庫,資料節點,儲存節點,故障切換,分片規則,表資訊,子表資訊做的任何修改,都需要進行"動態載入",新的配置資訊才能生效。
若計算節點未啟動,將不能執行動態載入,因此需先啟動計算節點。
登入管理平臺頁面,選擇"配置"->配置校驗,在頁面中點選"開始校驗",若沒有出現配置錯誤的提示,則表示配置資訊無誤。
在頁面中點選"動態載入",若頁面提示"動態載入成功",則配置資訊在計算節點中已經成功生效。
登入計算節點並開始使用
使用命令列,指定安裝部署時的VIP地址或者計算節點IP(如果未安裝VIP情況),登入到計算節點,格式如下:
mysql -u<資料庫使用者> -p<資料庫使用者對應的密碼> -h<計算節點的VIP或IP> -P<計算節點對應的埠> -D<資料庫庫名>
部署完成後,預設的資訊如下:
- 資料庫使用者為root;
- 資料庫root使用者預設的密碼為:DRDS_server@2013;
- 計算節點的VIP或IP根據實際部署地址填寫(以192.168.210.97為例),若在計算節點所在的伺服器進行登陸,可以直接使用本地地址127.0.0.1進行登陸;
- 計算節點埠預設為3323;
- HHDB Server的資料庫庫名預設有hotdb。
登陸示例如下:
root> mysql -uroot -pDRDS_server@2013 -h192.168.210.97 -P3323 -Dhotdb
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 234359
Server version: 5.7.42 HHDB-14.0.0 HHDB Server
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
執行customer的建表語句:
CREATE TABLE `customer`(
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
`telephone` VARCHAR(16) NOT NULL,
`provinceid` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`province` ENUM ('Anhui','Aomen','Beijing','Chongqing','Fujian','Gansu','Guangdong','Guangxi','Guizhou','Hainan','Hebei','Heilongjiang','Henan','Hubei','Hunan','Jiangsu','Jiangxi','Jilin','Liaoning','Neimenggu','Ningxia','Qinghai','Shaanxi','Shandong','Shanghai','Shanxi','Sichuan','Taiwan','Tianjin','Xianggang','Xinjiang','Xizang','Yunnan','Zhejiang') NULL,
`city` VARCHAR(16) NULL default '',
`address` VARCHAR(64) NULL,
PRIMARY KEY(`id`),
UNIQUE KEY(`telephone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
計算節點將在各個資料節點建立customer表。可以登入到各個儲存節點上,驗證customer是否已經被建立。
或在管理平臺"配置"->"表資訊"頁面,找到上節新增的表配置,在表結構一列中點選【未建立】跳轉到普通DDL頁面。
輸入資料庫使用者名稱密碼,並選擇test邏輯庫後,輸入建表語句,點選【執行】新增表結構。
分片表customer建立成功後,可以連線計算節點執行下面的SQL語句,運算元據:
INSERT INTO customer VALUES (21,'何重慶','13912340021',4,'Chongqing','重慶','某某街某某號');
INSERT INTO customer VALUES (22,'呂重慶','13912340022',4,'Chongqing','重慶','某某街某某號');
INSERT INTO customer VALUES (25,'孔福州','13912340025',5,'Fujian','福州','某某街某某號');
INSERT INTO customer VALUES (26,'曹蘭州','13912340026',6,'Gansu','蘭州','某某街某某號');
INSERT INTO customer VALUES (67,'岑南昌','13912340067',17,'Jiangxi','南昌','某某街某某號');
INSERT INTO customer VALUES (68,'薛長春','13912340068',18,'Jilin','長春','某某街某某號');
INSERT INTO customer VALUES (69,'雷瀋陽','13912340069',19,'Liaoning','瀋陽','某某街某某號');
INSERT INTO customer VALUES (70,'賀呼和浩特','13912340070',20,'Neimenggu','呼和浩特','某某街某某號');
INSERT INTO customer VALUES (71,'倪銀川','13912340071',21,'Ningxia','銀川','某某街某某號');
INSERT INTO customer VALUES (72,'湯西寧','13912340072',22,'Qinghai','西寧','某某街某某號');
INSERT INTO customer VALUES (73,'滕西安','13912340073',23,'Shaanxi','西安','某某街某某號');
INSERT INTO customer VALUES (74,'殷濟南','13912340074',24,'Shandong','濟南','某某街某某號');
INSERT INTO customer VALUES (93,'顧臺北','13912340093',28,'Taiwan','臺北','某某街某某號');
INSERT INTO customer VALUES (94,'孟天津','13912340094',29,'Tianjin','天津','某某街某某號');
INSERT INTO customer VALUES (95,'平香港','13912340095',30,'Xianggang','香港','某某街某某號');
INSERT INTO customer VALUES (96,'黃烏魯木齊','13912340096',31,'Xinjiang','烏魯木齊','某某街某某號');
INSERT INTO customer VALUES (99,'蕭杭州','13912340099',34,'Zhejiang','杭州','某某街某某號');
INSERT INTO customer VALUES (100,'尹杭州','13912340100',34,'Zhejiang','杭州','某某街某某號');