clickhouse 笔记
环境搭建
docker run -d --name clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
将容器内config.xml拷贝至主机config目录
docker cp clickhouse-server:/etc/clickhouse-server/config.xml /data/clickhouse/config/config.xml
将容器内users.xml拷贝至主机config目录
docker cp clickhouse-server:/etc/clickhouse-server/users.xml /data/clickhouse/config/users.xmldefault用户配置
生成密码
# 随机生成密码
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
7I2bHFLv
a39ddb33bf9e57aaa208b0dd100c14f663125ccca7a356ab69fce7ed8ec97764
# 生成指定密码123456
echo "123456"; echo -n "123456" | sha256sum | tr -d '-'
123456
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
# 打开users.xml文件 default用户设置密码为123456
vim /data/clickhouse/config/users.xml
# 将文件中<password></password>改为以下内容
<password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
# 将default用户改为只读
# 将<profile>default</profile>改为以下内容
<profile>readonly</profile>
新增root用户
# 生成root用户密码123456
echo "123456"; echo -n "123456" | sha256sum | tr -d '-'
123456
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
# 打开users.xml文件
vim /data/clickhouse/config/users.xml
# 在</default>下一行添加以下内容
<root> <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</root>
删除临时容器
docker rm -f clickhouse-server
部署
docker run -d \
--name clickhouse-server \
--ulimit nofile=262144:262144 \
-p 8123:8123 \
-p 9000:9000 \
-p 9009:9009 \
-v /data/clickhouse/data:/var/lib/clickhouse:rw \
-v /data/clickhouse/log:/var/log/clickhouse-server:rw \
-v /data/clickhouse/config/config.xml:/etc/clickhouse-server/config.xml \
-v /data/clickhouse/config/users.xml:/etc/clickhouse-server/users.xml \
yandex/clickhouse-server:latest
连接数据库
填写配置信息
数据库不填则可查看所有数据库
新建数据库
CREATE DATABASE IF NOT EXISTS sbfzl;
新建表
MergeTree
是最常用的表引擎
create table t_message
(
id varchar(20) comment '主键',
user_id varchar(20) comment '信息的发送者的id',
message_body Nullable(text) comment '消息体'
) engine = MergeTree order by (id) comment '信息';
如果没有使用 PRIMARY KEY
显式指定的主键,ClickHouse 会使用排序键作为主键。
集成springboot
<!-- clickhouse -->
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.2.4</version>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
clickhouse只有MergeTree
表引擎有主键,其他表引擎需要手动添加主键注解
@TableName(value ="t_user")
@Data
public class TUser implements Serializable {
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
}
yaml配置
# 应用名称
spring:
application:
name: clickhouse-demo
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: ru.yandex.clickhouse.ClickHouseDriver
url: jdbc:clickhouse://localhost:8123/sbfzl
username: default
password:
mybatis-plus配置
@Configuration
@MapperScan("com.example.chdemo.chdemo.mapper") // 扫描Mapper接口可以挪到这里
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.CLICK_HOUSE)); // 设置数据库类型
return interceptor;
}
}
materialize mysql database
要先配置msyql的log_bin
服务,配置好后进行下面的操作
修改mysql配置my.cnf
gtid-mode=on
enforce-gtid-consistency=1 # 设置为主从强一致性
log-slave-updates=1 # 记录日志
然后重启mysql服务
然后设置clickhouse的materialize_mysql功能
在users.xml
中添加
<allow_experimental_database_materialized_mysql>1</allow_experimental_database_materialized_mysql>
如:
<profiles>
<default>
<allow_experimental_database_materialized_mysql>1</allow_experimental_database_materialized_mysql>
...
</default>
...
</profiles>
修改完后不能重启clickhouse
服务,不然会导致重启失败
创建迁移数据库:
CREATE DATABASE sbfzl ENGINE = MaterializeMySQL('host:port','database','username','password')
本文作者:七つ一旋桜
本文链接:https://www.cnblogs.com/poifa/p/16365035.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步