上海人才网最新招聘信息官方网站,软件开发输出文档,公众号推广合作平台,专业做标书一、前驱知识
已经在mysql中插入了海量的数据了#xff0c;这个时候mysql 承载不了这么大的数据#xff0c;并且数据只需要查询#xff0c;修改和删除非常少#xff0c;并且不需要支持事务#xff0c;这个时候需要换一个底层存储#xff0c;这里选用的是 clickhouse 来进…一、前驱知识
已经在mysql中插入了海量的数据了这个时候mysql 承载不了这么大的数据并且数据只需要查询修改和删除非常少并且不需要支持事务这个时候需要换一个底层存储这里选用的是 clickhouse 来进行存储。 演示方便这里使用的数据量很小其实很大的话也很快。 本文迁移示例表
mysql安装在docker中,迁移的表结构
CREATE TABLE change_handler1 (client_id int NOT NULL COMMENT 网关id,equipment varchar(48) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 设备编码,point_id varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 测点id,value_last decimal(18,6) DEFAULT NULL COMMENT 上值,value_latest decimal(18,6) DEFAULT NULL COMMENT 下值,value_change decimal(18,6) DEFAULT NULL COMMENT 电量,window_end_time_last datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 最新封窗时间,window_end_time_latest datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 上个封窗时间,window_end_time_msg_time datetime DEFAULT NULL COMMENT 窗口网关发送时间,window_size bigint DEFAULT NULL COMMENT 窗口时间长度秒,create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,update_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 更新时间,electricity_value decimal(18,6) DEFAULT NULL COMMENT 电费,price_type bigint DEFAULT NULL COMMENT 峰谷平尖类型,PRIMARY KEY (client_id,equipment,point_id,window_end_time_last) USING BTREE
) ENGINEInnoDB DEFAULT CHARSETutf8mb3 ROW_FORMATDYNAMIC COMMENT电量清洗;clickhouse 安装在docker中映射后的表结构
CREATE TABLE history_db.change_handler(client_id int COMMENT 网关id,equipment String COMMENT 设备编码,point_id String COMMENT 测点id,value_last Decimal(18,6) COMMENT 上值,value_latest Decimal(18,6) COMMENT 下值,value_change Decimal(18,6) COMMENT 电量,window_end_time_last DateTime COMMENT 最新封窗时间,window_end_time_latest DateTime COMMENT 上个封窗时间,window_end_time_msg_time DateTime COMMENT 窗口网关发送时间,window_size Int32 COMMENT 窗口时间长度秒,create_time DateTime COMMENT 创建时间,update_time DateTime COMMENT 更新时间,electricity_value Decimal(18,6) COMMENT 电费,price_type Int32 COMMENT 峰谷平尖类型) ENGINE MergeTree()order by (client_id,equipment,point_id,window_end_time_last)PRIMARY KEY (client_id,equipment,point_id,window_end_time_last);二、数据迁移
我看了网上的几种方式,几种都是在clickhouse 这边来做的我觉得没必要因为表非常大的话网络开销是非常大的所以我这里采用的是从mysql 那里将数据迁移出来然后导入clickhouse 用 clickhouse-client 来导入
2.1 mysql 数据导出
首先进到mysql的机器里面执行命令
select change_handler1.* into outfile /var/lib/mysql-files/change_handler1.txt from change_handler1;ps: 注意这里的导出路径如果不是这个(/var/lib/mysql-files)路径下会报错最好写这个路径,反正只是一个临时存储路径 然后我们将导出的文件拷贝到clickhouse的机器上我这里是容器直接用 docker cp 拷贝的如果不是容器用FTP之类的拷贝过去
拷贝到 clickhouse 容器中
2.2 clickhouse 导入
先进入clickhouse容器这里使用的是 clickhouse-client 来导入的如果没有的话可以直接安装
sudo apt-get install clickhouse-client执行导入命令如果设置了密码的话用 --password 来指定
cat change_handler1.txt | clickhouse-client -u 用户 --password 密码 --queryINSERT INTO history_db.change_handler FORMAT TabSeparatedFORMAT 后面跟的是格式如果导入的是CSV格式的话 写CSV
2.3 结果
执行完成之后就可以连接clickhouse 看数据了数据已经过去了