Clickhouseを使用して、mysqlリアルタイムレプリケーションをコンパイル、インストール、およびビルドします

クリックハウスが頻繁にリリースされるため、現在のバージョンは20.7であり、mysqlとの同期をサポートしていないため、gitの最新バージョン20200909がコンパイルされます(バージョン番号は20.9)。

環境情報

系统版本: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.インストール前に確認してください

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

2.依存パッケージをインストールします

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

3.ソースコードの取得

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

4.高バージョンのgccをインストールします

  1. インストールパッケージをダウンロードする

ftp://gnu.mirror.iweb.com/gcc/gcc-9.3.0/gcc-9.3.0.tar.xz
  1. 解凍する

tar xvf gcc-9.3.0.tar.xz
  1. インストール

cd gcc-9.3.0
./contrib/download_prerequisites

この手順では、依存関係パッケージをダウンロードします。外部ネットワークに接続できない場合は、リンクからダウンロードできます。

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

パッケージ名は以下の通りです

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

使用法:パッケージcpをgcc-9.3.0ディレクトリに配置するだけです 

次に実行します

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

compile =に時間がかかります。=

  1. その後の操作では、gccのアップグレード後に次のようなエラーが発生します

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

解決策は次のとおりです

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

以前のインストールディレクトリなど、システム内で最も高いバージョンのgccディレクトリを見つけます

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

エラーを報告したlibstdc ++。soをバックアップします

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

libstdc ++の上位バージョンを/ 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  ----(一般执行上一步就可以了)

検証

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

5. cmake3バージョンをインストールします

cmake 3をインストールし、交換システムのデフォルトの準備ソフトウェアを保持します

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

環境変数を追加する

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

検証

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

6.ninja-1.9.0をインストールします

ダウンロード

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

環境変数を追加する

テストバージョン:

# ninja --version
1.9.0

エラー処理:

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

処理方法を参照してください:gcc9.3.0コンパイルしてインストール

セブン。ソースインストールクリックハウス

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

このプロセスには約3時間かかります

インストールが成功したら、clickhouseコマンドとパラメータファイルを指定されたディレクトリにコピーします

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 

クリックハウス実行ファイルを/ usr / local / clickhouse / binにコピーします

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

環境変数を構成する

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

clickhouse-serverを起動し、起動する前に構成ファイルにPATHディレクトリを設定するように注意してください(クリックハウスデータディレクトリと対応するディレクトリへの権限の割り当て)

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

クライアントを起動します

clickhouse client

出力:

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

この時点で、クリックハウスのコンパイルとインストールが完了しました。以下は、mysqlレプリケーションを構築するプロセスです。

クリックハウスサーバーとのスムーズなネットワークを持つmysqlのセットを準備します。この記事で使用されているMySQLバージョンは8.0.19です。

1.コピーユーザーを作成します(必要な最小限の権限はテストされていません)

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

2.クリックハウスパラメータを調整します

clickhouse :) SET allow_experimental_database_materialize_mysql=1;

Clickhouseはレプリケーションを作成します(現在、データベース内で1つの単位としてレプリケートされ、異なるデータベースは異なるMySQLマスターから取得できるため、複数のMySQLソースデータを1つのClickHouseに同期して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');

エラーが報告された場合

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

MYSQL側のパラメーターを調整し、再起動します(読み取り専用パラメーター)default_authentication_plugin = 'mysql_native_password'

3.データベースとテーブルを作成し、データを書き込みます

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.

同期サイトを表示する

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

これまでのところ、スレーブは正常に構築されています。

|作者について

Zhao Zizhou |現在、データベースエンジニアのSweet Orange Finance(China Telecom Yipay)で働いています。

主に、MySQL、Redis、MongoDB、TIDB、およびその他の関連するオープンソースデータベースの運用と保守を担当します。

テクノロジーを学び、共有し、みんなと一緒に向上するのが好きです!

全文は終わりました。

ClickHouseをお楽しみください:)

  • Zhishutangブティックコース、MySQL、SQL最適化、Python、Elasticなど。

    MySQLコースは完全にMySQL8.0にアップグレードされたので、電車に乗るのにちょうどいいです。MySQL8.0の旅を始めましょう。


    Zhishutangに参加する

    500,000 +年俸に挑戦!

    Zhishutangの「MySQLPracticalOptimization Class」は、Tencent Classroomを正式に立ち上げ、コードをスキャンしてグループに参加し、コースの詳細を確認します。また、アシスタントの指導には割引があります。

おすすめ

転載: blog.csdn.net/n88Lpo/article/details/108945479