Clickhouse para compilar, instalar y construir la replicación en tiempo real de mysql

Debido al lanzamiento frecuente de clickhouse, la versión actual es 20.7 y no admite la sincronización con mysql, por lo que se compila la última versión 20200909 en git; el número de versión es 20.9.

Informacion ambiental

系统版本:Red Hat Enterprise Linux Server release 7.7 (Maipo)
uname -a:3.10.0-1062.el7.x86_64服务器配置:32c 250g 1T(使用8c16g虚拟机编译失败,原因为内存不足导致编译进程OOM)
mysql版本:8.0.19
gcc版本:9.3.0
cmake版本:3.14.5
ninja版本:1.9.0

1. Verifique antes de la instalación

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

2. Instalar paquetes dependientes

yum install git cmake ninja-build libicu-devel clang libicu-devel readline-devel mysql-devel openssl-devel unixODBC_devel bzip2 -y

3. Adquisición del código fuente

git clone --recursive https://github.com/ClickHouse/ClickHouse

Cuatro. Instala la versión alta de gcc

  1. Descarga el paquete de instalación

ftp://gnu.mirror.iweb.com/gcc/gcc-9.3.0/gcc-9.3.0.tar.xz
  1. Abrir la cremallera

tar xvf gcc-9.3.0.tar.xz
  1. instalación

cd gcc-9.3.0
./contrib/download_prerequisites

Este paso descargará el paquete dependiente, si no puede conectarse a la red externa, puede descargarlo a través del enlace

链接:https://pan.baidu.com/s/1JHv1WAS43S89LXA6PkevTg 提取码:nb35

El nombre del paquete es el siguiente

gmp-6.1.0.tar.bz2mpfr-3.1.4.tar.bz2
mpc-1.0.3.tar.gzisl-0.18.tar.bz2

Uso: simplemente  coloque el paquete cp en el directorio gcc-9.3.0

Entonces ejecuta

./contrib/download_prerequisites ---与上一步相同无需重复执行
mkdir build
cd build../configure --prefix=/opt/gcc9 --enable-languages=c,c++   --disable-multilib
export THREADS=$(grep -c ^processor /proc/cpuinfo)
make -j $THREADS
make install

Se tarda más en compilar =. =

  1. Las operaciones posteriores causarán un error similar al siguiente después de la actualización de gcc

ninja: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ninja)

La solución es la siguiente

find / -name "libstdc++.so.6*"

Busque el directorio gcc con la versión más alta en el sistema, como el directorio de instalación anterior

/opt/gcc9/lib64/libstdc++.so.6.0.28
/opt/gcc9/lib64/libstdc++.so.6
/opt/gcc9/lib64/libstdc++.so.6.0.28-gdb.py

Haga una copia de seguridad de libstdc ++. Para que informe los errores

mv /lib64/libstdc++.so.6 /lib64/libstdc++.so.6_bak

Copie la versión superior de libstdc ++ en el directorio / lib64

cp /opt/gcc9/lib64/libstdc++.so.6 /lib64/libstdc++.so.6
ln -s /opt/gcc9/lib64/libstdc++.so.6.0.28  /lib64/libstdc++.so.6  ----(一般执行上一步就可以了)

verificación

[root@mini test]# ./ninja --version
1.9.0

Cinco. Instale la versión de cmake 3

Instale cmake 3, mantenga el software de preparación predeterminado del sistema de reemplazo

wget https://cmake.org/files/v3.14/cmake-3.14.5-Linux-x86_64.tar.gz
tar zxvf cmake-3.14.5-Linux-x86_64.tar.gz -C /opt
ln -s cmake-3.14.5-Linux-x86_64 cmake

Agregar variables de entorno

vim /etc/profile
export CMAKE_HOME=/opt/cmake
export PATH=$CMAKE_HOME/bin:$PATH
source /etc/profile

verificación

[root@mini test]# cmake --version
cmake version 3.14.5
CMake suite maintained and supported by Kitware (kitware.com/cmake).

6. Instale ninja-1.9.0

descargar

wget https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip
unzip ninja-linux.zip -d /usr/local/bin/

Agregar variables de entorno

versión de prueba:

# ninja --version
1.9.0

Manejo de errores:

[root@mini test]# ./ninja 
./ninja: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./ninja)
./ninja: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./ninja)

Ver el método de tratamiento: gcc 9.3.0 compilar e instalar

Instalación de Seven. Source Clickhouse

cd ClickHouse
mkdir build
cd build
export CC=gcc-9
export CXX=g++-9
cmake ..ninja

El proceso dura unas 3 horas.

Después de que la instalación sea exitosa, copie el comando clickhouse y el archivo de parámetros en el directorio especificado

mkdir -p /usr/local/clickhouse/etccd /tools/ClickHouse/programs/server  ---其中/tools/ClickHouse 为clickhouse git文件根目录
cp config.xml /usr/local/clickhouse/etc 
cp users.xml /usr/local/clickhouse/etc 

Copie el archivo de ejecución de clickhouse en / usr / local / clickhouse / bin

mkdir -p /usr/local/clickhouse/bin 
cp /tools/ClickHouse/build/programs/clickhouse /usr/local/clickhouse/bin

Configurar variables de entorno

vim /etc/profile添加:/usr/local/clickhouse/bin
source /etc/profiel

Inicie clickhouse-server, preste atención a establecer el directorio PATH en el archivo de configuración antes de comenzar (haga clic en el directorio de datos de la casa y asigne los derechos al directorio correspondiente)

nohup clickhouse server --config-file=/usr/local/clickhouse/etc/config.xml  > /tmp/clickhouse.log 2>&1 &

Iniciar el cliente

clickhouse client

Salida:

ClickHouse client version 20.9.1.1.
Connecting to localhost:9000 as user default.
to ClickHouse server version 20.9.1 revision 54439.
XXXXXXXX :)

En este punto, la compilación e instalación de clickhouse están completas, el siguiente es el proceso de construcción de la replicación de mysql

Prepare un conjunto de mysql que tenga una red fluida con el servidor de clickhouse. La versión de MySQL utilizada en este artículo es 8.0.19

1. Cree un usuario de copia (los permisos mínimos requeridos no se prueban)

mysql> create user clickhouse@'%' identified WITH mysql_native_password  by 'rpl_user';
mysql> grant ALL PRIVILEGES on *.* to clickhouse@'%';

2. Ajuste los parámetros de clickhouse

clickhouse :) SET allow_experimental_database_materialize_mysql=1;

Clickhouse crea replicación (actualmente se replica en la base de datos como una unidad, diferentes bases de datos pueden provenir de diferentes maestros MySQL, de modo que múltiples datos de origen MySQL se pueden sincronizar en un ClickHouse para análisis OLAP).

CREATE DATABASE sbtest ENGINE = MaterializeMySQL(
'MYSQL_IP:MYSQL_PORT', 'DATABASE_NAME', 'USER_NAME', 'PASSWORD');

CREATE DATABASE sbtest ENGINE = MaterializeMySQL(
'XXXXXXXX:3306', 'clickhouse', 'clickhous', 'rpl_user');

Si se informa un error

Received exception from server (version 20.9.1):Code: 537. DB::Exception: Received from localhost:9000. DB::Exception: Illegal MySQL variables, the MaterializeMySQL engine requires default_authentication_plugin='mysql_native_password'. 

Ajuste los parámetros en el lado de MYSQL y reinicie (parámetro read_only) default_authentication_plugin = 'mysql_native_password'

Tres. Cree una base de datos y una tabla, y escriba datos

mysql> create database clickhouse;
mysql> use clickhouse;mysql> CREATE TABLE `sbtest1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`k` int(10) unsigned NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `k_1` (`k`))
ENGINE = InnoDB AUTO_INCREMENT = 5000001 DEFAULT CHARSET = utf8mb4 MAX_ROWS = 1000000;

mysql> INSERT INTO `sbtest1` VALUES (1,49929,...;    ---sysbench数据

clickhouse> use sbtest;
clickhouse> show tables;SHOW TABLES
┌─name────┐
│ sbtest1 │
└─────────┘
1 rows in set. Elapsed: 0.002 sec.
clickhouse>select * from sbtest1;
SELECT *
FROM sbtest1
┌─id─┬─────k─┬─c───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─pad─────────────────────────────────────────────────────────┐
│ 12 │ 48776 │ 06636928111-91412549319-87017689961-79500497523-29051692073-64380774874-78643769852-73373361096-34215043106-34370178281 │ 89292458800-98111883088-45119613990-18776802947-72334127545 │
.......略
20 rows in set. Elapsed: 0.004 sec.

Ver sitios de sincronización

Mira el sitio de sincronización de ClickHouse

cat /var/lib/clickhouse/metadata/clickhouse/.metadata
Version:        2
Binlog File:    bin.000004
Executed GTID:  45b22def-f329-11ea-acf1-3497f600d5bb:1-69:1000068
Binlog Position:        10006

Hasta ahora, el esclavo se construyó con éxito.

| Sobre el autor

Zhao Zizhou | Actualmente trabaja en Sweet Orange Finance (China Telecom Yipay), ingeniero de bases de datos.

Principalmente responsable de la operación y mantenimiento de MySQL, Redis, MongoDB, TIDB y otras bases de datos de código abierto relacionadas.

¡Le gusta aprender y compartir tecnología y mejorar con todos!

El texto completo ha terminado.

Disfrute ClickHouse :)

  • Cursos boutique de Zhishutang, MySQL, optimización SQL, Python, Elastic, etc.

    El curso de MySQL se ha actualizado por completo a MySQL 8.0, y ahora es perfecto para subir al tren. Comencemos el viaje de MySQL 8.0.


    Únete a Zhishutang

    ¡Desafíe el salario anual de más de 500.000!

    Zhishutang "MySQL Practical Optimization Class" ha lanzado oficialmente Tencent Classroom, escanea el código para unirte al grupo para conocer los detalles del curso y hay descuentos para los profesores asistentes.

Supongo que te gusta

Origin blog.csdn.net/n88Lpo/article/details/108945479
Recomendado
Clasificación