
# 配置ClickHouse表为只读表模式
#### 操作场景
在数据迁移、一键均衡和退服缩容等操作中，确保表处于只读状态是非常重要的，以防止意外的写操作。ClickHouse提供了only_allow_select_statement 表级参数，可以对MergeTree系列表引擎配置该参数，以限制ALTER、RENAME、DROP和INSERT操作，仅允许SELECT操作。
#### 约束与限制
本章节仅适用于MRS 3.2.0-LTS及之后版本。
#### 设置表只读模式
1. 安装客户端，具体请参考[安装MRS客户端](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2127.html)章节。
2. 使用**root** 用户登录安装客户端的节点，执行以下命令：
   
   进入客户端安装目录：
   ```
   cd 客户端安装目录
   ```
   配置环境变量：
   ```
   source bigdata_env
   ```
   
   
3. 如果当前集群为安全模式（开启Kerberos认证），执行以下命令认证当前用户，如果当前集群为普通模式（关闭Kerberos认证），则无需执行本步骤。 
   ```
   kinit 组件业务用户
   ```
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   该用户需要具有ClickHouse管理员权限。
   
   
4. 执行ClickHouse组件的客户端命令连接服务端。
   
   - 普通模式：
     ```
     clickhouse client --host ClickHouse的实例IP --user 用户名 --password --port 9440 --secure
     ```
     ```
     输入用户密码
     ```
     
   
   
   
   - 安全模式：
     ```
     clickhouse client --host ClickHouse的实例IP --port 9440 --secure
     ```
     
   
   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - MRS 3.2.0-LTS及之前版本：普通模式的用户为默认的default用户，或者使用ClickHouse社区开源能力添加管理用户。不能使用在FusionInsight Manager页面创建的用户。
   
   - MRS 3.3.0-LTS及之后版本：普通模式可以使用在FusionInsight Manager页面创建的用户。
   
   - ClickHouse的实例IP地址可登录集群FusionInsight Manager，然后选择"集群 \> 服务 \> ClickHouse \> 实例"，获取ClickHouseServer实例对应的业务IP地址。
    
   
   
5. 执行如下语句，设置表为只读模式： 
   ```
   ALTER TABLE {table_name} MODIFY SETTING only_allow_select_statement = true;
   ```
   
   
 
#### 解除表只读模式
1. 参考[2]到[4]登录ClickHouse客户端。
2. 执行如下语句，解除表只读模式： 
   ```
   ALTER TABLE {table_name} MODIFY SETTING only_allow_select_statement = false settings hw_internal_operation = true;
   ```
   
   
 
