[应用场景]

对分片副本表的列进行 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 对副本表修改表结构报元数据错误的更多相关文章

  1. 建表/修改表名/增加删除字段(MySql)

    修改表名:alter table 旧表名 rename 新表名; 删除字段:alter table 表名 drop 字段名; 增加字段:alter table 表名 add 字段名 字段类型 [def ...

  2. python 将mysql数据库中的int类型修改为NULL 报1366错误,解决办法

    gt.run_sql()是用pymysql 封装的类 distribution_sort_id type: int目的:将此字段值全部修改为NULL g=2gt.run_sql("updat ...

  3. jsp文件放在webcontent子目录下提交表单给servlet报404错误解决办法

    新版的web项目已经不需要配置web.xml了,并且eclipse neon版本里面新建web项目时候,默认不会生成web.xml文件.我们也不需要手动添加该文件,因为内部为我们提供了最新的处理方式, ...

  4. MySQ-表关系-外键-修改表结构-复制表-03

    目录 前言 不合理的表结构(案例) 带来的问题 如何解决问题? 如何确定表关系? 表关系 一对多 多对多 一对一 应用场景 判断表关系最简单的语法 三种关系常见案例 如何建立表关系? 外键 forei ...

  5. ORACLE中修改表的Schema的总结

    前阵子遇到一个案例,需要将数据库中的几个表从USER A 移动到USER B下面,在ORACLE中,这个叫做更改表的所有者或者修改表的Schema.其实遇到这种案例,有好几种解决方法.下面我们通过实验 ...

  6. 深度分析DB2修改表

    DB2修改表操作相信大家都不陌生,下文对DB2修改表方面结合了一些例子进行了详细的分析讨论,供您参考学习. DB2修改表使用ALTER TABLE语句来更改列属性,例如可空性.LOB选项.作用域.约束 ...

  7. mysql数据库新增、修改、删除字段和修改表名

    Mysql 删除,添加或修改表字段 删除 ALTER TABLE testalter_tbl DROP i; 新增 ALTER TABLE testalter_tbl ADD i INT; 指定位置新 ...

  8. MySQL使用alter修改表的结构

    SQL语句     DLL        数据定义语言         create,drop     DML     数据操纵语言         insert,delete,select,upda ...

  9. alter table 修改表结构规范

    use database_name; ) )), ADD INDEX index_time ( `timeId` ); # 添加主键: alter table table_name add prima ...

随机推荐

  1. JAVA变量的命名规范

    所有变量.方法.类名:见名知意 类成员变量:首字母小写和驼峰原则:monthSalary 局部变量:首字母小写和驼峰原则 常量:大写字母和下划线:MAX_VALUE 类名:首字母大写和驼峰原则:Man ...

  2. linux多进/线程编程(5)——进程间通信之mmap

    参考资料: 1.博客1:https://www.jianshu.com/p/755338d11865 mmap:一种内存映射文件的方法 memory map 父子进程和无亲缘关系的进程,都可以将自身用 ...

  3. JZ-029-最小的 K 个数

    标题 最小的 K 个数 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 题目链接: 最小的 K 个数 代码 import ja ...

  4. LeetCode-078-子集

    子集 题目描述:给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.你可以按 任意顺序 返回解集. 示例说明请见LeetCode官网 ...

  5. table表格的td行利用css显示...

      默认超过指定长度以...显示, 鼠标放到文本上显示全 代码如下 .fh{ max-width:220px; word-wrap:break-word; text-overflow:ellipsis ...

  6. 微信小程序表单验证(WxValidate使用)

    参考博客: https://www.cnblogs.com/zhangxiaoyong/p/10166951.html https://github.com/wux-weapp/wx-extend/b ...

  7. C#处理医学影像(三):基于漫水边界自动选取病灶范围的实现思路

    开发背景: 医生在实际使用PACS软件观察病灶时,经常会测量不规则病灶的周长和面积,使用画笔工具勾勒比较耗时且准度欠佳, 或者在标记人工智能训练样本时少则几百张,多则几千张,为极大减少耗时和极大提高工 ...

  8. oracle 11g生成ASH报告操作过程

    1.ASH (Active SessionHistory) ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件.不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成. v ...

  9. 使用VS Code编译Marlin固件

    参考:https://marlinfw.org/docs/basics/install_platformio_vscode.html 前言 在阅读本文之前,您应该已经阅读了使用 PlatformIO ...

  10. 输入URL回车之后,究竟发生了什么

    https://blog.csdn.net/androidstarjack/article/details/107031771 在浏览器输入URL回车之后发生了什么?(超详细版)   前言 这个问题已 ...