如何将指定ClickHouse表副本设为只读模式以模拟集群恢复场景
如何将ClickHouse指定表副本设置为只读模式
方法1:通过ZooKeeper手动标记只读
ClickHouse副本的状态依赖ZooKeeper维护,直接修改ZK节点即可快速设置:
- 先定位目标表在ZK中的路径,格式通常为
/clickhouse/tables/{分片ID}/{库名}.{表名}/replicas/{副本名}/flags/readonly - 使用zkCli连接到ZooKeeper服务器,执行设置命令:
把路径中的占位符替换成你实际的分片ID、库表名和副本名称即可。若要取消只读,将值改为0即可。zkCli.sh -server ZK_HOST:ZK_PORT set /clickhouse/tables/1/default.test_table/replicas/ch-replica-1/flags/readonly 1
方法2:用ClickHouse SQL语句设置(需对应权限)
如果拥有ALTER权限,直接执行SQL就能完成设置:
ALTER TABLE default.test_table ON CLUSTER my_cluster MODIFY SETTING readonly = 1 FOR REPLICA 'ch-replica-1'
替换成你的实际库表名、集群名和副本名,执行后目标副本会立即进入只读模式。
验证设置结果
执行你提供的查询语句:
SELECT database, `table` FROM system.replicas WHERE is_readonly = 1
此时就能返回被标记为只读的表副本信息。
内容的提问来源于stack exchange,提问作者Pierre Louis
相关产品推荐
相关产品推荐

