写点什么

分布式编译系统的搭建

作者:GreatSQL
  • 2023-05-04
    福建
  • 本文字数:1156 字

    阅读完需:约 4 分钟

  • 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:3633docker-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 -j48默认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 秒
复制代码


发布于: 刚刚阅读数: 3
用户头像

GreatSQL

关注

GreatSQL社区 2023-01-31 加入

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。 社区:https://greatsql.cn/ Gitee: https://gitee.com/GreatSQL/GreatSQL

评论

发布
暂无评论
分布式编译系统的搭建_MySQL_GreatSQL_InfoQ写作社区