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
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…
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
A configuração do sock no arquivo de configuração do MySQL é a seguinte
Solução: modifique a configuração de meia do MySQL e reinicie o MySQL
Depois de reiniciar o MySQL, você não pode mais fazer login com localhost, use 127.0.0.1 diretamente
Depois de criar o MaterializeMySQL
4) A tabela MySQL deve ter uma chave primária, caso contrário não pode ser sincronizada com a Clickhouse
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
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…
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
Dados de resposta de visualização da Clickhouse
2. teste de atualização
dados de atualização do mysql
Dados de resposta de visualização da Clickhouse
3. excluir teste
mysql deletar dados
Dados de resposta de visualização da Clickhouse
4. alterar teste
1) Adicione campos com valores padrão
2) Adicionar campo, sem valor padrão
3) Excluir campo
5. criar teste
Tabela de criação do MySQL
Clickhouse verifica a resposta: A tabela recém-criada mytab do MySQL não foi sincronizada. Alguns artigos online podem ser sincronizados.
6. teste de queda
tabela drop mysql
resposta da tabela de visualização da clickhouse: a tabela foi excluída
7. teste truncado
MySQL truncado
Resposta da visualização Clickhouse: os dados da tabela de ch também são truncados
Lista de referência: