Clickhouse pour compiler et installer et construire la réplication en temps réel mysql

En raison de la publication fréquente de clickhouse, la version actuelle est 20.7 et ne prend pas en charge la synchronisation avec mysql, donc la dernière version 20200909 sur git est compilée - le numéro de version est 20.9.

Informations environnementales

系统版本: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. Vérifiez avant l'installation

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

2. Installez les packages dépendants

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

3. Acquisition du code source

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

4. Installez la version haute de gcc

  1. Téléchargez le package d'installation

ftp://gnu.mirror.iweb.com/gcc/gcc-9.3.0/gcc-9.3.0.tar.xz
  1. Décompressez

tar xvf gcc-9.3.0.tar.xz
  1. installation

cd gcc-9.3.0
./contrib/download_prerequisites

Cette étape téléchargera le package dépendant, si vous ne pouvez pas vous connecter au réseau externe, vous pouvez le télécharger via le lien

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

Le nom du package est le suivant

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

Utilisation: il suffit de  mettre le paquet cp dans le répertoire gcc-9.3.0

Puis exécutez

./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

La compilation de =. =

  1. Les opérations suivantes provoqueront une erreur similaire à la suivante après la mise à niveau de gcc

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

La solution est la suivante

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

Recherchez le répertoire gcc avec la version la plus élevée du système, comme le répertoire d'installation précédent

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

Sauvegardez libstdc ++ afin que les erreurs signalées

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

Copiez la version supérieure de libstdc ++ dans le répertoire / 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  ----(一般执行上一步就可以了)

vérification

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

5. Installez la version cmake 3

Installez cmake 3, conservez le logiciel de préparation par défaut du système de remplacement

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

Ajouter des variables d'environnement

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

vérification

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

6. Installez ninja-1.9.0

Télécharger

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

Ajouter des variables d'environnement

version de test:

# ninja --version
1.9.0

La gestion des erreurs:

[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)

Voir la méthode de traitement: gcc 9.3.0 compiler et installer

7. Installation de la source Clickhouse

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

Le processus prend environ 3 heures

Une fois l'installation réussie, copiez la commande clickhouse et le fichier de paramètres dans le répertoire spécifié

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 

Copiez le fichier d'exécution clickhouse dans / usr / local / clickhouse / bin

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

Configurer les variables d'environnement

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

Démarrez clickhouse-server, faites attention à définir le répertoire PATH dans le fichier de configuration avant de démarrer (répertoire de données clickhouse et attribuez les droits au répertoire correspondant)

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

Démarrez le client

clickhouse client

Production:

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

À ce stade, la compilation et l'installation de clickhouse sont terminées, voici le processus de création de la réplication mysql

Préparez un ensemble de mysql disposant d'un réseau fluide avec le serveur Clickhouse. La version MySQL utilisée dans cet article est la 8.0.19

1. Créez un utilisateur de copie (les autorisations minimales requises ne sont pas testées)

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

2. Ajustez les paramètres de Clickhouse

clickhouse :) SET allow_experimental_database_materialize_mysql=1;

Clickhouse crée une réplication (actuellement réplique dans la base de données en tant qu'unité, différentes bases de données peuvent provenir de différents maîtres MySQL, de sorte que plusieurs données sources MySQL peuvent être synchronisées avec un ClickHouse pour l'analyse 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 une erreur est signalée

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'. 

Ajustez les paramètres côté MYSQL et redémarrez (paramètre read_only) default_authentication_plugin = 'mysql_native_password'

3. Créer une base de données et une table, et écrire des données

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.

Afficher les sites de synchronisation

Regardez le site de synchronisation 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

Jusqu'à présent, l'esclave est construit avec succès.

| À propos de l'auteur

Zhao Zizhou | Travaille actuellement chez Sweet Orange Finance (China Telecom Yipay), ingénieur en bases de données.

Principalement responsable de l'exploitation et de la maintenance de MySQL, Redis, MongoDB, TIDB et d'autres bases de données open source connexes.

Aime apprendre et partager la technologie, et s'améliorer avec tout le monde!

Le texte intégral est terminé.

Profitez de ClickHouse :)

  • Cours boutique Zhishutang, MySQL, optimisation SQL, Python, Elastic, etc.

    Le cours MySQL a été entièrement mis à jour vers MySQL 8.0, et maintenant il est juste de prendre le train. Commençons par MySQL 8.0.


    Rejoignez Zhishutang

    Challenge 500000 + salaire annuel!

    Zhishutang "MySQL Practical Optimization Class" a officiellement lancé Tencent Classroom, scanne le code pour rejoindre le groupe pour en savoir plus sur les détails du cours, et il existe des réductions pour les assistants d'enseignement.

Je suppose que tu aimes

Origine blog.csdn.net/n88Lpo/article/details/108945479
conseillé
Classement