vitess數據中心遷移步驟

在使用vitess的時候咱們會遇到剛開始全部的元數據都在同一個ETCD集羣中,後續隨着業務的增加須要進行數據中心拆分; 分別拆分紅多個Local集羣的數據中心;mysql

如下就簡單說明下遷移步驟:sql

遷移拓撲圖:測試

 

 

 

 

1. 資源需求spa

    機房: 機房1, 機房2code

    ETCD集羣: 全局ETCD集羣(global), 測試集羣1(test1), 測試集羣2(test2)server

    ETCD集羣默認路徑: 全局(/vt/global), 測試集羣1(/vt/test1), 測試集羣2(/vt/test2)blog

    K8s集羣:全部的部署都是基於k8s集羣, 因此k8s集羣的基本操做命令須要清楚ip

2. ETCD集羣信息資源

//全局ETCD
etcd-global.test.com:4001
//機房1
etcd-test1.datacenter.local:4001
//機房2
etcd-test2.datacenter.local:4001

 

3. 操做步驟部署

  (1). 數據驗證

        數據驗證主要包括ETCD集羣數據瀏覽, ETCD集羣監控檢查

//全局ETCD數據驗證
export ETCDCTL_API=3 && etcdctl --endpoints="http://etcd-global.test.com:4001" --prefix=true --keys-only=true get /vt
export ETCDCTL_API=2 && etcdctl --endpoints="http://etcd-global.test.com:4001" cluster-health
//測試集羣1 ETCD數據驗證 export ETCDCTL_API=3 && etcdctl --endpoints="http://etcd-test1.datacenter.local:4001" --prefix=true --keys-only=true get /vt export ETCDCTL_API=2 && etcdctl --endpoints="http://etcd-test1.datacenter.local:4001" cluster-health
//測試集羣2 ETCD數據驗證 export ETCDCTL_API=3 && etcdctl --endpoints="http://etcd-test2.datacenter.local:4001" --prefix=true --keys-only=true get /vt export ETCDCTL_API=2 && etcdctl --endpoints="http://etcd-test2.datacenter.local:4001" cluster-health

 

  (2). 測試機房1 數據遷移

    測試機房1主要是從Global(ETCD集羣)中把/vt/test1 目錄遷移到  測試集羣1(ETCD集羣)中的/vt/test1目錄下,而且保證服務可用。

#測試集羣1操做
//從全局ETCd拷貝數據到測試集羣1
export ETCDCTL_API=3 && etcdctl make-mirror --endpoints="http://etcd-global.test.com:4001" --dest-prefix="/vt/test1" --prefix="/vt/test1" "http://etcd-test1.datacenter.local:4001"
export ETCDCTL_API=3 && etcdctl --endpoints="http://etcd-test1.datacenter.local:4001" --prefix=true --keys-only=true get /vt
 
export ETCDCTL_API=3 && etcdctl --endpoints="http://etcd-global.test.com:4001" --prefix=true --keys-only=true get /vt/global/cells
#
/vt/global/cells/test1 信息沒有用,須要從global刪除; 刪除後經過vtctld才能看到CellInfo export ETCDCTL_API=3 && etcdctl --endpoints=http://etcd-global.test.com:4001 del "/vt/global/cells/test1" //更新CellInfo vtctl -topo_implementation etcd2 -topo_global_server_address http://etcd-global.test.com:4001 -topo_global_root /vt/global GetCellInfo test1 vtctl -topo_implementation etcd2 -topo_global_server_address http://etcd-global.test.com:4001 -topo_global_root /vt/global UpdateCellInfo -server_address http://etcd-test1.datacenter.local:4001 -root /vt/test1 test1 //使用滾動更新更新VTCTLD //更新測試集羣1 kubectl -s https://192.168.110.120:8080 --insecure-skip-tls-verify=true --username="user" --password="pwd" --namespace=datacenter rolling-update vtctld-test1 --image=192.168.110.110/vitesss/lite:mysql57_2.2.3_master //使用滾動更新更新VTGATE //更新測試集羣1 kubectl -s https://192.168.110.120:8080 --insecure-skip-tls-verify=true --username="user" --password="pwd" --namespace=datacenter rolling-update vtgate-test1 --image=192.168.110.110/vitesss/lite:mysql57_2.2.3_master

 

更新完成後進行驗證,確保服務均可以正常訪問,不會影響業務

 

 (3). 測試機房2數據遷移

  測試機房2主要是從Global(ETCD集羣)中把/vt/test2 目錄遷移到  測試集羣2(ETCD集羣)中的/vt/test2目錄下,而且保證服務可用。

#測試集羣2操做
//從全局ETCd拷貝數據到測試集羣2
export ETCDCTL_API=3 && etcdctl make-mirror --endpoints="http://etcd-global.test.com:4001" --dest-prefix="/vt/test2" --prefix="/vt/test2" "http://etcd-test2.datacenter.local:4001"
export ETCDCTL_API=3 && etcdctl --endpoints="http://etcd-test2.datacenter.local:4001" --prefix=true --keys-only=true get /vt
  
//這部分須要好好校驗
export ETCDCTL_API=3 && etcdctl --endpoints="http://etcd-global.test.com:4001" --prefix=true --keys-only=true get /vt/global/cells
//使用etcdctl更新刪除cell信息
#/vt/global/cells/test2 信息沒有用,須要從global刪除; 刪除後經過vtctld才能看到CellInfo
export ETCDCTL_API=3 && etcdctl --endpoints=http://etcd-global.test.com:4001 del "/vt/global/cells/test2"
 
//更新CellInfo
vtctl -topo_implementation etcd2 -topo_global_server_address http://etcd-global.test.com:4001 -topo_global_root /vt/global GetCellInfo test2
vtctl -topo_implementation etcd2 -topo_global_server_address http://etcd-global.test.com:4001 -topo_global_root /vt/global UpdateCellInfo -server_address http://etcd-test2.datacenter.local:4001 -root /vt/test2 test2
 
//使用滾動更新更新VTCTLD
//更新測試集羣2
kubectl -s https://192.168.110.130:8080 --insecure-skip-tls-verify=true --username="user" --password="pwd" --namespace=datacenter rolling-update vtctld-test2 --image=192.168.110.110/vitesss/lite:mysql57_2.2.3_master
 
//使用滾動更新更新VTGATE
//更新測試集羣2
kubectl -s https://192.168.110.130:8080 --insecure-skip-tls-verify=true --username="user" --password="pwd" --namespace=datacenter rolling-update vtgate-test2 --image=192.168.110.110/vitesss/lite:mysql57_2.2.3_master
相關文章
相關標籤/搜索