📜  更改 Cassandra 中的复制因子

📅  最后修改于: 2021-09-10 02:06:29             🧑  作者: Mango

在本文中,我们将讨论如何在简单和网络拓扑复制策略中更改复制因子。为了更好地理解,请参阅 Cassandra 文章中的复制策略。

改变键空间:
要更改复制因子,您可以执行 Altering a keyspace 语句,您可以在其中更改 Simple Strategy 和 NetworkTopology Strategy 的复制因子。

例如:
更改 SimpleStrategy 的复制因子:
如果要更改密钥空间的复制因子,可以通过执行 ALTER KEYSPACE 命令来完成,该命令具有以下语法:

Syntax:
 
ALTER KEYSPACE "KeySpace Name"
WITH replication = {'class': 'Strategy name', 
                    'replication_factor' : 'No.Of replicas'}; 

首先,您可以创建任何密钥空间,然后您可以更改复制因子,或者如果您有现有的密钥空间,那么您可以以相同的方式进行更改。

示例:创建 WFH 密钥空间。

CREATE KEYSPACE WFH WITH replication =
           {
            'class': 'SimpleStrategy',
           'replication_factor': '2'
               }
            AND durable_writes = true;

现在,您可以在这里更改相同的复制因子。

cassandra@cqlsh> ALTER KEYSPACE WFH
   ...            WITH replication =
   ...            {
   ...             'class': 'SimpleStrategy',
   ...            'replication_factor': '3'
   ...                }
   ...             AND durable_writes = true;

现在,为了验证结果,您可以执行以下 CQL 查询。

cassandra@cqlsh> describe WFH;

输出:

CREATE KEYSPACE wfh 
WITH 
replication = 
{
'class': 'SimpleStrategy', 
'replication_factor': '3'
}  
AND durable_writes = true;

在 Cassandra 中,您可以在创建密钥空间时或稍后通过修改密钥空间在密钥空间级别设置复制策略。

更改 NetworkTopologyStrategy 的复制因子:
在这种情况下,您可以考虑要更改 NetworkTopologyStrategy 的复制因子的现有密钥空间。

示例:现有键空间:app_data
您可以通过执行以下 CQL 查询来查看 app_data 键空间的描述。

cassandra@cqlsh> describe app_data;

输出:

CREATE KEYSPACE app_data 
WITH replication = 
{'class': 'NetworkTopologyStrategy', 
'datacenter1': '3', 
'datacenter2': '2'}  
AND durable_writes = true;

现在,如果我们想将 datacenter2 的复制因子从 2 更改为 3,那么您可以执行下面给出的以下 CQL 查询。

cassandra@cqlsh> ALTER KEYSPACE app_data
   ...        WITH replication =
   ...        {
   ...         'class': 'NetworkTopologyStrategy',
   ...         'datacenter1': '3',
   ...         'datacenter2': '3'
   ...        }
   ...          AND durable_writes = true;

现在,为了验证结果,您可以执行以下 CQL 查询。

cassandra@cqlsh> describe app_data;

输出:

CREATE KEYSPACE app_data 
WITH replication = 
{
'class': 'NetworkTopologyStrategy', 
'datacenter1': '3', 
'datacenter2': '3'
}  
AND durable_writes = true;
    笔记:
  • 在 Cassandra 中,您不能更改键空间的名称。
  • 在更改复制因子或任何可以执行修复命令的修改后,这始终是一个好习惯。
  • 您可以执行以下 CQL 查询以进行完全修复。
    nodetool repair -full