- Instalação e configuração do ClickHouse
1.1 Instalação do ClickHouse
Para instalar o ClickHouse em sistemas baseados em RHEL, siga estes passos:
- Instale as ferramentas do YUM com o comando: ```
sudo yum install -y yum-utils
- Adicione o repositório YUM do ClickHouse: ```
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/stable/clickhouse.repo
- Instale os pacotes do servidor e cliente: ```
sudo yum install -y clickhouse-server clickhouse-client
- Ative e inicie o serviço: ```
sudo systemctl enable clickhouse-server
sudo systemctl start clickhouse-server
sudo systemctl status clickhouse-server
- Conecte-se ao cliente, assumindo autenticação padrão: ```
clickhouse-client --user default
1.2 Configuração do ClickHouse
1.2.1 Definição de senha para o usuário padrão
Gere um hash SHA256 para a nova senha e atualize a configuração:
echo -n "minhaSenhaSegura" | openssl dgst -sha256
Edite o arquivo /etc/clickhouse-server/users.xml, substituindo a tag <password> por <password_sha256_hex> com o valor gerado. Exemplo:
<password_sha256_hex>e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855</password_sha256_hex>
Reinicie o serviço para aplicar as mudanças e teste a autenticação:
sudo systemctl restart clickhouse-server
clickhouse-client --user default --password minhaSenhaSegura
1.2.2 Habilitar acesso remoto
No arquivo /etc/clickhouse-server/config.xml, localize ou adicione a seguinte linha para aceitar conexões de qualquer IP:
<listen_host>0.0.0.0</listen_host>
Reinicie o serviço após a alteração:
sudo systemctl restart clickhouse-server
1.2.3 Alterar o diretório de dados
Siga estes passos para mover os dados para um novo local:
- Pare o serviço ClickHouse: ```
sudo systemctl stop clickhouse-server
- Crie o novo diretório e subpastas temporárias: ```
sudo mkdir -p /mnt/dados_ch/tmp
- Atualize os caminhos no arquivo
/etc/clickhouse-server/config.xml: ``` /mnt/dados_ch/ <tmp_path>/mnt/dados_ch/tmp/</tmp_path> - Mova os dados existentes, se necessário: ```
sudo rsync -av /var/lib/clickhouse/ /mnt/dados_ch/
- Ajuste as permissões: ```
sudo chown -R clickhouse:clickhouse /mnt/dados_ch
sudo chmod -R 750 /mnt/dados_ch
- Inicie o serviço novamente: ```
sudo systemctl start clickhouse-server
- Configuração da sincronização em tempo real com MySQL
2.1 Preparar o MySQL
Ative os logs binários e o modo GTID editando /etc/my.cnf ou /etc/mysql/mysql.conf.d/mysqld.cnf:
[mysqld]
server-id=100
log-bin=binlog_mysql
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
Reinicie o MySQL e crie um usuário para replicação com os privilégios necessários:
systemctl restart mysqld
CREATE USER 'ch_sync_user'@'%' IDENTIFIED BY 'senha_repl';
GRANT REPLICATION SLAVE, REPLICATION CLIENT, RELOAD, SELECT ON *.* TO 'ch_sync_user'@'%';
FLUSH PRIVILEGES;
2.2 Configurar o ClickHouse para sincronização
2.2.1 Ativar o motor MaterializedMySQL
Conecte-se ao ClickHouse e ative o recurso experimental:
SET allow_experimental_database_materialized_mysql = 1;
2.2.2 Sincronizar um banco de dados inteiro
Crie um banco de dados no ClickHouse que espelhe um banco MySQL. O banco MySQL deve ter chaves primárias em todas as tabelas. Exemplo:
CREATE DATABASE bd_espelho ENGINE = MaterializedMySQL('mysql_host:3306', 'nome_bd_mysql', 'ch_sync_user', 'senha_repl');
2.2.3 Sincronizar tabelas específicas
Para limitar a sincronização a tabelas selecionadas, utilize a confiugração materialized_mysql_tables_list:
CREATE DATABASE bd_parcial ENGINE = MaterializedMySQL('mysql_host:3306', 'nome_bd_mysql', 'ch_sync_user', 'senha_repl') SETTINGS materialized_mysql_tables_list = 'tabela_a,tabela_b';
2.3 Verificar a sincronização
No cliente ClickHouse, consutle o banco sincronizado para confirmar a replicação:
USE bd_espelho;
SHOW TABLES;
SELECT * FROM tabela_a LIMIT 10;
Monitore os logs do ClickHouse e do MySQL para detectar eventuais erros durante o processo.