背景資訊
資料庫代理的讀寫分離功能將寫請求轉寄到主執行個體,讀請求轉寄到唯讀執行個體,實現讀寫請求的自動分流,減輕主執行個體的壓力。開通並配置了資料庫代理服務後,可通過本文操作驗證讀寫請求是否按照配置的比例進行分流,實現讀寫分離。
驗證流程
本例以ECS執行個體通過內網串連RDS MySQL執行個體為例,驗證讀寫分離功能。主要步驟如下:
在RDS控制台設定唯讀執行個體權重為100的整數倍,主執行個體權重為0(例如10000:0),確保所有讀請求均分配至唯讀執行個體。
通過ECS使用測試帳號串連資料庫Proxy 位址,分別執行讀操作和寫操作。
在RDS控制台的SQL洞察和審計功能中,查看唯讀執行個體和主執行個體的SQL命令執行記錄。
根據SQL執行記錄,判斷讀請求是否由唯讀執行個體處理、寫請求是否由主執行個體處理,從而驗證讀寫分離是否生效。
操作步驟
設定讀寫分離權重。
訪問RDS執行個體列表,在上方選擇地區,然後單擊主執行個體ID。
在左側導覽列,單擊資料庫代理,然後在串連資訊地區,找到目標代理串連地址ID(原代理終端ID)。
單擊目標代理串連地址操作列的修改配置。
在彈出的對話方塊中,完成以下配置:
在串連資訊地區,擷取目標代理串連地址ID關聯的內網(專用網路)的代理串連地址。
通過ECS伺服器使用帳號cxx1串連資料庫並執行讀操作。
登入到待串連RDS MySQL執行個體的ECS伺服器。
執行如下命令,串連RDS MySQL執行個體。
mysql -h代理串連地址 -P連接埠 -u使用者名稱 -p密碼
命令中的參數說明如下表所示。
名稱 | 含義 | 說明 |
代理串連地址 | 步驟1中擷取的執行個體的類型為內網(專用網路)的代理串連地址。 | 如果使用本地用戶端串連RDS MySQL執行個體,則需要使用類型為外網的代理串連地址。 |
大寫字母P | 之後填寫連接埠 | 不涉及。 |
-u | 之後填寫使用者名稱 | 不涉及。 |
小寫字母p | 之後填寫密碼 | 輸入密碼時,需要在-p 後面直接輸入,不允許有空格。 您也可以不在-p 後輸入密碼,在執行命令後再輸入,以防止密碼明文顯示。 |
執行如下命令,進入資料庫testdb01。
執行6次讀操作命令,例如執行如下命令:
SELECT * FROM products LIMIT 20;
執行寫操作。在資料庫testdb01中執行3次寫操作命令,例如執行如下命令:
說明
在上一步中已通過ECS伺服器串連RDS MySQL執行個體並進入資料庫testdb01(詳細步驟請參見步驟2)。
CREATE TABLE Products11 (
prod_id CHAR(10) NOT NULL,
vend_id CHAR(10) NOT NULL,
prod_name CHAR(254) NOT NULL,
prod_price DECIMAL(8,2) NOT NULL,
prod_desc VARCHAR(1000) NULL
);
查看主執行個體和唯讀執行個體的SQL請求處理記錄。
確認SELECT命令請求均由唯讀執行個體處理。確認CREATE命令請求均由主執行個體處理,在唯讀執行個體中未查詢到CREATE命令請求記錄。
訪問RDS執行個體列表,在上方選擇地區,然後單擊主執行個體ID。
在主執行個體左側導覽列,選擇,選擇時間範圍,單擊查詢,未查詢到SELECT命令執行記錄。
在主執行個體左側導覽列,單擊基本資料,將滑鼠移至上方於唯讀執行個體的右側的數字處,在彈出的對話方塊中,單擊唯讀執行個體ID。
在唯讀執行個體左側導覽列,選擇,選擇時間範圍,單擊查詢,可以看到6次SELECT命令的執行記錄,如下圖所示。
在主執行個體左側導覽列,選擇,選擇時間範圍,單擊查詢,可以看到3次CREATE命令的執行記錄,如下圖所示。
驗證結論
在權重設定為10000:0時,只有寫請求由主執行個體處理,所有讀請求均由唯讀執行個體處理,實現了讀寫分離。