클릭 하우스를 통해 mysql 실시간 복제를 컴파일, 설치 및 구축

Clickhouse의 빈번한 릴리스로 인해 현재 버전은 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

사용법 :  gcc-9.3.0 디렉토리에 cp 패키지를 넣으십시오.

그런 다음 실행

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

컴파일하는 데 더 오래 걸립니다 =. =

  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. cmake 3 버전 설치

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)

처리 방법 참조 : gcc 9.3.0 컴파일 및 설치

7. 소스 설치 클릭 하우스

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는 복제를 생성합니다 (현재는 데이터베이스를 단위로 복제하고 다른 데이터베이스는 다른 MySQL 마스터에서 가져올 수 있으므로 OLAP 분석을 위해 여러 MySQL 소스 데이터를 하나의 ClickHouse에 동기화 할 수 있습니다.)

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 측에서 매개 변수를 조정하고 다시 시작 (read_only 매개 변수) 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 과정이 MySQL 8.0으로 완전히 업그레이드되었으므로 이제 기차를 타는 것이 좋습니다. MySQL 8.0의 여정을 시작하겠습니다.


    Zhishutang 가입

    500,000 + 연봉에 도전하세요!

    Zhishutang "MySQL Practical Optimization Class"는 공식적으로 Tencent Classroom을 시작하고 코드를 스캔하여 그룹에 가입하여 코스의 세부 사항에 대해 알아보고 조교에게 할인을 제공합니다.

추천

출처blog.csdn.net/n88Lpo/article/details/108945479