分布式编译系统的搭建

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

相关文章

  • hadoop中hive配置mysql

    1.首先下载hive 下载地址   选择带有 bin 选项的  ,不然以后还要自己编译 解压安装 移动到/usr/local/hive  下 进入hive目录,进入conf cp hive-env.sh.template hive-env.sh cp hive-default.xml.template hive-site.xml cp hive-log4j2…

    MySQL 2023年4月13日
    00
  • mysql创建函数出现1418错误的解决办法

    确定错误原因 首先需要明确函数创建出现1418错误的原因,它通常是由于使用了不兼容的编码方式造成的。在MySQL中,某些字符集可以包含的字符数量是有限制的。例如在latin1编码下,某些字符必须由多个字节组成,而在utf8编码下则可以使用单一的字节来表示。因此,当你在创建函数时指定的字符集和MySQL服务器的全局字符集不匹配时,就会出现1418错误。 修改函…

    MySQL 2023年5月18日
    00
  • 【数据库】7.0 MySQL入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

    1.0 help == ? 帮助指令,查询某个指令的解释、用法、说明等。详情参考博文: 【数据库】6.0 MySQL入门学习(六)——MySQL启动与停止、官方手册、文档查询  https://www.cnblogs.com/xiaofu007/p/10301005.html  2.0 在cmd命令行中,输入“”ysql –help”,可以查看由mysql…

    MySQL 2023年4月12日
    00
  • 大幅优化MySQL查询性能的奇技淫巧

    首先介绍几条优化MySQL查询性能的奇技淫巧: 1. 创建合适的索引 索引能够提高查询速度,但是不是所有的列都适合建立索引。一般建议给经常作为查询条件的列建立索引,例如主键、外键、频繁用于查询的字段等。过多的索引可能会导致写入降速,所以需要选择适当的列建立索引。 2. 优化查询语句 查询语句的优化也是提高查询性能的重要手段。例如使用JOIN语句的时候一定要注…

    MySQL 2023年5月19日
    00
  • Mysql或者SQL Server数据库的运行机制和体系架构

    一、MySQL主要分为以下几个组件: 连接池组件 管理服务和工具组件 SQL接口组件 分析器组件 优化器组件 缓冲组件 插件式存储引擎 物理文件 二、MySql的组成:Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。 三、MySql体系结构: 1 Connectors指的是不同语言中与SQL的交互   2 Management Serveic…

    MySQL 2023年4月16日
    00
  • MySQL自带慢日志排查慢查询SQL

    以下是MySQL自带慢日志排查慢查询SQL的完整攻略: 什么是MySQL自带慢日志 MySQL自带了一个慢日志(slow query log)功能,可以记录执行时间超过指定阈值的SQL语句,这样可以帮助我们排查性能问题、发现慢查询、优化SQL语句等。 如何开启MySQL慢日志功能 修改my.cnf配置文件,在[mysqld]下添加如下两行代码: slow_q…

    MySQL 2023年5月19日
    00
  • MySQL二进制日志(Binary Log)详解

    MySQL二进制日志(Binary Log)是MySQL数据库记录的一种日志,用于记录对数据库进行修改的所有操作,如数据的更新、插入、删除等,以及对数据库的结构操作,如表的创建、删除等。该日志以二进制的形式存储,是一种非常高效的记录方式。 二进制日志的作用 数据恢复:MySQL数据库在运行过程中可能会遇到一些故障,例如数据库崩溃、停电等,此时可能会丢失部分数…

    MySQL 2023年3月10日
    00
  • MySQL怎样将子查询修改为表连接

    将子查询修改为表连接的好处是可以提高查询效率和可读性。子查询需要执行完整的子语句,然后将结果作为内存中的表进行连接操作;而表连接只需要执行一次查询,将两个表按照条件关联起来,比较快速、高效。 下面提供一个MySQL子查询修改为表连接的示例: 原始查询语句: SELECT * FROM users WHERE user_id IN (SELECT user_i…

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