<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>CnosDB Blog</title>
        <link>https://cnosdb.com/zh/blog</link>
        <description>CnosDB Blog</description>
        <lastBuildDate>Mon, 08 Jan 2024 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh</language>
        <item>
            <title><![CDATA[CnosDB 容灾方案概述]]></title>
            <link>https://cnosdb.com/zh/blog/cnosdb容灾方案概述</link>
            <guid>https://cnosdb.com/zh/blog/cnosdb容灾方案概述</guid>
            <pubDate>Mon, 08 Jan 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[本文主要介绍了跟容灾相关的关键技术以及技术整合后形成的几种具体方案，每种方案都在RTO、RPO、部署成本和维护成本等方面有自己的特点和区别，可以根据具体场景选择最合适的方案。]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/top-image-fa2a442bcae0f01eebf64942a1fb5b1f.gif" width="1076" height="215" class="img_ev3q"></p>
<blockquote>
<p>本文主要介绍了跟容灾相关的关键技术以及技术整合后形成的几种具体方案，每种方案都在RTO、RPO、部署成本和维护成本等方面有自己的特点和区别，可以根据具体场景选择最合适的方案。</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="基本概念">基本概念<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5" class="hash-link" aria-label="基本概念的直接链接" title="基本概念的直接链接" translate="no">​</a></h2>
<p>RTO（Recovery&nbsp;Time&nbsp;Objective）：业务停止服务后，恢复所需的最长时间。</p>
<p>RPO（Recovery&nbsp;Point&nbsp;Objective）：业务系统所能容忍的数据丢失量，以时间为指标。</p>
<p>如图，当故障发生时，RTO和RPO的具体说明如下：</p>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/1-ff9d9e936c81a9a2cc53766f93c71d24.png" width="1216" height="368" class="img_ev3q"></p>
<p>Region：区域，在本文中指一个地区或城市。</p>
<p>DC（Data&nbsp;Centre）：数据中心，在实际中通常指一个机房，在本文中与区域相对应。</p>
<p>Rack：机架，属于DC。</p>
<p>如图，Region、DC和Rack的关系如下：</p>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/2-896f6c79e286acf28d6a3c09c1684464.png" width="1354" height="644" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="关键技术概述">关键技术概述<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E5%85%B3%E9%94%AE%E6%8A%80%E6%9C%AF%E6%A6%82%E8%BF%B0" class="hash-link" aria-label="关键技术概述的直接链接" title="关键技术概述的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="数据分布策略">数据分布策略<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E6%95%B0%E6%8D%AE%E5%88%86%E5%B8%83%E7%AD%96%E7%95%A5" class="hash-link" aria-label="数据分布策略的直接链接" title="数据分布策略的直接链接" translate="no">​</a></h3>
<p>CnosDB是一种支持多副本的数据库系统，它提供了自定义副本放置策略的功能。这意味着，当你创建一个数据库时，你可以指定一个策略来决定数据应该如何在不同的节点上分布。这些策略包括DC&nbsp;Aware和Rack&nbsp;Aware。</p>
<p>DC&nbsp;Aware：这种策略意味着数据库会考虑数据中心的位置来决定数据的放置。例如，如果你有一个跨多个数据中心的集群，你可能希望数据在不同的数据中心之间有所复制，以提高数据的可用性和耐久性。
Rack&nbsp;Aware：这种策略则是考虑机架的位置来决定数据的放置。例如，如果你的集群部署在一个大型的数据中心，你可能希望数据在不同的机架之间有所复制，以防止一个机架的故障导致数据的丢失。</p>
<p>在部署集群时，你需要指定每个节点所在的位置。这样，当写入数据时，CnosDB就可以根据你指定的策略和节点的位置来决定数据应该放在哪里。这种灵活的数据放置策略可以帮助你更好地管理你的数据，提高数据的可用性和耐久性。</p>
<p>如图，根据DC和Rack分布的node：</p>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/3-22b6e2958fd9ce30faf493f4123562b7.png" width="1710" height="706" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="数据订阅">数据订阅<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E6%95%B0%E6%8D%AE%E8%AE%A2%E9%98%85" class="hash-link" aria-label="数据订阅的直接链接" title="数据订阅的直接链接" translate="no">​</a></h3>
<p>CnosDB是一种支持数据库级别的数据订阅的数据库系统。这意味着，你可以选择以数据库为单位，实时订阅一个集群（例如cluster1）中的特定数据库（例如database1）的数据，并将这些数据实时传输到另一个集群（例如cluster2）。</p>
<p>这种数据订阅功能非常强大，因为它允许你在不同的集群之间实时同步数据。这可以帮助你确保数据的一致性和可用性，无论你的数据是存储在哪个集群中。</p>
<p>更重要的是，CnosDB在订阅过程中会自动创建表。这意味着，当你订阅一个数据库的数据时，CnosDB会自动在目标集群中创建相应的表，以存储订阅的数据。这大大简化了数据同步的过程，使你可以更专注于使用数据，而不是管理数据。</p>
<p>总的来说，CnosDB的这种数据库级别的数据订阅功能为数据管理提供了极大的便利，无论你是在进行数据备份，还是在进行数据分析，都可以从中受益。</p>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/4-4207cca396587b4d506d133d1e32c9ad.png" width="1434" height="254" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="逻辑备份">逻辑备份<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E9%80%BB%E8%BE%91%E5%A4%87%E4%BB%BD" class="hash-link" aria-label="逻辑备份的直接链接" title="逻辑备份的直接链接" translate="no">​</a></h3>
<p>CnosDB是一种强大的数据库系统，它支持多种数据格式的导入和导出，包括CSV、JSON和PARQUET。这意味着，无论你的数据是什么格式，你都可以方便地将其导入到CnosDB中，或者从CnosDB中导出。</p>
<p>此外，CnosDB还支持元数据的导出，可以将元数据导出成DDL（Data&nbsp;Definition&nbsp;Language，数据定义语言）格式。这是一种用于描述数据库中存储的数据的语言，可以帮助你更好地理解和管理你的数据。</p>
<p>例如，你可以从一个集群（例如cluster1）中导出数据和元数据，然后将这些数据和元数据导入到另一个集群（例如cluster2）中。这样，你就可以实现数据的备份，确保数据的安全性和可用性。</p>
<p>总的来说，CnosDB的这些功能使你无论是在进行数据迁移，还是在进行数据备份，都可以很好的完成。</p>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/5-7fd77f8ec74de75cc13b5c3066b0d57c.png" width="1414" height="244" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="方案介绍">方案介绍<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E6%96%B9%E6%A1%88%E4%BB%8B%E7%BB%8D" class="hash-link" aria-label="方案介绍的直接链接" title="方案介绍的直接链接" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="基于单集群的多副本放置方案">基于单集群的多副本放置方案<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E5%9F%BA%E4%BA%8E%E5%8D%95%E9%9B%86%E7%BE%A4%E7%9A%84%E5%A4%9A%E5%89%AF%E6%9C%AC%E6%94%BE%E7%BD%AE%E6%96%B9%E6%A1%88" class="hash-link" aria-label="基于单集群的多副本放置方案的直接链接" title="基于单集群的多副本放置方案的直接链接" translate="no">​</a></h3>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/6-519cfaf3230e8ade064c758d2ae15f56.png" width="1460" height="692" class="img_ev3q"></p>
<p>在这个集群中，有三个数据节点。其中两个节点分布在同一个区域的不同数据中心（DC）上，另外一个节点分布在另一个区域的数据中心上。这样，就形成了一个两地三中心的容灾模式。在这种模式下，当我们存储数据时，我们可以设置副本数为3。这样，每个数据都会在三个节点中的每一个上都有一个副本。这意味着，即使某个节点发生故障，其他两个节点仍然可以正常提供服务，因为它们都有数据的副本。这样，我们就可以满足容灾的需求。</p>
<p>优点：</p>
<p>一个副本故障时，另外两个副本不受影响可以正常提供服务，因此RPO为0；</p>
<p>一个副本故障时，可以迅速重启并加入集群提供服务，因此RTO为分钟级；</p>
<p>与正常使用方式相同，不需要额外管理；</p>
<p>可以满足区域级别的容灾。</p>
<p>总的来说，这种两地三中心的容灾模式为数据管理提供了极大的便利，也体现了CnosDB在数据管理方面的强大能力和灵活性。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="基于多集群的实时订阅方案">基于多集群的实时订阅方案<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E5%9F%BA%E4%BA%8E%E5%A4%9A%E9%9B%86%E7%BE%A4%E7%9A%84%E5%AE%9E%E6%97%B6%E8%AE%A2%E9%98%85%E6%96%B9%E6%A1%88" class="hash-link" aria-label="基于多集群的实时订阅方案的直接链接" title="基于多集群的实时订阅方案的直接链接" translate="no">​</a></h3>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/7-807fb808389a4358b32f5b625ee04df2.png" width="1930" height="594" class="img_ev3q"></p>
<p>在这个方案中，我们在两个不同的区域设置了两个集群，分别是cluster1和cluster2。这两个集群通过数据订阅功能实时同步数据。这意味着，无论何时在cluster1中对数据进行更改，这些更改都会实时地反映到cluster2中。</p>
<p>优点：</p>
<p>数据是实时同步的，当主集群出现故障时，丢失数据较少，因此RPO较小；</p>
<p>当主集群出现故障时，备集群可以立即接管服务，确保业务的连续性，因此RTO可以达到分钟级；</p>
<p>可以满足区域级别的容灾。</p>
<p>缺点：</p>
<p>对网络带宽和延迟要求较高；</p>
<p>受限于目前订阅的特性，使用过程中需要做额外操作。</p>
<p>总的来说，这种方案的成功实施，需要对网络环境有一定的要求，以确保数据同步的效率和准确性。并且该方案也可以与单集群多副本方案相结合，容灾能力得到很大增强。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="基于备份与恢复的容灾解决方案">基于备份与恢复的容灾解决方案<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E5%9F%BA%E4%BA%8E%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D%E7%9A%84%E5%AE%B9%E7%81%BE%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88" class="hash-link" aria-label="基于备份与恢复的容灾解决方案的直接链接" title="基于备份与恢复的容灾解决方案的直接链接" translate="no">​</a></h3>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/8-bf57c81e303d3c3efddc8452b2e1baa7.png" width="1790" height="590" class="img_ev3q"></p>
<p>在这个方案中，我们在两个不同的区域设置了两个集群，分别是cluster1和cluster2。cluster1作为主集群提供服务，而cluster2作为备份集群。我们通过定时使用CnosDB的数据导出和导入功能，将cluster1中的数据同步到cluster2中。</p>
<p>优点：</p>
<p>对网络带宽和延迟有要求不是很高；</p>
<p>当主集群出现故障时，备集群可以立即接管服务，确保业务的连续性，因此RTO为可以达到秒级。</p>
<p>缺点：</p>
<p>取决于定时备份的时间间隔，当主集群故障时，数据可能会有部分丢失，因此RPO可能会较高。</p>
<p>总的来说，这种方案适用于对RTO有较高要求，但是对RPO要求不高的业务场景，并且该方案也可以与单集群多副本方案相结合，容灾能力得到很大增强。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="多副本和实时订阅结合方案">多副本和实时订阅结合方案<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E5%A4%9A%E5%89%AF%E6%9C%AC%E5%92%8C%E5%AE%9E%E6%97%B6%E8%AE%A2%E9%98%85%E7%BB%93%E5%90%88%E6%96%B9%E6%A1%88" class="hash-link" aria-label="多副本和实时订阅结合方案的直接链接" title="多副本和实时订阅结合方案的直接链接" translate="no">​</a></h3>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/9-1-9d3a98d81989fcda8e1c58fe2b0836c0.png" width="2440" height="1258" class="img_ev3q"></p>
<p>在这个方案中，我们有两个集群：cluster1和cluster2。每个集群都采用了3副本两地三中心的模式，这意味着每个数据都有三个副本，分布在两个地理位置的三个数据中心中。这种模式可以提高数据的可用性和容错性，因为即使一个数据中心发生故障，其他的数据中心仍然可以提供服务。集群之间的数据同步可以通过定时数据同步或实时订阅的方式来实现。</p>
<p>优点：</p>
<p>RTO（恢复时间目标）为分钟级；</p>
<p>由于数据是实时同步的，所以其RPO较小，意味着数据丢失的可能性较小；</p>
<p>满足跨区域的容灾需求。</p>
<p>缺点：</p>
<p>部署和管理相对复杂。</p>
<p>这个方案适用于有跨区域容灾需求且对RTO和RPO都有一定要求的用户。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="参与-cnosdb-社区交流群">参与 CnosDB 社区交流群<a href="https://cnosdb.com/zh/blog/cnosdb%E5%AE%B9%E7%81%BE%E6%96%B9%E6%A1%88%E6%A6%82%E8%BF%B0#%E5%8F%82%E4%B8%8E-cnosdb-%E7%A4%BE%E5%8C%BA%E4%BA%A4%E6%B5%81%E7%BE%A4" class="hash-link" aria-label="参与 CnosDB 社区交流群的直接链接" title="参与 CnosDB 社区交流群的直接链接" translate="no">​</a></h2>
<p>扫描下方二维码，加入 CC 进入 CnosDB 社区交流，CC 也会在群内分享直播链接哒</p>
<p><img decoding="async" loading="lazy" src="https://cnosdb.com/zh/assets/images/contact-e36b4c204eccedfeab5c41a35a33fd74.png" width="396" height="396" class="img_ev3q"></p>]]></content:encoded>
            <category>工程师有话说</category>
        </item>
    </channel>
</rss>