文档中心
v3.4

运维管理

  • 运维管理
    • 升级
      • 离线升级
      • 滚动升级
      • 版本兼容性
    • 监控
      • 整体监控框架概述
      • sdbtop工具
      • 监控集群
      • 监控节点状态
    • 数据库配置
      • 参数说明
      • 参数配置
      • 特殊配置项修改
        • dbpath
        • indexpath
        • lobpath
        • lobmetapath
        • logfilesz/logfilenum
    • 高可用与容灾
      • 高可用
      • 容灾
      • 同城双中心部署
      • 同城三中心部署
      • 两地三中心部署
      • 三地五中心部署
    • 扩缩容
      • 新增服务器
      • 服务器内新增节点
      • 服务器缩容
      • 服务器内节点缩容
    • 数据管理工具
      • 命令行工具
      • 本地集群检查工具
      • 数据导入工具
      • 数据导出工具
      • 数据库检测工具
      • 数据库日志dump工具
      • 节点数据一致性检测工具
      • 数据库信息收集工具
      • 大对象工具
      • 密码管理工具
      • 日志重放工具
      • 容灾切换合并工具
      • 数据安全处理工具
    • 分区管理
      • 分区数据均衡
      • 避免热点数据
      • 分区可靠性管理
      • 分区性能监控
    • 性能调优
      • 单机性能监控
      • 集群性能监控
      • 性能瓶颈诊断
    • 访问计划
      • 概述
      • 基于代价的访问计划评估
      • 查看访问计划
      • 访问计划缓存
      • 统计信息
    • 备份恢复
      • 备份恢复原理
      • 数据备份
      • 数据恢复
      • 日志归档与重放
    • 数据迁移
      • 使用 sdbimprt 导入数据
      • 使用 sdbexprt 导出数据
    • 死锁检测
    • 热备节点
    • 日志分析
      • 集群管理诊断日志
      • 节点诊断日志
      • 审计日志
      • 集群日志分析方法
    • 流程跟踪
      • trace 原理
      • trace 收集与格式化工具
      • trace 分析方法
    • 安全
      • 数据库系统安全
      • 网络安全
      • 鉴权机制
    • 数据库引擎卸载

同城双中心部署

本文档主要介绍在同城双中心的部署方案下,如何应对不同级别的灾难。

灾难应对方案

节点故障

当复制组中超过半数节点发生故障,该复制组将无法提供读写服务。针对该情况,用户需参考 节点故障场景进行灾难恢复。如果故障节点未超过半数,用户仅需修复故障节点并恢复节点数据即可。

单节点故障情况

主中心故障

当主中心发生故障,集群将失去半数以上的节点,导致无法对外提供读写服务。针对该情况,用户需参考 数据中心故障场景进行灾难恢复。

主中心故障情况

灾备中心故障

当灾备中心发生故障,主中心仍可提供读写服务。针对该情况,用户仅需修复故障中心并恢复节点数据即可。

灾备中心故障情况

数据中心网络故障

当数据中心发生网络故障,集群仍可提供读写服务。针对该情况,用户仅需修复网络故障并恢复节点数据即可。

同城网络故障情况

灾难恢复

SequoiaDB 巨杉数据库提供 容灾切换合并工具,用于对节点故障场景和数据中心故障场景进行灾难恢复。下述以 SequoiaDB 安装目录 /opt/sequoiadb/、集群鉴权用户名“sdbadmin”和用户密码“sdbadmin”为例,介绍不同场景的灾难恢复步骤。

节点故障场景

下述以复制组 group1 不可用为例,介绍节点故障场景的具体恢复步骤。

  1. 选择一台未发生故障的主机 sdbserver,切换至容灾工具目录

    $ cd /opt/sequoiadb/tools/dr_ha
  2. 修改配置文件 cluster_opr.js

    $ vim cluster_opr.js

    修改内容如下:

    if ( typeof(SEQPATH) != "string" || SEQPATH.length == 0 ) { SEQPATH = "/opt/sequoiadb/" ; }
    if ( typeof(SDBUSERNAME) != "string" ) { SDBUSERNAME = "sdbadmin" ; }
    if ( typeof(SDBPASSWD) != "string" ) { SDBPASSWD = "sdbadmin" ; }
    if ( typeof(SUB1HOSTS) == "undefined" ) { SUB1HOSTS = [ "sdbserver" ] ; }
    if ( typeof(COORDADDR) == "undefined" ) { COORDADDR = [ "sdbserver:11810" ] }
    if ( typeof(CURSUB) == "undefined" ) { CURSUB = 1 ; }
    if ( typeof(MINREPLICANUM) == "undefined" ) { MINREPLICANUM = 1 ; }
    if ( typeof(NEEDREELECT) == "undefined" ) { NEEDREELECT = false }
    if ( typeof(NEEDBROADCASTINITINFO) == "undefined" ) { NEEDBROADCASTINITINFO = true }

    Note:

    配置文件的参数说明可参考 容灾切换合并工具。

  3. 剔除故障节点,剔除后复制组将恢复读写服务

    $ sh detachGroupNode.sh
  4. 修复故障节点

  5. 将修复后的节点重新加入复制组

    $ sh attachGroupNode.sh
  6. 通过 SDB Shell 检查节点间数据是否一致

    > db.snapshot(SDB_SNAP_HEALTH, {GroupName: "group1"}, {IsPrimary: null, CompleteLSN: null})

    对比主备节点间字段 CompleteLSN 的值,如果保持一致则说明节点数据一致

    {
      "IsPrimary": true,
      "CompleteLSN": 228
    }
    {
      "IsPrimary": false,
      "CompleteLSN": 228
    }
    {
      "IsPrimary": false,
      "CompleteLSN": 228
    }

    Note:

    如果主备节点间字段 CompleteLSN 的值不一致,用户需等待片刻,待节点数据同步后再次检查节点数据是否一致。

  7. 在当前复制组中重新选主

    > var rg = db.getRG("group1")
    > rg.reelect({Seconds: 60})

数据中心故障场景

当数据中心故障导致集群不可用,需要通过以下步骤进行恢复:

  1. 划分子网
  2. 集群分裂
  3. 集群合并
  4. 集群信息初始化

下述以主中心整体故障为例,介绍数据中心故障场景的具体恢复步骤。

划分子网

将正常机房划分为 SUB1,故障机房划分为 SUB2

子网 主机
SUB1 sdbserver3
SUB2 sdbserver1、sdbserver2

集群分裂

集群分裂操作用于将灾备中心从集群中分裂,使其成为具备读写功能的独立集群。分裂完成后,将由灾备中心对外提供服务。

  1. 开启自动全量同步,避免节点重启失败

    逐一修改所有故障节点的配置文件 sdb.conf

    $ vim /opt/sequoiadb/conf/local/<端口号>/sdb.conf

    修改内容如下:

    ...
    dataerrorop=1
    ...
  2. 选择 SUB1 的主机,切换至容灾工具目录

    $ cd /opt/sequoiadb/tools/dr_ha
  3. 修改配置文件 cluster_opr.js

    $ vim cluster_opr.js

    修改内容如下:

    if ( typeof(SUB1HOSTS) == "undefined" ) { SUB1HOSTS = [ "sdbserver3" ] ; }
    if ( typeof(SUB2HOSTS) == "undefined" ) { SUB2HOSTS = [ "sdbserver1", "sdbserver2" ] ; }
    if ( typeof(COORDADDR) == "undefined" ) { COORDADDR = [ "sdbserver3:11810" ] }
    if ( typeof(CURSUB) == "undefined" ) { CURSUB = 1 ; }
    if ( typeof(ACTIVE) == "undefined" ) { ACTIVE = true ; }
  4. 执行分裂操作

    $ sh split.sh
  5. 修复故障中心

  6. 选择 SUB2 的任意一台主机,切换至容灾工具目录

    $ cd /opt/sequoiadb/tools/dr_ha
  7. 修改配置文件 cluster_opr.js

    $ vim cluster_opr.js

    修改内容如下:

    if ( typeof(SUB1HOSTS) == "undefined" ) { SUB1HOSTS = [ "sdbserver3" ] ; }
    if ( typeof(SUB2HOSTS) == "undefined" ) { SUB2HOSTS = [ "sdbserver1", "sdbserver2" ] ; }
    if ( typeof(COORDADDR) == "undefined" ) { COORDADDR = [ "sdbserver1:11810" ] }
    if ( typeof(CURSUB) == "undefined" ) { CURSUB = 2 ; }
    if ( typeof(ACTIVE) == "undefined" ) { ACTIVE = false ; }
  8. 执行分裂操作

    $ sh split.sh 

集群合并

  1. 选择集群中的任意一台主机,执行合并操作

    $ sh merge.sh 
  2. 通过 SDB Shell 检查节点间数据是否一致

    > db.snapshot(SDB_SNAP_HEALTH, {}, {NodeName: null, IsPrimary: null, CompleteLSN: null})

    对比主备节点间字段 CompleteLSN 的值,如果保持一致则说明节点间数据一致

    ...
    {
      "NodeName": "sdbserver1:11820",
      "IsPrimary": true,
      "CompleteLSN": 80148
    }
    {
      "NodeName": "sdbserver2:11820",
      "IsPrimary": false,
      "CompleteLSN": 80148
    }
    {
      "NodeName": "sdbserver3:11820",
      "IsPrimary": false,
      "CompleteLSN": 80148
    }
    ...

    Note:

    如果主备节点间字段 CompleteLSN 的值不一致,用户需等待片刻,待节点数据同步后再次检查节点数据是否一致。

  3. 关闭自动全量同步

    > db.updateConf({dataerrorop: 2})

集群信息初始化

集群信息初始化操作用于将主节点分配至主中心,以恢复集群初始状态。执行该操作前,用户需转移或删除集群部署信息文件 datacenter_init.info,该文件位于 SequoiaDB 安装目录。

  1. 根据数据中心划分子网,主中心为 SUB1,灾备中心为 SUB2

    子网 主机
    SUB1 sdbserver1、sdbserver2
    SUB2 sdbserver3
  2. 选择 SUB1 的任意一台主机,切换至容灾工具目录

    $ cd /opt/sequoiadb/tools/dr_ha
  3. 修改配置文件 cluster_opr.js

    $ vim cluster_opr.js

    修改内容如下:

    if ( typeof(SEQPATH) != "string" || SEQPATH.length == 0 ) { SEQPATH = "/opt/sequoiadb/" ; }
    if ( typeof(SDBUSERNAME) != "string" ) { SDBUSERNAME = "sdbadmin" ; }
    if ( typeof(SDBPASSWD) != "string" ) { SDBPASSWD = "sdbadmin" ; }
    if ( typeof(SUB1HOSTS) == "undefined" ) { SUB1HOSTS = [ "sdbserver1", "sdbserver2" ] ; }
    if ( typeof(SUB2HOSTS) == "undefined" ) { SUB2HOSTS = [ "sdbserver3" ] ; }
    if ( typeof(COORDADDR) == "undefined" ) { COORDADDR = [ "sdbserver1:11810" ] }
    if ( typeof(CURSUB) == "undefined" ) { CURSUB = 1 ; }
    if ( typeof(CUROPR) == "undefined" ) { CUROPR = "split" ; }
    if ( typeof(ACTIVE) == "undefined" ) { ACTIVE = true ; }
    if ( typeof(NEEDBROADCASTINITINFO) == "undefined" ) { NEEDBROADCASTINITINFO = false }
  4. 集群信息初始化

    $ sh init.sh 
  5. 选择 SUB2 的主机,切换至容灾工具目录

    $ cd /opt/sequoiadb/tools/dr_ha
  6. 修改配置文件 cluster_opr.js

    $ vim cluster_opr.js

    修改内容如下:

    if ( typeof(SEQPATH) != "string" || SEQPATH.length == 0 ) { SEQPATH = "/opt/sequoiadb/" ; }
    if ( typeof(SDBUSERNAME) != "string" ) { SDBUSERNAME = "sdbadmin" ; }
    if ( typeof(SDBPASSWD) != "string" ) { SDBPASSWD = "sdbadmin" ; }
    if ( typeof(SUB1HOSTS) == "undefined" ) { SUB1HOSTS = [ "sdbserver1", "sdbserver2" ] ; }
    if ( typeof(SUB2HOSTS) == "undefined" ) { SUB2HOSTS = [ "sdbserver3" ] ; }
    if ( typeof(COORDADDR) == "undefined" ) { COORDADDR = [ "sdbserver1:11810" ] }
    if ( typeof(CURSUB) == "undefined" ) { CURSUB = 2 ; }
    if ( typeof(CUROPR) == "undefined" ) { CUROPR = "split" ; }
    if ( typeof(ACTIVE) == "undefined" ) { ACTIVE = false ; }
    if ( typeof(NEEDBROADCASTINITINFO) == "undefined" ) { NEEDBROADCASTINITINFO = true }
  7. 集群信息初始化

    $ sh init.sh 
收起

建议反馈
本页导航
粤ICP备16118040号
回到顶部

PHP网站源码石岩SEO按天扣费丹竹头网站制作南山企业网站建设双龙网站设计模板大鹏关键词按天扣费双龙品牌网站设计木棉湾网站搭建同乐百度竞价包年推广横岗网站推广工具布吉关键词按天计费大鹏网页设计横岗网站优化按天扣费坂田百姓网标王同乐企业网站设计荷坳百度关键词包年推广大运网络广告推广荷坳SEO按天计费吉祥至尊标王东莞SEO按天扣费南山SEO按效果付费同乐网站优化按天扣费荷坳网站改版民治外贸网站设计爱联seo网站优化福田网站设计东莞百度标王龙华百度标王龙岗设计公司网站布吉网站推广工具布吉SEO按效果付费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化