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.获取数据文件编号 ...
随机推荐
- Oracle Report(Report 6i/RDF)使用全局变量fnd_global, fnd_frofile
注:本文为原创,作为学习交流使用,转载请标明作者及出处,作者保留追究法律责任的权力. Lumen Su lzsu1989#gmail.com (#=@) www.cnblogs.com/lzsu198 ...
- 悟道—位IT高管20年的职场心经(读书笔记一)
悟道--一位IT高管20年的职场心经 第一章 修炼! 修炼! 别跟我谈事业,先把工作做好. 别跟我说理想,先把饭碗端好: 志不可天天立.道必须日日修.没有实力,一切皆为妄谈. 修炼是硬道理. 1.1 ...
- 三款免费的PHP加速器:APC、eAccelerator、XCache比较
前几天给 Nova 的缓存系统添加了 Memcache 支持.但是这玩意儿对个人博客系统来说可能不太合适(哪天 XKLog 推出多用户版本了可能会派上用场),事实上,就我自己试用而言,单机情况下使用 ...
- unity调用系统剪切板功能
package com.game.utils; import android.app.Activity; import android.content.ClipData; import android ...
- SVN使用(自己总结)
1.第一次导入,注意要新建个readme.txt文件用于记录版本更改,每次导入时 要填写import message 2.第二次增加文件导入时 勾选未受控版本文件(新增加文件) 完成上传就可更新增加的 ...
- 红茶一杯话Binder (ServiceManager篇)
1.先说一个大概 Android平台的一个基本设计理念是构造一个相对平坦的功能集合,这些功能可能会身处于不同的进程中,然而却可以高效地整合到一起,实现不同的用户需求.这就必须打破过去各个孤立App所形 ...
- 小马哥课堂-统计学-z分数
Standard score(z-分数) The standard score is the signed number of standard deviations by which the val ...
- RTFSC-afinal框架[一]
RTFSC-afinal框架 finalActivity模块 : android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定.无需findViewById和setClickListen ...
- [转]AngularJS ui-router (嵌套路由)
本文转自:http://www.oschina.net/translate/angularjs-ui-router-nested-routes http://www.codeproject.com/A ...
- Win7下 OpenCV+Qt开发环境搭建
1.所需软件工具: (1)OpenCV开发库,2.4.9版:包括源文件(source文件夹)和编译后的文件(build文件夹),但最好自己使用CMake又一次编译.否则easy出错. (2)Qt Cr ...