测试使用vitess的时候发现vitess元数据的实现有多种方案,etcd, etcd2, zk,zk2, 由于刚开始测试的时候使用的是基于k8s集群+etcd的,以下就分步说明灾备实现方案:

1. 前置条件

 元数据实现方式必须选择etcd2, 即在启动的时候需要增加参数

-topo_implementation etcd2  #元数据实现方案, 此处一定需要选择etcd2, 如果选择etcd的话无法使用etcd API3提供的 etcdctl make-mirror进行数据同步
-topo_global_server_address http://etcd-global:4001
-topo_global_root "/vt" #此处也需要指定,默认元数据存储路径使用/vt, 此处不设置也行(但是如果不设置程序是可以正常使用但是使用工具无法获取元数据信息,至于为什么获取不到没有搞明白);这里呢可以保留默认配置使用/vt即可

使用etcd2实现的原因是etcd2使用API_V3进行开发, etcd使用的是API_V2进行开发的, API_V3中官方提供了etcdctl make-mirror 工具可以用来做两个集群元数据的同步操作, 这样在跨机房灾备的时候就可以实现两套etcd集群数据的同步操作,保证一个机房挂了另一个机房依然可以正常提供服务。

上面所说的配置需要分别更新vtctld, vtgate, vttablet三个程序对应的配置,保证配置一致系统才可以正常使用。

2. 灾备部署

  

  1. etcd集群

    etcd集群分别在廊坊机房和马驹桥机房分别部署一套,通过工具etcdctl make-mirror实现两个集群数据的同步

#此部分很重要, 使用make-mirror工具必须基于API3
$export ETCDCTL_API=3
#参数说明
#endpoints集群入口(需要备份的源集群)
#dest-prefix目标集群目录前缀
#prefix需要备份的目录
#127.0.0.1:2379目标集群地址,备份数据会被写入目标集群指定的dest-prefix目录下
$etcdctl make-mirror --endpoints=192.168.80.221: --dest-prefix="/vt" --prefix="/vt" 127.0.0.1:2379
#运行后如果有数据同步了会每隔30s输出一次当前更新的key的数量
#18
#19
#19
#29

  同步进程最好开启守护进程, 确保程序始终在运行, 这里我们设计的同步进程需要在每个机房启动一个,确保一个程序宕机之后依然还有一个在使用,避免元数据的丢失;两个进程同时写入的时候不会有影响,写入的时候默认etcd都返回OK,两个进程写入的数据是相同的,,所以不会有影响。

  对于删除的时候我们可以留意下, etcd删除数据的时候只返回影响的行数,所以我们无需担心同事启动两个进程对元数据产生影响,可以确保元数据始终和源是一样的。

# 先删除tt,由于tt不存在所以返回影响行数是0,这个是不会报错的
$ etcdctl --endpoints=192.168.80.221: del tt
$ 0
# 写入key tt1 value,返回OK
$ etcdctl --endpoints=192.168.80.221: put tt1 value
$ OK
# 查询刚才写入的key tt1
$ etcdctl --endpoints=192.168.80.221: get tt1
$ tt1
$ value
# 删除刚才写入的key tt1,返回影响行数1
$ etcdctl --endpoints=192.168.80.221: del tt1
$ 1
# 继续删除,返回影响行数0
$ etcdctl --endpoints=192.168.80.221: del tt1
$

  两个机房的etcd集群都分别使用自己的vip,把vip挂在到LVS下, 通过LVS的探活即可保证元数据的正常切换;

2. tablet部署

  tablet由于是依赖于etcd集群,上面我们已经解决了元数据集群的高可用,tablet的部署可以在一个机房部署两个实例,组成一个集群, 如果一个机房挂了, 可以很容易切换到另外一个机房。 只需把灾备机房的从提升为主即可正常提供服务; 这个中间数据是不会丢失的,如果服务中压力大可以随时再增加1-2个从。

3. vtgate

 vtgate的部署也是使用两个机房分别部署, 灾备机房可以不提供服务,两个机房的机器也可以通过挂在在LVS下,LVS进行探活,如果机房或者机器出现故障可以自动切换到灾备机房。

vitess元数据跨机房灾备解决方案的更多相关文章

  1. NOS跨分区灾备设计与实现

    本文来自网易云社区 作者:王健 摘要 NOS(网易对象存储)在实现多机房(杭州机房,北京机房等)部署后,允许一个用户在建桶时选择桶所属机房.在此基础上,我们实现了跨机房的数据复制,进一步实现了跨机房的 ...

  2. Oracle集群和灾备解决方案介绍

       Oracle本身有各种各样的解决方案,本文主要是对以下几种解决方案做一下简单的梳理. 1. Oracle Rac解决方案. Oracle Rac主要通过两台Oracle服务器来组件集群,提高Or ...

  3. etcd跨机房部署方案

    使用ETCD做为元数据方便快捷,但是谈到跨机房灾备可能就迷糊了,我们在做节日灾备的时候同样遇到了问题, 通过查阅官方文档找到了解决方案,官方提供make-mirror方法,提供数据镜像服务 注意: m ...

  4. 如何守护数据安全? 这里有一份RDS灾备方案为你支招

    当今世界是一个充满着数据的互联网世界,生活的方方面面都在不断产生着数据,比如出行记录.消费记录.浏览的网页.发送的消息等等.除了文本类型的数据,图像.音乐.声音都是数据.对于企业而言,数据更是重要的生 ...

  5. SQLServer 2014 本地机房HA+灾备机房DR解决方案

    SQLServer 2014 主数据中心HA+灾备机房DR解决方案 SQLServer 2008 的时候使用 local WSFC+DR Mirror方式,对象是单数据库 两个单独的 WSFC 上使用 ...

  6. Linux实战教学笔记48:openvpn架构实施方案(一)跨机房异地灾备

    第一章VPN介绍 1.1 VPN概述 VPN(全称Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公共网络中建立专用的数据通信网络的技术,可以为企业之间或者 ...

  7. 云区域(region),可用区(AZ),跨区域数据复制(Cross-region replication)与灾备(Disaster Recovery)(部分1)

    本文分两部分:部分1 和 部分2.部分1 介绍 AWS,部分2 介绍阿里云和OpenStack云. 1. AWS 1.1 AWS 地理组件概况 AWS 提供三种地理性组件: Regions:区域,即A ...

  8. 理解 OpenStack 高可用(HA)(1):OpenStack 高可用和灾备方案 [OpenStack HA and DR]

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  9. openStack灾备方案说明

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1) OpenStack 高可用方案概述 (2) Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3 ...

随机推荐

  1. Linux间的进程通信;以及子进程的创建

    "-----第六天-----------------------------------------------------------------------------" .版 ...

  2. LinkedList的一种错误使用方法

    近期在做图像处理的时候.发现某一段代码很的慢.慢得让人无法接受.基本的代码是顺序訪问一个LinkedList的元素,效果是随着index的变大,速度越来越慢,list的元素个数在百万以上.找到原因,分 ...

  3. CentOS6.2下安装中文输入法

    因为在程序中需要输入中文,但是系统没有预装中文输入法,所以就安装一下,顺便记录 1.用root登录 ,或su root2.yum install "@Chinese Support" ...

  4. django中使用POST方法报错 URL via POST, but the URL doesn't end in a slash

    该方式是因为URL路径没有使用slash(斜线"/")结尾造成的. 因此在使用POST的JavaScript函数的路径参数中,路径URL必须使用/结尾.

  5. pycharm 社区版

    这个是免费版.到3.1.13 http://pan.baidu.com/s/1bnvPdtt 没用过idea的商业版,不知道为什么它的更新那么蛋疼,不能增量更新,每次都得手动下载完整的压缩包.

  6. P3P解决cookie跨域

    P3P是什么 P3P(Platform for Privacy Preferences)是W3C公布的一项隐私保护推荐标准,以为用户提供隐私保护.   P3P标准的构想是:Web 站点的隐私策略应该告 ...

  7. curl myip.ipip.net curl ip.cn curl cip.cc

    [命令行] curl查询公网出口IP 2016年07月22日 14:27:02 阅读数:19022 不管是在家里还是办公室,或者是公司的主机,很多时候都是在内网中,也就是说很多都是通过 NAT上网的, ...

  8. R语言安装sqldb包报错解决办法

    我使用Rtudio环境,安装sqldb几次出错.网上没有好的教程. 经过自己试验之后,这样处理.我写出来以后,供大家参考. > install.packages("sqldf" ...

  9. C#中oracle数据库的连接方法

    C#中oracle数据库的连接方法 一.关于数据库的操作 1.数据库连接      有2种:      第一种:古老的方法(较为死板,不利于灵活操作),即用OracleConnection的类来连接 ...

  10. 用TortoiseSVN忽略文件或文件夹(ignore)(网络摘抄记录)

    Android项目需要协同一起开发时,就需要保证项目同步完整性.SVN忽略文件列表:.gradle .idea build local.properties *.iml app/*.iml app/b ...