暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

上课一不小心讲了年入百万起的项目,编译发布MySQL10

MySQLBeginner 2021-07-07
306

      在乙方工作的学生,总会遇到特别稀奇古怪的问题。由于从事数据库培训及咨询服务,有时也给学生担任起二级技术支持的作用(response slow), 前几天一个学生又被甲方爸爸吊打,留堂不让回家,让出一个MySQL升级的安全patch~~~ 甲方爸爸数据库专家意见是MySQL不能升级,但可以通过打Patch来解决安全Bug。

        和学生交流后才了解到真正的原因:

       公司做安全评估邀请了某个安全厂家扫描了内网,不准开防火墙那种扫描,然后得到的结论是他们现在使用的MySQL版本有安全Bug,需要紧急处理,甲方公司计划通过打patch解决。

      看到这个我默默的低下了头,想起了长达将近7年某动项目中,每年安全评审被安全厂家鞭打的过程。 同情升上心头,决定给学生两个方案:

      1.  转嫁风险方案,为数据库买一个保险:购买官方服务,按实际数量购买每套都需要有保险,越贵后面越有说服力 :Money is Power。  这个方案适合用于自己在公司里还没有太多话语权,需要更强大组织支持。例如打patch, 就提交给官方,官方给出合理的建议: MySQL 只能升级,没有Patch服务,那甲方专家也会如同小鸡吃米的认可了。如果购买的服务费用不超过1000万,估计也不能说服专家,所以按贵的买就行。

      2. 给报出来方案1后,如果甲方觉得实在是太贵了,且你又在乙方,可以给甲方提一个定制MySQL版本:MySQL 10, 每年含两个Patch的升级,号称100%兼容MySQL,版本费用是官方的5折即可。应该也能解决问题了。

      同学一听感觉第二个方案更靠谱一点。花更少的钱,还能给甲方爸爸解决问题,又能输出一个定制版本,这个项目如果谈到500万+,说不定另外项目也能谈到上百万,忽然一下公司好象多了一个创收项目。搞的学生非常兴奋的一定要详细请教一下。好吧,那我也就无私的教一下这块的技术。具体领悟多少,就要看他的造化了。


    我大概想了一下,这个事情的大概过程是:

  1. build出来一个新版本MySQL的版本号 10.0.0, 给客户POC

  2. 更改部分提示符及日志输出方面的友好提示

  3. Plus服务:把社区的优秀特性合并过来,thread pool, 审计,防火墙等

  4. 增加Proxy,数据库管控平台,提供更多增值服务

...

     最终打造一个MySQL产品+服务的公司


    学生有点着急的说,其实提供一个10.0.0版本和MySQL完全兼容的MySQL,我们就可以了~~~,最简单的方法,最快的,可以先POC的就行。算了, 需求明确就是干就行了。


编译参考:

MySQL :: MySQL 8.0 Reference Manual :: 2.9.2 Source Installation Prerequisites

我这里使用的:

mysql-boost-8.0.25.tar.gz ,

cmake3 version 3.17.3

devtoolset-10  gcc version 10.2.1 20200804 (Red Hat 10.2.1-2) (GCC)


tar zxvf mysql-boost-8.0.25.tar.gz 

cd mysql-8.0.25

#cat MYSQL_VERSION

MYSQL_VERSION_MAJOR=8

MYSQL_VERSION_MINOR=0

MYSQL_VERSION_PATCH=25

MYSQL_VERSION_EXTRA=


把这个文件修改为:

#cat MYSQL_VERSION

MYSQL_VERSION_MAJOR=10

MYSQL_VERSION_MINOR=0

MYSQL_VERSION_PATCH=0

MYSQL_VERSION_EXTRA=1


mkdir build

cd build 

cmake3 ../  -D CMAKE_INSTALL_PREFIX=/usr/local/mysql10 -D WITH_BOOST=../boost/

make install 


可用的二制版本发布到/usr/local/mysql10下面,然后按二进制MySQL安装的方式部署就可以了。

数据库初始化过程略...


/usr/local/mysql10/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &



不过,需要注意,如果真正对客户提供分支以及将来提供可用升级及patch还需要找10-20个性能好一点的机器,把MySQL的test case和客户的case都不停的跑跑,进行一下系统的测试,下次版本升级时也要给客户说明一下具体修复的Bug是什么(有test case), 后面也可以更专业的修改一下CMakeLists.txt 生成更专业的名字(参考percona)......  ,专业的编译参数可以参考二进制发版下面的 docs/INFO_BIN说明.......

 

学生说,已经给客户POC了,差不多2-3天就可以过了! 


只能说恭喜老板发财。


唉~~~


最后修改时间:2021-07-07 11:27:41
文章转载自MySQLBeginner,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论