在容器中使用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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
算法 Java
Java实现文件搜索详解
文件搜索是计算机应用中的一个常见任务,它允许用户查找特定文件或目录,以便更轻松地管理文件系统中的内容。在Java中,您可以使用各种方法来实现文件搜索。本文将详细介绍如何使用Java编写文件搜索功能,以及一些相关的内容。
344 0
|
安全 Shell 网络安全
|
SQL 缓存 AliSQL
AliSQL
阿里云在MySQL和PostgreSQL社区版的基础上,对内核进行了深度定制
1077 0
|
Java 开发工具
开发工具系列 之 同一个电脑上安装多个版本的JDK
这篇文章介绍了如何在一台电脑上安装和配置多个版本的JDK,包括从官网下载所需JDK、安装过程、配置环境变量以及如何查看和切换当前使用的JDK版本,并提到了如果IDEA和JDK版本不兼容时的解决方法。
开发工具系列 之 同一个电脑上安装多个版本的JDK
|
关系型数据库 MySQL 应用服务中间件
配置docker阿里云镜像地址
配置docker阿里云镜像地址
|
Linux Perl
如何在Linux中高效查找大文件
在Linux中查找大文件的方法包括使用find(如`find /path/to/search -size 100M`查找100MB文件),du(如`du -ah /path/to/search | awk '$1 ~ /M$/ && $1 > 100 {print}'`查找大于100MB的文件),ls结合排序(如`ls -lhS /path/to/search | head -n 10`显示最大10个文件)和GUI工具(Nautilus、Thunar等)。选择方法要考虑查找范围、结果需求和用户熟悉程度。注意权限和验证结果,参考相关文档以获取更多帮助。
1326 0
|
SQL 开发框架 Java
Docker安装达梦数据库以及使用
Docker安装达梦数据库以及使用
2575 0
|
数据挖掘
基于R筛选过滤低丰度物种的几种方式
基于R筛选过滤低丰度物种的几种方式
800 0
|
弹性计算 网络安全 网络虚拟化
使用阿里云VPN网关打通本地服务器局域网和云上专有网络VPC的方法
阿里云VPN网关和本地服务器固定IP组建局域网如何操作?
5476 0
使用阿里云VPN网关打通本地服务器局域网和云上专有网络VPC的方法
下一篇
日志分析软件