§ 容器化安装


本节介绍如何用 Docker 方式安装 GreatSQL 数据库,假定本次安装是在 CentOS 8.x x86_64 环境中安装,并且是以 root 用户身份执行安装操作。

§ 环境准备

Docker 安装 GreatSQL 与宿主机的操作系统无关,只要能够运行 Docker 的操作系统均可支持,比如 Linux,Windows,macOS。在此之前,您需要先确认已经安装好 Docker 并能正常使用。

Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

GreatSQL Docker 镜像仓库主页:https://hub.docker.com/repository/docker/greatsql/greatsql (opens new window)

本文使用的 Docker 版本是 20.10.10

$ docker --version
Docker version 20.10.10, build b485636
1
2

§ 安装步骤

  1. 启动Docker服务
$ systemctl start docker
1
  1. 搜索、拉取GreatSQL镜像
$ docker search greatsql
NAME                DESCRIPTION   STARS     OFFICIAL   AUTOMATED
greatsql/greatsql                 4

$ docker pull greatsql
Using default tag: latest
latest: Pulling from greatsql/greatsql
a1d0c7532777: Already exists
0689c7a54f49: Pull complete
...
Digest: sha256:03969daaaaaeb0f51dde0c9e92ef327302607cdde3afbe5c2b071098000c52c1
Status: Downloaded newer image for greatsql/greatsql:latest
docker.io/greatsql/greatsql:latest
1
2
3
4
5
6
7
8
9
10
11
12
13
  1. 创建一个新容器,容器中会安装并启动GreatSQL数据库
$ docker run -d --name greatsql --hostname=greatsql -e MYSQL_ALLOW_EMPTY_PASSWORD=1 greatsql/greatsql

4f351e22cea990b177589970ac5374f4b3366d2c0f69e923475f82c51da4b934
1
2
3

容器的命名和容器内主机名均为greatsql。

确认容器状态:

$ docker ps -a | grep greatsql
...
4f351e22cea9   greatsql/greatsql     "/docker-entrypoint.…"   About a minute ago   Up About a minute          3306/tcp, 33060-33061/tcp   greatsql
...
1
2
3
4

看到容器状态是Up的,表示已正常启动了。

  1. 进入容器
$ docker exec -it greatsql bash
[root@greatsql /]# cd /data/GreatSQL/
[root@greatsql GreatSQL]# ls
'#ib_16384_0.dblwr'   binlog.000001   ca-key.pem        error.log     ibdata1       mysql.ibd         performance_schema   server-key.pem   undo_002
'#ib_16384_1.dblwr'   binlog.000002   ca.pem            ib_buffer_pool     ibtmp1           mysql.pid         private_key.pem      slow.log
'#innodb_temp'          binlog.000003   client-cert.pem   ib_logfile0     innodb_status.1   mysql.sock         public_key.pem      sys
 auto.cnf          binlog.index    client-key.pem    ib_logfile1     mysql           mysql.sock.lock   server-cert.pem      undo_001
1
2
3
4
5
6
7

可以看到,GreatSQL已经安装并初始化完毕。

在容器中登入GreatSQL数据库:

[root@greatsql GreatSQL]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(Wed Jul  6 14:42:39 2022)[root@GreatSQL][(none)]>\s
--------------
...
Server version:        8.0.32-25 GreatSQL, Release 25, Revision db07cc5cb73
...
Threads: 2  Questions: 6  Slow queries: 0  Opens: 119  Flush tables: 3  Open tables: 36  Queries per second avg: 0.017
1
2
3
4
5
6
7
8
9
10
11
12

至此,在Docker中安装GreatSQL数据库完成。

如果想要在 Docker 容器中执行某个 SQL 脚本,需要先将该 SQL 脚本拷贝到容器中,再执行相应的 SQL 脚本,如下例所示:

# 先从宿主拷贝文件到容器中
$ docker cp /opt/greatsql-test.sql greatsql:/tmp/
1
2

其中

  • docker cp 表示发起一个 Docker 容器拷贝操作
  • /tmp/greatsql-test.sql 是宿主环境下的文件
  • greatsql 是容器名
  • /tmp/ 是容器中的目录

接下来,可以直接在宿主环境中调用执行容器中的 SQL 脚本

$ docker exec -it greatsql bash -c "mysql -f < /tmp/greatsql-test.sql"
1

上述方法有可能由于一些环境变量等原因无法执行,这时可以先进入容器再执行 SQL 脚本

# 先进入容器
$ docker exec -it greatsql bash

# 再在容器中执行一个 SQL 脚本
$ mysql -f < /tmp/greatsql-test.sql
1
2
3
4
5

这样就可以了。

greatsql-wx