批里批里 (゜-゜)つ🍺 干杯~|

七つ一旋桜

园龄:4年2个月粉丝:6关注:3

📂笔记
🔖java
2022-06-10 23:54阅读: 73评论: 0推荐: 0

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

连接数据库

image-20220610221343151

填写配置信息

image-20220610221452245

数据库不填则可查看所有数据库

新建数据库

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 中国大陆许可协议进行许可。

posted @   七つ一旋桜  阅读(73)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起