在Windows部署 MatrixDB Docker

本文包含在Windows 10 中通过Docker Desktop和Hyper -V部署运行MatrixDB的主要步骤,整个安装过程可能需要重启系统两次。

1. 启用Hyper-V:

1.1 命令行方式启用Hyper-V

右键开始菜单并以管理员身份运行 PowerShell ,执行命令:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

1.2 图形界面启用Hyper -V

打开windows 设置,点击进入“应用” 1

在“应用与功能”窗口右侧点击相关设置“程序与功能” 2

点击“启动或关闭Windows功能” 3

勾选启用Hyper -V

4

点击确定按钮,等待Windows 更新完成,重启电脑 5

2. 安装Docker Desktop

Docker Desktop官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows

(注意:此版本仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版。)

2.1 安装

一路 Next,点击Finish 完成安装 6 7 8

如果按照过程中遇到下面的问题,请点击提示框的链接 9

按照页面中的提示,点击下图中链接(黄色部分),下载安装 wsl2的linux kerne 更新包,并按照提示重启电脑。 10

2.2 启动Docker Desktop

如看到如下界面,即表示安装启动成功。 11

另外,在Windows 服务列表中也可以看到“Docker Desktop Service” 12

3. 部署MatrixDB Docker

3.1 确认docker安装成功

在Windows 中以管理员身份运行 PowerShell 或者 CMD,执行 docker --version,确认docker命令能正常运行。

13

3.2 拉取MatrixDB docker镜像

在PowerShell或者CMD命令行中执行:

docker pull matrixdb/centos7_demo

14

3.3 运行容器

docker run -it -p 5432:5432 --name mxdemo matrixdb/centos7_demo

主要参数说明:

  • -i:以交互模式运行容器,通常与 -t 同时使用;
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
  • -d: 后台运行容器,并返回容器ID;
  • --name: 为容器指定一个名称

3.4 修改授权文件

修改pg_hba.conf配置文件,允许从外部通过用户名密码访问数据库。

vi /home/mxadmin/data/master/gpseg-1/pg_hba.conf

在最后一行增加:

host    all     all     0.0.0.0/0       md5

15

重新加载pg_hba.conf,使其生效。

gpstop -u

3.5 修改密码并创建测试库

[mxadmin@2e807ee654a2 ~]$ psql -d postgres
psql (12)
Type "help" for help.
postgres=# alter role mxadmin with password 'mxadmin';
ALTER ROLE
postgres=# create database testdb;
CREATE DATABASE

3.6 退出docker容器

因为当前会话为创建容器时的会话,直接输入exit退出容器命令行会导致运行的docker容器停止。

正确方法是使用CTRL+D命令退出,或者直接关闭PowerShell的窗口。

4. 访问Docker/MatrixDB的常用操作

4.1 启动已经创建的docker容器

使用docker start命令加CONTAINERID启动容器,注意 CONTAINERID只写前面4位字符即可。

使用docker ps命令查看CONTAINERID,并启动:

PS C:\Users\PaulWang> docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS                     PORTS     NAMES
2e807ee654a2   matrixdb/centos7_demo   "/home/mxadmin/entry…"   33 minutes ago   Exited (0) 2 minutes ago             mxdemo
PS C:\Users\PaulWang> docker start 2e80
2e80

也可以在Docker Desktop图形界面中点击 start按钮启动容器。 16

4.2 进入容器

使用root账户登录:

docker exec -it 2e87 /bin/bash

使用mxadmin账户登录:

docker exec -it -u mxadmin 2e87 /bin/bash

4.3 管理数据库

如下管理命令用来管理数据库(注意:要使用mxadmin账户):

  • gpstate:查看当前数据库的状态
  • gpstart -a:启动数据库
  • gpstop -a:停止数据库
  • gpstop -a -M fast:快速停止数据库

4.4 容器中使用psql访问数据库

[mxadmin@2e807ee654a2 /]$ psql -d testdb
psql (12)
Type "help" for help.
testdb=# create table tb1(id int,name varchar(20)) distributed by(id);
CREATE TABLE

4.5 停止运行的容器

使用docker stop加CONTAINERID命令来停止运行中的容器:

PS C:\Users\PaulWang> docker stop 2e80
2e80

也可在docker desktop的图形界面,点击stop按钮停止docker容器。 17

5. 使用客户端工具访问MatrixDB

本文演示如何使用DBeaver访问MatrixDB。 先从官网下载社区版。

5.1 新建连接

连接类型选择“PostgreSQL”: 18

5.2 填写连接信息

填写数据库连接信息,包括用户名和密码。 (注意,在本例中已将Docker容器的端口映射到了Windows服务器,所以这里的IP地址可以直接填写localhost) 19

在PostgreSQL标签页,勾选“显示非缺省的数据库”。 20

点击“测试连接”,或者“确定”完成连接配置。