分布式编译系统的搭建

yizhihongxing
  • 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

image-20230105161905827

技术交流群:

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

image-20221030163217640

原文链接:https://www.cnblogs.com/greatsql/p/17354744.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:分布式编译系统的搭建 - Python技术站

(0)
上一篇 2023年4月27日
下一篇 2023年4月27日

相关文章

  • Navicat连接MySQL时报10060、1045错误及my.ini位置问题

    下面是详细讲解Navicat连接MySQL时报10060、1045错误及my.ini位置问题的完整攻略: 1. 问题描述 Navicat 连接 MySQL 数据库时,可能会出现以下两种错误: 错误10060:无法连接远程 MySQL 服务器。 错误1045:无法连接 MySQL 服务器。 同时还会涉及到 my.ini 配置文件位置问题。 2. 解决步骤 2.…

    MySQL 2023年5月18日
    00
  • navicat连接mysql报错10060的解决办法

    当使用Navicat连接MySQL数据库时,可能会遇到10060错误。该错误通常是由防火墙或网络问题引起的。下面是针对这个问题的一些解决方法。 问题描述 在Navicat中连接MySQL时,可能会遇到以下错误信息: 2003 – Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx'(10060) 这个错误信息通…

    MySQL 2023年5月18日
    00
  • MySQL提示:The server quit without updating PID file问题的解决办法

    MySQL 提示”The server quit without updating PID file”问题通常表示 MySQL 服务启动或关闭时出现了异常,导致 PID 文件未被正确更新。本攻略将为您提供一系列的解决方案来解决这个问题。 解决方案1:删除 PID 文件 首先,我们可以尝试删除 PID 文件并重新启动 MySQL 服务。步骤如下: 打开终端或命…

    MySQL 2023年5月18日
    00
  • MySQL8.0服务无法正常启动的解决过程

    以下是针对MySQL8.0服务无法正常启动的解决过程的完整攻略: 1. 确认错误信息 首先,出现问题时需要先确认错误信息。可以在MySQL安装目录下的data目录中找到错误日志文件,一般命名为hostname.err,其中hostname为计算机名称。 在错误日志文件中查找关键词,如error、fail等,可以快速定位问题所在。例如,某用户在启动MySQL服…

    MySQL 2023年5月18日
    00
  • MySQL分布式恢复进阶

    MySQL分布式恢复进阶 MySQL分布式恢复是指进行数据恢复时,需要同时恢复多个MySQL实例。在实际生产环境中,使用分布式数据库是十分常见的,因此对于MySQL分布式恢复的掌握是非常必要的技能。 本文将介绍MySQL分布式恢复的完整攻略,包括以下几个方面: 分布式数据备份 分布式数据恢复 针对不同故障进行的数据恢复策略和步骤 分布式数据备份 对于MySQ…

    MySQL 2023年5月18日
    00
  • MySql执行流程与生命周期详解

    MySql执行流程与生命周期详解 MySql执行流程 MySql执行流程主要包括连接、查询分析、查询执行、结果返回四个阶段。 连接 首先客户端和服务器建立连接,客户端向服务器发送连接请求,服务器通过端口接收连接请求,建立连接之后可以开始数据传输。 查询分析 连接建立完成后,客户端发送SQL语句给服务器。服务器首先进行语法分析,将SQL语句转成内部的语法树,然…

    MySQL 2023年5月19日
    00
  • docker搭建Elasticsearch、Kibana、Logstash 同步mysql数据到ES

    一、前言 在数据量大的企业级实践中,Elasticsearch显得非常常见,特别是数据表超过千万级后,无论怎么优化,还是有点力不从心!使用中,最首先的问题就是怎么把千万级数据同步到Elasticsearch中,在一些开源框架中知道了,有专门进行同步的!那就是Logstash 。在思考,同步完怎么查看呢,这时Kibana映入眼帘,可视化的界面,让使用更加的得心…

    MySQL 2023年4月12日
    00
  • Oracle和Mysql语法异同整理笔记

    @ 目录 (1) 模糊匹配 (2) 删除数据 (3) 时间函数 (4) 关键字问题 (5) 递归查询 (6) 排序问题 (7) 空值返回0 (8) 取最大值 (9) 列转换函数 (10) 类型转行函数 最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造。 …

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部