在使用vitess的时候我们会遇到刚开始所有的元数据都在同一个ETCD集群中,后续随着业务的增长需要进行数据中心拆分; 分别拆分成多个Local集群的数据中心;

以下就简单说明下迁移步骤:

迁移拓扑图:

1. 资源需求

机房: 机房1, 机房2

ETCD集群: 全局ETCD集群(global), 测试集群1(test1), 测试集群2(test2)

ETCD集群默认路径: 全局(/vt/global), 测试集群1(/vt/test1), 测试集群2(/vt/test2)

K8s集群:所有的部署都是基于k8s集群, 所以k8s集群的基本操作命令需要清楚

2. ETCD集群信息

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

3. 操作步骤

(1). 数据验证

数据验证主要包括ETCD集群数据浏览, ETCD集群监控检查

//全局ETCD数据验证
export ETCDCTL_API= && etcdctl --endpoints="http://etcd-global.test.com:4001" --prefix=true --keys-only=true get /vt
export ETCDCTL_API= && etcdctl --endpoints="http://etcd-global.test.com:4001" cluster-health
//测试集群1 ETCD数据验证
export ETCDCTL_API= && etcdctl --endpoints="http://etcd-test1.datacenter.local:4001" --prefix=true --keys-only=true get /vt
export ETCDCTL_API= && etcdctl --endpoints="http://etcd-test1.datacenter.local:4001" cluster-health
//测试集群2 ETCD数据验证
export ETCDCTL_API= && etcdctl --endpoints="http://etcd-test2.datacenter.local:4001" --prefix=true --keys-only=true get /vt
export ETCDCTL_API= && 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= && 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= && etcdctl --endpoints="http://etcd-test1.datacenter.local:4001" --prefix=true --keys-only=true get /vt export ETCDCTL_API= && 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= && 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= && 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= && etcdctl --endpoints="http://etcd-test2.datacenter.local:4001" --prefix=true --keys-only=true get /vt //这部分需要好好校验
export ETCDCTL_API= && 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= && 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

vitess数据中心迁移步骤的更多相关文章

  1. 一键部署 Docker Datacenter ---简化docker数据中心安装步骤

    DDC 简介 2016年2月下旬,Docker发布了企业级容器管理和服务部署的整体解决方案平台-Docker Datacenter,简称DDC.DDC 有三个组件构成:1. Docker Univer ...

  2. Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  3. 从SQL Server到MySQL,近百亿数据量迁移实战

    从SQL Server到MySQL,近百亿数据量迁移实战 狄敬超(3D) 2018-05-29 10:52:48 212 沪江成立于 2001 年,作为较早期的教育学习网站,当时技术选型范围并不大:J ...

  4. 不使用 ASR 将虚机还原到另一个数据中心

    背景 在 Azure 上可能会遇到一个场景是将一台虚机搬到另一台数据中心,在不借助 ASR 的情况下我们该如何做? 因为 ASR 在云上更多的场景是用于灾备到异地.对于虚机的相关信息主要的是磁盘和网络 ...

  5. 数据中心网络技术新贵:VXLAN与园区网络虚拟化

    摘要:为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生. 1 概述 传统数据中心网络面临的问题 虚拟机规模受设备表项规格限制 在传统二层网络中,交换机通过查询MAC地址表来转发 ...

  6. SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-Replication)

    <Windows Azure Platform 系列文章目录> 熟悉Microsoft Azure平台的读者都了解,Azure SQL Database提供不同等级的,跨数据中心的异地冗余 ...

  7. SDN与NFV技术在云数据中心的规模应用探讨

    Neo 2016-1-29 | 发表评论 编者按:以云数据中心为切入点,首先对SDN领域中的叠加网络.SDN控制器.VxLAN 3种重要技术特点进行了研究,接下来对NFV领域中的通用服务器性能.服务链 ...

  8. 从Windows 2012标准版升级到数据中心版,标准评价版本升级到标准体验版本并激活

    对于Windows 7.Windows 8操作系统,可以在图形界面中通过输入序列号,从低版本直接升级到高的版本,例如从Windows 7家庭版升级到专业版或旗舰版.而对于Windows Server ...

  9. RMAN数据库异机迁移步骤

    --RMAN数据库异机迁移步骤----------------------------2013/09/28 测试环境:AIX+ora11g   一. source数据库准备.   1.获取数据文件编号 ...

随机推荐

  1. android 屏幕适配原则

    屏幕大小 1.不同的layout Android手 机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的 ...

  2. AHM ---301重定向

    使用amh.conf 或重新创建一个test.conf配置文件 .保存目录 /usr/local/nginx/conf/rewrite 例如跳到 www.shuaixingkeji.com if ($ ...

  3. 设置iptables允许ssh、http、ftp服务

    系统环境:centos-6.5 服务器:thinkserver 知识扫盲: NEW:这个包是我们看到的第一个包 ESTABLISHED:一个连接要从NEW变 为ESTABLISHED,只需要接到应答包 ...

  4. scut客户端心跳超时和客户端断开测试

    1.断开的消息触发后,依然会触发超时 2.触发超时不会触发断开 3.超时会触发多次,断开只触发一次 超时不是很准确,好像有时候不会触发.如果要判断玩家是否下线,可以用最后一次心跳时间判断

  5. file's owner以及outlet与连线的理解

    转自:http://www.cnblogs.com/martin1009/archive/2012/06/01/2531028.html xib文件本身可以看做是一个xml,app启动的时候会根据xm ...

  6. PHP7:10件事情你需要知道的

    你是一个Web开发人员或网站所有者?做你的网站上的PHP-enabledCMS如WordPress,Drupal的是,Joomla或Magento的运行?然后,我对你的好消息:新的PHP 7的功能完整 ...

  7. myeclipse能启动tomcat但是用startup.bat无法启动

    myeclipse能启动tomcat但是用startup.bat无法启动 这个问题困扰了我一天,把一天的周末时间白白花费了.各种百度,各种尝试都没办法解决.在江湖上闯,难道就只有百度一招吗? 不是,我 ...

  8. 轻量级UML工具-UMLet

    免费.开源,而且灰常好用的工具,这里就当加一个备注.免得忘了 如何在UMLet中表示static和final? UMLet中表示static用下划线(对于method.function或者operat ...

  9. regcomp/regexec/regfree--POSIX regex functions

    语法 #include <sys/types.h> #include <regex.h> int regcomp(regex_t *preg, const char *rege ...

  10. UVA 12034 Race (递推神马的)

    Disky and Sooma, two of the biggest mega minds of Bangladesh went to a far country. They ate, coded ...