在容器中使用AliSQL

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: ### AliSQL容器 #### ALISQL AliSQL是基于MySQL官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。

AliSQL容器

ALISQL

AliSQL是基于MySQL官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。

基于AliSQL打包的docker镜像

对于MySQL或其分支(MariaDB)分支的数据库镜像,docker官方是有相应的模板的。 但是其官方模板都是使用MySQL的二进制包,通过系统自带的包管理器下载。而AliSQL没有,所以我们只能拉下代码,打一个编译后的的基础镜像, 然后基于这个基础镜像封装mysql镜像的逻辑。
镜像的docker-entrypoint.sh和官方基本一致, 如果您有mysql镜像的使用,将mysql的镜像名直接替换为AliSQL (registry.cn-hangzhou.aliyuncs.com/acs-sample/alisql:latest)即可。

mysqlz使用方式

参考文章:https://hub.docker.com/_/mysql/
MYSQL_ROOT_PASSWORD
设置root帐号密码

MYSQL_DATABASE
可以选择在镜像初始的时候创建一个数据库,如果设置了帐号密码,该帐号会被授权超级帐号。

MYSQL_USER, MYSQL_PASSWORD
帐号密码会被用于给MYSQL_DATABASE指定的数据库,被授权一个有超级用户权限的帐号。(ps root用户不需要此方法设置,root用户只需设置MYSQL_ROOT_PASSWORD即可)

MYSQL_ALLOW_EMPTY_PASSWORD
如果设置为yes,则允许容器以启动时不设置root帐号密码。 (该变量并不推荐)

MYSQL_RANDOM_ROOT_PASSWORD
设置为yes,则为root帐号生成随机密码。生成的密码会输出 (GENERATED ROOT PASSWORD: .....)

MYSQL_ONETIME_PASSWORD
为root设置一个初始密码, 第一次登录后强制要求修改。

在容器服务上部署AliSQL容器

选择创建应用:
Snip20161030_6

选择按镜像创建应用:
Snip20161030_8

选择AliSQL镜像:
Snip20161030_10

设置环境变量, root帐号密码,和通过宿主机暴露的端口:
Snip20161030_14

创建完成后,我们可以在容器列表中看到这个容器,拿到他通过宿主机地址和暴露这个容器的端口:
Snip20161030_15

在其他机器上通过mysql客户端连接:
Snip20161030_18

部署一个基于AliSQL容器的wordpress

如何将已有的MySQL应用替换为AliSQL应用呢,我们以一个WordPress应用为例,将其中的MySQL镜像的替换为AliSQL。

选择创建应用,使用编排模板创建:
Snip20161030_20

选择左下角的使用已有编排模板,然后选择WordPress模板:
Snip20161030_19

在模板文件中,将AliSQL的镜像地址 (registry.cn-hangzhou.aliyuncs.com/acs-sample/alisql:latest)替换MySQL镜像:
Snip20161030_22

创建成功后可以在容器列表看到4个Running的容器,3个WordPress容器和1个AliSQL的容器:
Snip20161030_23

在路由列表可以看到可供外网访问的Url,打开会看到WordPress成功运行:
Snip20161030_24
Snip20161030_25

Tips

AliSQL编译支持将TokuDB作为存储引擎,但是由于TokuDB的启动环境要求kernel关闭THP(transparent huge pages),原因这篇文章有简单描述Why TokuDB hates Transparent HugePages,一般建议是将THP关闭MariaDB enabling TokuDB (ps: transparent huge pages很多中文资料直接翻译成大页内存,其实它指是透明大页内存。大页内存是好东西,将内核管理内存的最小单位从4kb提升到2MB。对于大块文件可以减少随机读写的寻址次数。而THP的作用是将每个2MBpage的多余空间由kernel管理封装。 它减少了操作内存的程序复杂度,但是不适用于数据库这种对内存要求苛刻的应用,数据库产品例如MySQL,MongoDB,Redis都有自己的内存管理器,故需要关闭THP)。 而在docker中容器共享宿主机kernel,不建议修改宿主机的kernel参数。所以在编译AliSQL的时候去掉tokudb引擎。 这个问题暂时没有找到合适的解决方案。 在redis和mongodb中都会有这个问题,只不过他们只会warning一下,没有TokuDB这么傲娇完全不启动。

AliSQL有推荐的配置文件,可以拿来配置使用。 将cnf文件映射到/etc/mysql下即可。 命令:
$ docker run --name alisql -v /my/custom:/etc/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d registry.cn-hangzhou.aliyuncs.com/acs-sample/alisql:latest

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
SQL 关系型数据库 MySQL
Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器
Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器
1495 0
Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器
|
3月前
|
关系型数据库 MySQL 数据安全/隐私保护
使用Docker构建本地Mysql容器及配置
使用Docker构建本地Mysql容器及配置
54 1
|
10月前
|
Docker 容器
Docker 容器迁移
Docker 容器迁移
252 0
|
7月前
|
Linux 应用服务中间件 nginx
docker 快速查询容器是否正常启动
docker 快速查询容器是否正常启动
1192 0
|
9月前
|
Devops Shell 数据中心
Docker容器迁移到其他服务器的5种方法
迁移在许多情况下都是不可避免的。硬件升级、数据中心变化、过时的操作系统,所有这些都可能成为迁移的触发点。
10952 3
|
9月前
|
Kubernetes Cloud Native Linux
容器引擎Docker与Podman解析
最近技术群里有朋友问我,不是说K8S要弃用Docker了吗?还要不要继续学习这块内容?是不是得改行卖白菜了?
225 0
容器引擎Docker与Podman解析
|
10月前
|
存储 Linux Go
podman利用criu进行容器迁移
podman利用criu进行容器迁移
248 0
|
10月前
|
关系型数据库 PostgreSQL Docker
docker 容器部署postgresql数据持久化迁移
docker 容器部署postgresql数据持久化迁移
517 0
|
11月前
|
NoSQL 关系型数据库 MySQL
Docker容器引擎
主要是应用、依赖、函数库、配置一起打包,形成可移植镜像
|
Cloud Native 关系型数据库 MySQL
【云原生】Docker之创建并进入mysql容器
本文主要讲解的是创建mysql的容器,大家都知道,在外面进入mysql都很容易,“mysql -u用户名 -p密码”就可以,但是是容器的mysql就没那么好进入了,首先还要拉取镜像,创建容器,在进入容器,然后才可以进入mysql;其实也没有那么难,而且比在宿主机装一个mysql简便了很多,也省去了很多时间,比如,宿主机上mysql还要编译,容器就不用,但是最难的一点就是如何去创建容器呢,他和普通的创建容器是不一样的,所以,今天给大家讲讲创建mysql容易,并进入、创建库和表;
249 0
【云原生】Docker之创建并进入mysql容器