Clickhouse-alter 对副本表修改表结构报元数据错误
[应用场景]
对分片副本表的列进行 alter 操作
[问题复现]

[解决办法]
检查该分片所有副本表的表结构和 zk 上存储的 column 信息保持一致,检查本地的表结构 sql 文件 /data/clickhouse/clickhouse-server/metadata/default/srmp_youpin_user_action_detail_oi_bs.sql 和 zk 上存储的 column 元信息, 注意 zk 上存储 column 的信息有两处:
/clickhouse/tables/default-11/default/srmp_youpin_user_action_detail_oi_bs/columns
/clickhouse/tables/default-11/default/srmp_youpin_user_action_detail_oi_bs/replicas/172.16.16.42/columns
具体步骤如下:
1.重命名本地元数据SQL文件,比如: mv /data/clickhouse/clickhouse-server/metadata/default/srmp_youpin_user_action_detail_oi_bs.sql /data/clickhouse/clickhouse-server/metadata/default/srmp_youpin_user_action_detail_oi_bs.sql.bak
2.重启 clichouse-server
3.通过set 命令, 修改 zk 上两处 column 信息,例如;bin/zkCli.sh -server 172.16.16.28 set /clickhouse/tables/default-11/default/srmp_youpin_user_action_detail_oi_bs/columns "cat /opt/sre_dir/11_col_2"
4.编辑第一步中 sql.bak 文件,使之与第三步中 zk 中的信息一致.并把文件名改回来, mv xxx.sql.bak xxx.sql
5.执行 atttach 语句: attach table srmp_youpin_user_action_detail_oi_bs
如果这样操作以后,还是报和 zookeeper 上的元数据不一致的错误,例如:

这个时候要恢复业务,只能新建同样结构的副本表,新建时设置与旧的副本表 zookeeper 地址不一样.接着再手动把旧表的数据 attach 到新表上.操作步骤见:
https://www.cnblogs.com/hdpdriver/p/16088755.html
接着删除旧表,将新表重命名为旧表名,完成迁移.
Clickhouse-alter 对副本表修改表结构报元数据错误的更多相关文章
- 建表/修改表名/增加删除字段(MySql)
修改表名:alter table 旧表名 rename 新表名; 删除字段:alter table 表名 drop 字段名; 增加字段:alter table 表名 add 字段名 字段类型 [def ...
- python 将mysql数据库中的int类型修改为NULL 报1366错误,解决办法
gt.run_sql()是用pymysql 封装的类 distribution_sort_id type: int目的:将此字段值全部修改为NULL g=2gt.run_sql("updat ...
- jsp文件放在webcontent子目录下提交表单给servlet报404错误解决办法
新版的web项目已经不需要配置web.xml了,并且eclipse neon版本里面新建web项目时候,默认不会生成web.xml文件.我们也不需要手动添加该文件,因为内部为我们提供了最新的处理方式, ...
- MySQ-表关系-外键-修改表结构-复制表-03
目录 前言 不合理的表结构(案例) 带来的问题 如何解决问题? 如何确定表关系? 表关系 一对多 多对多 一对一 应用场景 判断表关系最简单的语法 三种关系常见案例 如何建立表关系? 外键 forei ...
- ORACLE中修改表的Schema的总结
前阵子遇到一个案例,需要将数据库中的几个表从USER A 移动到USER B下面,在ORACLE中,这个叫做更改表的所有者或者修改表的Schema.其实遇到这种案例,有好几种解决方法.下面我们通过实验 ...
- 深度分析DB2修改表
DB2修改表操作相信大家都不陌生,下文对DB2修改表方面结合了一些例子进行了详细的分析讨论,供您参考学习. DB2修改表使用ALTER TABLE语句来更改列属性,例如可空性.LOB选项.作用域.约束 ...
- mysql数据库新增、修改、删除字段和修改表名
Mysql 删除,添加或修改表字段 删除 ALTER TABLE testalter_tbl DROP i; 新增 ALTER TABLE testalter_tbl ADD i INT; 指定位置新 ...
- MySQL使用alter修改表的结构
SQL语句 DLL 数据定义语言 create,drop DML 数据操纵语言 insert,delete,select,upda ...
- alter table 修改表结构规范
use database_name; ) )), ADD INDEX index_time ( `timeId` ); # 添加主键: alter table table_name add prima ...
随机推荐
- 用RecyclerView实现列表视图
RecyclerView能够灵活实现大数据集的展示,视图的复用管理比ListView更好,能够显示列表.网格.瀑布流等形式,且不同的ViewHolder能够实现item多元化的功能.但是使用起来会稍微 ...
- c/c++(c++和网络编程)日常积累(三)
asio::transfer_all() 有空研究一下这个字段 malloc和new的区别 https://blog.csdn.net/weixin_39411321/article/details/ ...
- 编写Python代码的注意事项
1.标识符 标识符是定义的名称,包括类名.变量名等等 标识符的大小写是敏感的,且第一个字符必须是字母表中的字母或"_" 在python3中,中文可被用作变量名 不能使用Python ...
- 详解Java中的抽象类和抽象方法
引言 如上图,二维图形类有三个子类,分别是正方形类,三角形类,圆形类: 我们都知道要求正方形的面积,直接使用面积公式边长的平方即可,同理三角形的是底乘高除以2,圆的面积是$\pi$乘以半径的平方.那么 ...
- 07 Java的方法 何谓方法
Java的方法 1.何谓方法 System.out.println(); 那么它是什么呢? System是系统的类,out是System下的一个输出对象,println()就是一个方法 类.对象.方法 ...
- 如何取消以太坊智能合约授权,防止被黑客盗取Token?
在小狐狸钱包(MetaMask)日常使用中,有一个细节可能很少人注意到,就是无论你登入什么网站,或者需要跟任何项目签订智能合约都要授权的步骤,这其中就会给黑客留下很多空子,特别是将一个Token用智能 ...
- ES77
PUT rr_bd202_chaos_20211220{ "aliases" : { "rr_bd202_chaos_pgold":{} }, "ma ...
- Hadoop之Mapreduce 程序
package com.gylhaut.hadoop.senior.mapreduce; import java.io.IOException; import java.util.StringToke ...
- 基于python 信用卡评分系统 的数据分析
基于python 信用卡评分系统 的数据分析 import pandas as pd import matplotlib.pyplot as plt #导入图像库 from sklearn.ensem ...
- Circle Linux镜像在阿里云镜像站首发上线
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 Circle Linux简介 Circle Linux 社区是一个开源.共创的 Linux 社区,将通过完全开放.包容的社区形式与全球开发者共同构建 ...