应用分享 | 基于Percona分支的Mysql数据库(单机-集群-多版本)


应用名称 : Mysql
简述 : 基于Percona分支制作的Mysql单节点应用,支持全量mysql配置。
版本列表 :5.5.61 5.6.41 5.7.23
源码地址https://github.com/goodrain-apps/percona-mysql.git


关于Percona XtraDB

Percona XtraDB 是 InnoDB 存储引擎的增强版,被设计用来更好的使用更新计算机硬件系统的性能,同时还包含有一些在高性能环境下的新特性。XtraDB 存储引擎是完全的向下兼容,在 MariaDB 中,XtraDB 存储引擎被标识为”ENGINE=InnoDB”,这个与 InnoDB 是一样的,所以你可以直接用XtraDB 替换掉 InnoDB 而不会产生任何问题。Percona XtraDB 包含有所有 InnoDB’s 健壮性,可依赖的 ACID 兼容设计和高级 MVCC 架构。XtraDB 在 InnoDB 的坚实基础上构建,使 XtraDB 具有更多的特性,更好调用,更多的参数指标和更多的扩展。从实践的角度来看,XtraDB 被设计用来在多核心的条件下更有效的使用内存和更加方便,更加可用。新的特性被用来降低 InnoDB 的局限性。性能层面,XtraDB与内置的MySQL 5.1 InnoDB 引擎相比,它每分钟可处理2.7倍的事务。

Percona Server由领先的MySQL咨询公司Percona发布。Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB 。

Percona团队的最终声明是“Percona Server是由Oracle发布的最接近官方MySQL Enterprise发行版的版本”,因此与其他更改了大量基本核心MySQL代码的分支有所区别。Percona Server的一个缺点是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。

官网地址:http://www.percona.com/

关于配置

当前应用支持基于环境变量对Mysql配置文件进行配置,配置规则如下:

例如设置环境变量: MYSQLC_MYSQLD_PORT = 3306

生成配置文件如下:

[mysqld]
 port = 3306

其他配置类似,此功能基于https://github.com/barnettZQG/env2file实现。

制作步骤说明

我们基于Percona分支的Mysql制作Rainbond云市应用,并发布给社区用户,首先Percona已经发布了5.5 5.6 5.7三个版本的Docker镜像,我们只需要对它进行部分修改即可完成单机版本的数据库应用。

那么我们开始创建一个源码仓库开始定义Dockerfile源码。

设置时区

国外的镜像时区都不适用于国内,因此使用国外镜像是第一步就是修改时区。由于Percona镜像基于基础镜像debian:stretch 制作,修改时区就非常简单了。只需要添加环境变量TZ=Asia/Shanghai即可,详细见源码Dockerfile.

设置基于环境变量配置mysql

支持灵活的配置对于制作一个开放给广大社区用户使用应用非常重要,我们都知道Mysql是需要定义配置文件来进行配置,Rainbond平台推荐使用云原生的形式进行配置,即使用环境变量。因此我制作了一个小工具来完成从环境变量到配置文件的转换。详见:https://github.com/barnettZQG/env2file
安装工具方式:

RUN fetchDeps=' \
		ca-certificates \
		wget \
	'; \
	sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list; \
	apt-get update; \
	apt-get install -y --no-install-recommends $fetchDeps; \
	rm -rf /var/lib/apt/lists/*; \
    wget -O /usr/local/bin/env2file -q https://github.com/barnettZQG/env2file/releases/download/v0.1/env2file-linux; \
    chmod +x /run/docker-entrypoint.sh && chmod +x /usr/local/bin/env2file; \
    apt-get purge -y --auto-remove $fetchDeps

使用方式:

/usr/local/bin/env2file create --format mysql --path /etc/mysql/conf.d/custom.cnf

完成定义Dockerfile,可以到Rainbond进行源码构建应用了。到此,所有的自定义都可以到Rainbond平台设置环境变量完成了。
定义配置相关:

定义连接信息相关:

主从集群创建

mysql主从复制