Mecanismo ClickHouse - MaterializeMYSQL

1. Suportado pelo mecanismo de banco de dados MaterializeMySQL

O uso do mecanismo de armazenamento MaterializeMySQL requer os seguintes pré-requisitos

1. Suporta sincronização de dados no nível do banco de dados mysql, mas não no nível da tabela.
2. A biblioteca MySQL é mapeada para a tabela criada automaticamente como o mecanismo ReplacingMergeTree no clickhouse
3. Ele suporta sincronização completa e incremental. Quando o mecanismo de banco de dados é criado pela primeira vez, uma cópia completa é executada e, em seguida, a sincronização incremental de dados é executado monitorando as alterações do binlog
4. Versões suportadas do MySQL: 5.6 5.7 8.0
5. Operações suportadas: inserir, atualizar, excluir, alterar, criar, descartar, truncar e a maioria das outras operações DDL

2. Pré-requisitos para usar o mecanismo MaterializeMySQL

1. Parte MySQL

1) Ative o binlog e configure-o para o formato de linha:

Adicione ao arquivo de configuração do MySQL /etc/my.cnf

log-bin=mysqlbin.log
binlog_format=ROW

2) Ative o modo GTID

Adicione ao arquivo de configuração do MySQL /etc/my.cnf

gtid_mode=on
apply_gtid_consistency=1
insira a descrição da imagem aqui

Se o modo GTID não estiver ativado, um erro será relatado

ch query cria uma tabela para o mecanismo MaterializeMySQL

Código: 1002. DB::Exception: Recebido de localhost:9000. DB::Exception: O thread do remetente de replicação não pode iniciar no modo AUTO_POSITION: este servidor tem GTID_MODE = OFF_PERMISSIVE em vez de ON…
insira a descrição da imagem aqui

3) conexão de host local

Se você apenas testar em um servidor sozinho e usar localhost para criar o MaterializeMySQL, vá para /tmp/mysql.sock por padrão em vez de sock no arquivo de configuração do MySQL
insira a descrição da imagem aqui

A configuração do sock no arquivo de configuração do MySQL é a seguinte
insira a descrição da imagem aqui

Solução: modifique a configuração de meia do MySQL e reinicie o MySQL
insira a descrição da imagem aqui

Depois de reiniciar o MySQL, você não pode mais fazer login com localhost, use 127.0.0.1 diretamente
insira a descrição da imagem aqui

insira a descrição da imagem aqui

Depois de criar o MaterializeMySQL
insira a descrição da imagem aqui

4) A tabela MySQL deve ter uma chave primária, caso contrário não pode ser sincronizada com a Clickhouse

insira a descrição da imagem aqui

2. Parte da Clickhouse

arquivo de configuração users.xml adicionado

<allow_experimental_database_materialize_mysql>1</allow_experimental_database_materialize_mysql>

e reinicie a casa de cliques
insira a descrição da imagem aqui

Caso contrário, reporte um erro

Código: 336. DB::Exception: Recebido de localhost:9000. DB::Exception: MaterializeMySQL é um mecanismo de banco de dados experimental. Ative allow_experimental_database_materialize_mysql para usá-lo…
insira a descrição da imagem aqui

3. Clickhouse cria MaterializeMySQL

1. O MySQL cria um banco de dados e uma tabela de teste e insere dados (a tabela deve ter uma chave primária)

mysql> use mych;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql>
mysql>
mysql> create table chtomysql(id int auto_increment primary key,name varchar(30));
Query OK, 0 rows affected (0.02 sec)

mysql>
mysql>
mysql> insert into chtomysql values (1,'xxa'),(2,'acscas');
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql>
mysql>
mysql> select * from chtomysql;
+----+--------+
| id | name |
+----+--------+
| 1 | xxa |
| 2 | acscas |
+----+--------+
2 rows in set (0.00 sec)

mysql>

2. Clickhouse cria o banco de dados do mecanismo MaterializeMySQL

ch01 :) create database mych ENGINE = MaterializeMySQL('192.168.88.128:3306', 'mych', 'root', 'VoracletestA@1');

CREATE DATABASE mych
ENGINE = MaterializeMySQL('192.168.88.128:3306', 'mych', 'root', 'VoracletestA@1')

Ok.

0 rows in set. Elapsed: 0.014 sec.

ch01 :) use mych;

USE mych

Ok.

0 rows in set. Elapsed: 0.001 sec.

ch01 :) show tables;

SHOW TABLES

┌─name──────┐
│ chtomysql │
└───────────┘

1 rows in set. Elapsed: 0.005 sec.

ch01 :) select * from chtomysql;

SELECT *
FROM chtomysql

┌─id─┬─name───┐
│ 1 │ xxa │
│ 2 │ acscas │
└────┴────────┘

2 rows in set. Elapsed: 0.009 sec.

ch01 :)

4. Testes relacionados a Clickhouse

Operações suportadas: inserir, atualizar, excluir, alterar, criar, descartar, truncar e a maioria das outras operações DDL

1. inserir teste

Dados de inserção do MySQL
insira a descrição da imagem aqui

Dados de resposta de visualização da Clickhouse
insira a descrição da imagem aqui

2. teste de atualização

dados de atualização do mysql
insira a descrição da imagem aqui

Dados de resposta de visualização da Clickhouse
insira a descrição da imagem aqui

3. excluir teste

mysql deletar dados

insira a descrição da imagem aqui

Dados de resposta de visualização da Clickhouse
insira a descrição da imagem aqui

4. alterar teste

1) Adicione campos com valores padrão
insira a descrição da imagem aqui

insira a descrição da imagem aqui

2) Adicionar campo, sem valor padrão

insira a descrição da imagem aqui

insira a descrição da imagem aqui

3) Excluir campo

insira a descrição da imagem aqui

insira a descrição da imagem aqui

5. criar teste

Tabela de criação do MySQL

insira a descrição da imagem aqui

Clickhouse verifica a resposta: A tabela recém-criada mytab do MySQL não foi sincronizada. Alguns artigos online podem ser sincronizados.
insira a descrição da imagem aqui

6. teste de queda

tabela drop mysql
insira a descrição da imagem aqui

resposta da tabela de visualização da clickhouse: a tabela foi excluída
insira a descrição da imagem aqui

7. teste truncado

MySQL truncado
insira a descrição da imagem aqui

Resposta da visualização Clickhouse: os dados da tabela de ch também são truncados

insira a descrição da imagem aqui


Lista de referência:

Acho que você gosta

Origin blog.csdn.net/liuwei0376/article/details/125905307
Recomendado
Clasificación