Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >分布式编译系统的搭建

分布式编译系统的搭建

作者头像
GreatSQL社区
发布于 2023-08-10 13:57:15
发布于 2023-08-10 13:57:15
56200
代码可运行
举报
运行总次数:0
代码可运行

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

由于MySQL 源码编译单机耗费的时间过于长,最近MySQL 变成8.0.27 以后编译时间明显更耗时了,并且办公室内有多余的空闲机器。

使用分布式编译,可以在不改变现有环境的情况下,提高编译效率。

目前比较常用的编译工具有2个 distccicecream , 本文使用distcc 进行部署。

部署distcc

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

程序分别是distccddistcc

服务端

也是我们空余的设备上

可以基于Docker部署镜像版本最好和客户端一致,编译器版本需求GCC 或者 Clang 一致

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 
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 的镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker build -f Dockerfile -t distcc .

Docker启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -t -d -net=host distccd 

也可以使用docker-compose.yml启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '3'

services:
    distcc:
      image: "chestnutsj/distcc:latest"
      hostname: distcc
      container_name: distcc
      privileged: true
      ports:
        - 3632:3632
        - 3633:3633
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose -f docker-compoe.yml  up -d 

默认情况下,将运行所有人都可以运行访问,如果有需要认证可以在环境变量 OPT 中添加,或者修改默认的端口

客户端

配置

本地环境 20.04 (),需要编译项目的机器上,安装distcc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
moyu20: apt install -y distcc

在配置中添加服务器下的 /etc/distcc/hosts ,也可以在 $HOME/.distcc/hosts , 域名可以按照服务器优先级添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hostname[/LIMIT]
192.168.1.102/32

默认的limit 数量是 4 如果需要更高的效率可以使用更高的数值用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@dev:/# distcc -j
48
默认limit为 hostname * 4

单个文件可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
distcc g++ t1.cpp

以MySQL源码为例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
编译项目
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
make -j 32 

可以明显降低编译时间

监控

编译期间可以查看distcc 使用情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
distccmon-text 1 间隔时间 1

Enjoy GreatSQL :)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GreatSQL社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技术分享|在Ubuntu下编译安装GreatSQL
本文首发于GreatSQL社区,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
老叶茶馆
2021/12/01
4760
在Linux下源码编译安装GreatSQL/MySQL
本次介绍如何利用Docker来将GreatSQL源码编译成二进制文件,以及制作二进制包、RPM包等。
老叶茶馆
2021/08/26
2.5K0
MySQL Shell 8.0.32 for GreatSQL编译安装
GreatSQL 8.0.32-24已发布,配套的MySQL Shell也需要跟着升级一波,MySQL Shell版本从8.0.25升级到8.0.32后,也引入了一些不错的新特性。
老叶茶馆
2023/09/01
3510
MySQL Shell 8.0.32 for GreatSQL编译安装
麒麟OS+龙芯环境编译GreatSQL
本次介绍如何在麒麟OS + 龙芯CPU的环境下将GreatSQL源码编译成二进制文件及RPM包等。
GreatSQL社区
2023/02/24
8540
MySQL Shell 8.0.32 for GreatSQL编译二进制包
之前已经写过一篇前传 MySQL Shell 8.0.32 for GreatSQL编译安装,最近再次编译MySQL Shell二进制包时,发现了一些新问题,因此重新整理更新本文档。
老叶茶馆
2024/01/22
2150
MySQL Shell 8.0.32 for GreatSQL编译二进制包
编译GreatSQL with RocksDB引擎
RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎,特别适用于高度压缩和大容量的数据。以下是一些关键特点:
老叶茶馆
2024/02/22
2080
编译GreatSQL with RocksDB引擎
openEuler、龙蜥Anolis、统信UOS系统下编译GreatSQL二进制包
为了能更好地支持更多操作系统及相关生态,我们决定发布openEuler、龙蜥Anolis、统信UOS三个操作系统下的GreatSQL二进制包。相应的二进制包可以访问gitee.com上的 GreatSQL项目 https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.25-17下载。
GreatSQL社区
2023/08/10
5880
openEuler、龙蜥Anolis、统信UOS系统下编译GreatSQL二进制包
如何使用AWS EC2+Docker+JMeter构建分布式负载测试基础架构
本文介绍有关如何使用AWS EC2+Docker+JMeter创建分布式负载测试基础架构。 完成所有步骤后,得到的基础结构如下:
软测小生
2020/03/05
1.9K0
如何使用AWS EC2+Docker+JMeter构建分布式负载测试基础架构
mysql-shell for GreatSQL 8.0.27编译安装及使用
由于GreatSQL 8.0.27版本中引入MGR仲裁节点(投票节点,ARBITRATOR)特性,MySQL提供的mysql-shell无法识别该特性,因此提供mysql-shell for GreatSQL版本。
GreatSQL社区
2022/03/28
5450
从零开始学习MySQL调试跟踪(1)
有时为了跟踪故障需要调试MySQL/GreatSQL源码,本文介绍如何在Linux下构建MySQL/GreatSQL源码调试环境。
GreatSQL社区
2023/08/10
5020
从零开始学习MySQL调试跟踪(1)
SQL审核工具Inception的安装
1.https://github.com/mysql-inception/inception
AsiaYe
2019/11/06
1.1K0
Hadoop HDFS分布式文件系统Docker版
  如果你要在本机做开发,配置IDE环境,想要连接到Docker中,推荐使用Docker toolBOX。docker for mac 版本没有docker0网桥。
birdskyws
2018/09/12
3.9K0
Hadoop HDFS分布式文件系统Docker版
[MySQL] MySQL的自己主动化安装部署
有过MySQL运维的人应该都清楚,线上的MySQL一般都採用源代码编译,由于这样才干够依据企业的各自须要选择要编译的功能,尽管MySQL的源代码编译挺简单的,可是试想一下,假设你有几百台server同一时候要安装MySQL,难道你还一台台去手动编译、编写配置文件吗?这显然太低效了,本文讨论MySQL的自己主动化安装部署。
全栈程序员站长
2022/07/12
5150
Docker 学习系列二之基本管理
---- 概述 之前对docker的基本的工作原理进行了简单的介绍和学习Docker工作原理 今天开始不断的学习Docker的容器、镜像和仓库管理。 Docker容器管理 Docker 常用管理操作 test@dev:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
吕海峰
2018/04/03
7660
MySQL8.0源码编译和Clion调试
MySQL 是最为流行的开源关系型数据库之一,有关它的使用、优化和运维处理相关的文章汗牛充栋。我个人也写过《MySQL探秘》和《MySQL死锁》系列文章,详细介绍了诸如 MySQL 内存结构、持久化机制、锁和事务等多方面的知识。不过上述知识大多数都来自《高性能MysQL》、《MySQL技术内幕:InnoDB存储引擎》等书籍以及网上一些优秀博主的文章。
程序员历小冰
2022/06/27
2.4K1
MySQL8.0源码编译和Clion调试
从零开始构建向量数据库:Milvus 的源码编译安装(一)
我在知乎上开了一个新的专栏[1],想持续聊聊“向量数据库”相关的内容。本篇聊聊向量数据库领域,知名的开源技术项目:Milvus。
soulteary
2023/03/05
6.1K0
从零开始构建向量数据库:Milvus 的源码编译安装(一)
Xmake v2.6.6 发布,分布式编译和缓存支持
它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
ruki
2022/06/06
5810
Gitlab-CICD实践篇(下)
该实践方案主要介绍微服务项目使用gitlab自带的GitLab Continuous Integration (CI) & Continuous Delivery (CD)功能,在gitlab提供的runner里面进行打包、测试、发布。
陈不成i
2021/06/07
8420
MYSQL8+CENTOS7.6 主从+keepalived搭建总结
yum -y install ncurses-devel openssl openssl-devel bison
PHP开发工程师
2021/05/24
7940
分布式文件系统如何做?终于有篇文章分布式文件上传讲清楚了
/usr/local/docker/fastdfs:用于存放docker-compose.yml配置文件及FastDFS数据卷
攻城狮Chova
2021/11/03
4820
分布式文件系统如何做?终于有篇文章分布式文件上传讲清楚了
相关推荐
技术分享|在Ubuntu下编译安装GreatSQL
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验