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
接着删除旧表,将新表重命名为旧表名,完成迁移.
最新文章
- 客户端连接RMS服务,报:服务暂时不可用,请确保已连接到此服务器…….
- jQuery函数attr()和prop()的区别
- @MyBatis中的if...else...
- SVM实用操作: svmtrain and svmclassify
- fork炸弹
- Oracle Group by+rollup+cube 的应用
- Hibernate 抓取策略fetch-2 (批量抓取batch-size以及hibernate.jdbc.fetch_size、hibernate.jdbc.batch_size)
- myeclipse使用SVN团队开发
- git config
- Tornado-Form表单验证
- 深入理解redis数据类型
- Perl使用模块和@INC
- hibernate 解决诡异的mysql存入中文乱码
- Linux文件压缩与打包笔记
- python中序列化模块json和pickle
- 【395】yield 和 yield from
- sqoop 使用笔记
- 20171018 在小程序页面去获取用户的OpenID
- how-to-view-source-of-chrome-extension
- Dubbo配置优化