乐趣区

关于数据库:分布式编译系统的搭建

  • GreatSQL 社区原创内容未经受权不得随便应用,转载请分割小编并注明起源。
  • GreatSQL 是 MySQL 的国产分支版本,应用上与 MySQL 统一。
  • 作者:dan
  • 文章起源:GreatSQL 社区原创

因为 MySQL 源码编译单机消耗的工夫过于长,最近 MySQL 变成 8.0.27 当前编译工夫显著更耗时了,并且办公室内有多余的闲暇机器。

应用分布式编译,能够在不扭转现有环境的状况下,进步编译效率。

目前比拟罕用的编译工具有 2 个 distccicecream , 本文应用distcc 进行部署。

部署 distcc

分为两个局部一个是服务端,一个是客户端

程序别离是distccddistcc

服务端

也是咱们空余的设施上

能够基于 Docker 部署镜像版本最好和客户端统一,编译器版本需要GCC 或者 Clang 统一

moyu22:/opt/distcc$ cat Dockerfile 
FROM ubuntu:20.04

RUN apt update && \
apt install  -y net-tools distcc gcc g++ clang-12 && \
apt clean && \
echo "#!/bin/bash \n distccd --daemon --no-detach --no-detach --user nobody --allow 0.0.0.0/0 --log-stderr --stats \${OPT}" > ./entrypoint.sh && \
chmod +x ./entrypoint.sh

# Run the generated shell script.
ENTRYPOINT ["./entrypoint.sh"]

打包一个distccd 的镜像

docker build -f Dockerfile -t distcc .

Docker启动

docker run -t -d -net=host distccd 

也能够应用 docker-compose.yml 启动

version: '3'

services:
    distcc:
      image: "chestnutsj/distcc:latest"
      hostname: distcc
      container_name: distcc
      privileged: true
      ports:
        - 3632:3632
        - 3633:3633
docker-compose -f docker-compoe.yml  up -d 

默认状况下,将运行所有人都能够运行拜访,如果有须要认证能够在环境变量 OPT 中增加,或者批改默认的端口

客户端

配置

本地环境 20.04 (),须要编译我的项目的机器上,装置distcc

moyu20: apt install -y distcc

在配置中增加服务器下的 /etc/distcc/hosts,也能够在 $HOME/.distcc/hosts , 域名能够依照服务器优先级增加

hostname[/LIMIT]
192.168.1.102/32

默认的 limit 数量是 4 如果须要更高的效率能够应用更高的数值用

root@dev:/# distcc -j
48
默认 limit 为 hostname * 4

单个文件能够应用

distcc g++ t1.cpp

以 MySQL 源码为例

cmake mysql_source \
-DBUILD_TESTING=OFF -DUSE_GTAGS=OFF -DUSE_CTAGS=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DFEATURE_SET=community \
-DWITH_INNODB_MEMCACHED=ON -DWITH_ZLIB=bundled -DWITH_LIBEVENT=bundled -DWITH_ZSTD=bundled \
-DENABLE_DOWNLOADS=ON \
-DDOWNLOAD_BOOST=1 \
..

增加指定的编译

 -DCMAKE_C_COMPILER_LAUNCHER=distcc
 -DCMAKE_CXX_COMPILER_LAUNCHER=distcc

编译我的项目

make -j 32 

能够明显降低编译工夫

监控

编译期间能够查看distcc 应用状况

distccmon-text 1 间隔时间 1 秒

Enjoy GreatSQL :)

## 对于 GreatSQL

GreatSQL 是由万里数据库保护的 MySQL 分支,专一于晋升 MGR 可靠性及性能,反对 InnoDB 并行查问个性,是实用于金融级利用的 MySQL 分支版本。

相干链接:GreatSQL 社区 Gitee GitHub Bilibili

GreatSQL 社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

技术交换群:

微信:扫码增加 GreatSQL 社区助手 微信好友,发送验证信息 加群

退出移动版