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
Descarga el paquete de instalación
ftp://gnu.mirror.iweb.com/gcc/gcc-9.3.0/gcc-9.3.0.tar.xz
Abrir la cremallera
tar xvf gcc-9.3.0.tar.xz
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 =. =
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.