每日速訊:OB運維 | tenant--刪除租戶的流程設計
2023-03-30 08:19:21 來源:騰訊云
1
聽新聞

作者:姚嵩


【資料圖】

不知道是地球人還是外星人,知道的可以留言告訴小編...

本文來源:原創投稿

*愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯系小編并注明來源。

背景:

ob中的租戶相當于我們平常認知的數據庫集群,對外提供數據庫服務。

當需要刪除ob中的租戶時,會刪除該租戶下的所有對象,包含數據庫、表等。

數據是?常重要的,為了避免意外情況,

此時,你可能需要設置多種策略,以便確認&處理?些異常場景:

1.確認該租戶刪除后,業務是否會有異議;

2.刪除租戶后,如果業務需要,也可以恢復該租戶;

環境說明:

ob版本: 5.7.25-OceanBase-v3.2.3.2

租戶類型: MySQL租戶

待刪租戶名: obcp_t1

刪除租戶的?概流程:

1.確認租戶當前是否正在被使?,如果租戶當前正在被業務使?,則和業務溝通確認租戶是否真的要刪除;

2.如果租戶未被使?,鎖定租戶;

3.?掉租戶現有的空閑連接,防?現有連接執?SQL;

4.租戶鎖定N天,等待業務反饋是否受影響,避免待刪除的租戶影響業務模塊;

5.業務反饋?影響后,刪除租戶。

操作步驟:

說明:

下?的操作都是使?sys租戶下的root賬戶操作;

建議采?直接連接observer的連接?式,因為執?kill的操作需要直連observer執?

(kill的session_id來源于oceanbase.__all_virtual_processlist表)。

-- 設置?戶變量存儲租戶名

set @tenant_name="obcp_t1";

-- 確定租戶當前是否正被使?

-- 如果存在?Sleep狀態的會話,需要確認是否正在執?SQL,如果存在,需要和業務溝通租戶是否正確

select user,tenant,host,db,command,svr_ip,user_client_ip,  trans_id,thread_id,total_time,infofrom oceanbase.__all_virtual_processlistwhere tenant=@tenant_name and command!="Sleep"order by total_time desc ;

-- 如果租戶當前?業務執?,鎖定租戶

-- 鎖定租戶后,就不能在該租戶上創建新的連接,已有連接保持不變

alter tenant obcp_t1 lock ; -- 鎖定是冪等操作,可以重復執? select tenant_name,locked from __all_tenant ; -- 1表示鎖定,0表示未鎖定

-- ?成kill租戶會話的語句

select concat("kill ",id,";") from oceanbase.__all_virtual_processlistwhere tenant=@tenant_name;

-- (直連observer)執?上?個步驟?成的kill語句,殺掉租戶已有的連接

kill xxx;.....

-- N天后,業務反饋?影響,再繼續租戶刪除步驟

-- (MySQL租戶可選)刪除租戶時,將租戶放?回收站,可以恢復回收站中的租戶

set recyclebin=1; DROP TENANT obcp_t1 ;show parameters like "recyclebin_object_expire_time"; -- 查看?動清理回收站的時間

-- 直接刪除租戶

drop tenant ${object_name} force ; -- 刪除回收站中的租戶,object_name可由show recyclebin獲取drop tenant obcp_t1 force ; -- 直接刪除租戶

標簽:

責編:

精彩推送