vitess数据中心迁移步骤
在使用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数据中心迁移步骤的更多相关文章
- 一键部署 Docker Datacenter ---简化docker数据中心安装步骤
DDC 简介 2016年2月下旬,Docker发布了企业级容器管理和服务部署的整体解决方案平台-Docker Datacenter,简称DDC.DDC 有三个组件构成:1. Docker Univer ...
- Hbase实用技巧:全量+增量数据的迁移方法
摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...
- 从SQL Server到MySQL,近百亿数据量迁移实战
从SQL Server到MySQL,近百亿数据量迁移实战 狄敬超(3D) 2018-05-29 10:52:48 212 沪江成立于 2001 年,作为较早期的教育学习网站,当时技术选型范围并不大:J ...
- 不使用 ASR 将虚机还原到另一个数据中心
背景 在 Azure 上可能会遇到一个场景是将一台虚机搬到另一台数据中心,在不借助 ASR 的情况下我们该如何做? 因为 ASR 在云上更多的场景是用于灾备到异地.对于虚机的相关信息主要的是磁盘和网络 ...
- 数据中心网络技术新贵:VXLAN与园区网络虚拟化
摘要:为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生. 1 概述 传统数据中心网络面临的问题 虚拟机规模受设备表项规格限制 在传统二层网络中,交换机通过查询MAC地址表来转发 ...
- SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-Replication)
<Windows Azure Platform 系列文章目录> 熟悉Microsoft Azure平台的读者都了解,Azure SQL Database提供不同等级的,跨数据中心的异地冗余 ...
- SDN与NFV技术在云数据中心的规模应用探讨
Neo 2016-1-29 | 发表评论 编者按:以云数据中心为切入点,首先对SDN领域中的叠加网络.SDN控制器.VxLAN 3种重要技术特点进行了研究,接下来对NFV领域中的通用服务器性能.服务链 ...
- 从Windows 2012标准版升级到数据中心版,标准评价版本升级到标准体验版本并激活
对于Windows 7.Windows 8操作系统,可以在图形界面中通过输入序列号,从低版本直接升级到高的版本,例如从Windows 7家庭版升级到专业版或旗舰版.而对于Windows Server ...
- RMAN数据库异机迁移步骤
--RMAN数据库异机迁移步骤----------------------------2013/09/28 测试环境:AIX+ora11g 一. source数据库准备. 1.获取数据文件编号 ...
随机推荐
- 【Java集合源代码剖析】TreeMap源代码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/36421085 前言 本文不打算延续前几篇的风格(对全部的源代码加入凝视),由于要理解透Tr ...
- Json数组操作小记 及 JSON对象和字符串之间的相互转换
[{"productid":"1","sortindex":"2"},{"productid":&q ...
- Team Foundation Server安装指南(转载)
1.说明 Team Foundation Server(以下简称VSTF)的安装并不是一件轻松的事情,在安装的过程中相信很多人都或多或少碰到一些问题而安装不成功,虽然手头有微软提供的所谓安装手册,也曾 ...
- eclipse 启动时使用指定的jdk
-vmD:/DevPrograms/Java/jdk1.5.0_22/bin/javaw.exe-startupplugins/org.eclipse.equinox.launcher_1.1.1.R ...
- 反射学习2-通过反射机制动态获取属性的值模拟Struts的自动赋值
一.准备知识: Java反射机制 处理事务的JavaBean String的操作常用方法 二.模拟步骤 这里我们通过反射机制动态获取属性的值模拟Struts中的自动赋值. 1.首先创建 ...
- 0049 MyBatis关联映射--一对一关系
世上的事务总不是孤立存在的,表现在Java类里面,则是类与类之间的关系,比如继承is-a.依赖use-a.关联has-a,反映在数据库中,则是表与表之间的关系,比如外键 关联关系存在着以下几种类型:一 ...
- 利用JMX统计远程JAVA进程的CPU和Memory
http://songzi0206.iteye.com/blog/1541636 ******************** 从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java ...
- 《The Joy of X》
来到园子已经几个月了,平时也就看看新闻.招聘信息,偶尔也会看看技术文章.作为一名非计算机专业的学生,我深深地被技术的魅力所吸引.就在半个多月前,我开通了自己的博客,以便记录自己的成长经历,也能与园子里 ...
- Jquery学习笔记(8)--京东导航菜单(2)增加弹框
京东导航,添加中间的弹框栏,使用position定位,放在左侧栏的li标签里面,成为一个整体,保证鼠标在弹框里的时候,弹框不消失: <!DOCTYPE html> <html lan ...
- 转 java调用php的webService
1.首先先下载php的webservice包:NuSOAP,自己到官网去下载,链接就不给出来了,自己去google吧 基于NoSOAP我们写了一个php的webservice的服务端,例子如下: ...