对consistencygroup的一些研究和实践

本文介绍了OpenStack Cinder中的consistencygroup特性,它允许将具有公共操作的卷逻辑上组成一组,便于管理和保护数据。文章详细阐述了在Juno版本中对一致性组的实现,包括新增的表、属性、配额和API,并分享了在LVM驱动上模拟一致性组操作的实验,包括创建、快照和删除。作者提醒,实现一致性组需注意后端存储的支持和相应接口的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:

本博客欢迎转载,但请保留原作者信息!

作者:李人可

团队:华为杭州OpenStack团队

     consistency group,直译是一致性组,是Juno版本cinder新引进的一个概念。顾名思义,里面包含了两个意思,consistency(一致性)和group(组),如何体现的呢?处于数据保护或者是容灾的考虑,把一批存在公共操作的卷,在逻辑上划成一个组,用户可以非常方便的通过操作该组,不需要一个一个得去操作卷。所以针对的操作应该是做快照和做备份。

    当前只有E公司的后端支持该特性,该blueprint估计也是E公司提出的。但个人认为在实际应用中还是十分有用的,属于通用的、公共的接口,能提升存储资源使用的效率

    根据当前J版本代码的实现,修改点有:

  • 增加了两张表:cgsnapshots,consistencygroups
  • 增加了consistencygroup_id属性,主要在volume表和snapshot表;
  • 增加了consistencygroups的配额;
  • 提供了consistencygroup的创建、删除、查看的API;
  • 提供了consistencygroup_snapshot的创建、删除、查看的API;

   作者尚未实现对组备份的功能。在该blueprint的讨论中,作者也提到了后续要做的工作:

  1. 在heat层面上也应该理解卷的一致性组概念,应实现相应的接口;
  2. 在对一致性组做快照前,利用QEMU guest agent暂停GuestOS对文件系统的访问,等结束后再恢复;
  3. 支持一致性组的备份,包括在后端存储driver执行下实现对已经挂载卷的备份;

     备份功能可以结合当前快照的实现来做,而heat上的尚处于八字没一撇的情况,而暂停GuestOS文件系统

<think>嗯,用户这次聚焦在数据库双活架构数据复制技术上,看来是系统架构师或DBA在规划容灾方案。从引用内容看,用户已经掌握了基础概念(如存储复制vs数据库复制),但需要更落地的设计指导选型建议。尤其关注到用户引用了孔再华的观点,说明对银行级实践有需求。 关于双活架构的核心矛盾点需要重点解析:一是数据一致性性能的平衡(引用[5]提到的脑裂风险),二是技术选型的局限性(目前仅Oracle RACDB2 pureScale能真正实现双活)。用户可能没明说的是成本考量——存储虚拟化方案虽被提及,但引用[5]明确指出其成本过高。 在回答组织上,先拆解架构层级会更清晰:应用层双活(无状态服务)相对成熟,难点在数据库层。必须强调CAP定理的约束(引用[2][4]都暗示这点),比如金融场景通常优先CP。同步复制方案要重点说明延迟处理机制,引用[1]提到的日志复制优势可以展开。 技术选型部分需要量化对比:Oracle/DB2的官方方案虽成熟,但PostgreSQL的级联复制(引用[3])更适合中小规模。有趣的是,所有引用都未提及开源分库分表方案(如ShardingSphere),这可能是个补充点。 最后脑裂防护要给出具体checklist:比如仲裁节点部署位置、心跳检测间隔设置(引用[5]存储层与数据库层仲裁冲突的案例很典型)。用户可能还需要知道银行同城双活的RPO/RTO行业基准值。</think>以下是数据库双活架构设计与数据复制技术的核心要点,结合引用内容及行业实践整理: --- ### 一、双活架构设计原则 1. **对称双活** 两个数据中心均承载读写流量,通过负载均衡分发请求,实现故障自动切换[^2][^4]。 **关键要求**: - 网络延迟≤5ms(同城场景) - 数据强一致性保障(如金融场景)[^5] 2. **分层解耦设计** ```mermaid graph LR A[应用层] -->|无状态服务| B(负载均衡) B --> C[数据中心A] B --> D[数据中心B] C & D -->|数据同步| E[共享数据库集群] ``` *应用层无状态化,数据库层通过复制技术保持数据同步[^4]* --- ### 二、数据复制技术选型对比 | **技术类型** | **代表方案** | **优势** | **风险** | **适用场景** | |--------------------|-----------------------|-----------------------------------|-----------------------------------|---------------------| | **存储层复制** | EMC SRDF、存储虚拟化 | 简单透明,兼容任意数据库 | 传输整个数据块;坏块同步;脑裂风险[^1][^5] | 非关键业务容灾 | | **数据库层复制** | Oracle RAC、DB2 pureScale | 仅传输日志;避免坏块;低带宽需求[^1][^5] | 仅限特定数据库;配置复杂 | 高一致性要求的双活 | | **日志级复制** | PostgreSQL级联复制 | 开源灵活;支持异步/半同步 | 冲突解决需自定义 | 成本敏感型业务[^3] | > ✅ **推荐选择**:数据库层复制(尤其Oracle RAC/DB2 pureScale)优先,规避存储层复制风险[^1][^5] --- ### 三、关键挑战与解决方案 1. **脑裂问题** - **成因**:网络分区导致双中心同时写入冲突 - **防护措施**: - 仲裁机制(如Tie Breaker节点) - 心跳检测+超时自动降级(例:$$ \text{主中心存活} = \begin{cases} \text{true}, & \text{if } \Delta t \leq 3s \\ \text{false}, & \text{otherwise} \end{cases} $$) - 存储层与数据库层仲裁策略对齐[^5] 2. **数据冲突解决** - **策略**: - 时间戳优先(Last Write Win) - 业务规则合并(如账户余额取最大值) - **工具**:Oracle GoldenGate冲突检测模块 3. **性能优化** - **PostgreSQL示例**: ```sql /* 异步提交降低延迟 */ ALTER SYSTEM SET synchronous_commit = off; /* 日志压缩减少传输量 */ ALTER SYSTEM SET wal_compression = on; ``` - 读写分离:跨中心读请求路由到本地副本[^3] --- ### 四、实施路径建议 1. **阶段1:应用改造** - 无状态服务拆分,会话数据外置(Redis集群) 2. **阶段2:数据库选型** - 强一致场景→Oracle RAC/DB2 pureScale - 最终一致场景→PostgreSQL逻辑复制[^3][^5] 3. **阶段3:验证机制** - 混沌工程测试(网络隔离、节点宕机模拟) - RPO(恢复点目标)/RTO(恢复时间目标)度量 > 📌 **注意**:存储复制方案需确保块级校验(如SRDF的ConsistencyGroup),避免静默数据损坏[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值