YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
- MPP 架构
- 镜像分布策略
- 持续聚集
- 滑动窗口
- Grafana 监控指标解读
- Prometheus 监控指标解读
- 术语表
-
工具指南
- mxaddmirrors
- mxbackup
- mxbench
- mxdeletesystem
- mxgate
- mxinitstandby
- mxmoveseg
- mxpacklogs
- mxrecover
- mxrestore
- mxshift
- mxstart
- mxstate
- mxstop
- gpconfig
-
数据类型
-
存储引擎
-
执行引擎
-
系统配置参数
SQL 参考
- ABORT
- ALTER_DATABASE
- ALTER_EXTENSION
- ALTER_EXTERNAL_TABLE
- ALTER_FOREIGN_DATA_WRAPPER
- ALTER_FOREIGN_TABLE
- ALTER_FUNCTION
- ALTER_INDEX
- ALTER_RESOURCE_GROUP
- ALTER_RESOURCE_QUEUE
- ALTER_ROLE
- ALTER_RULE
- ALTER_SCHEMA
- ALTER_SEQUENCE
- ALTER_SERVER
- ALTER_TABLE
- ALTER_TABLESPACE
- ALTER_TYPE
- ALTER_USER_MAPPING
- ALTER_VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- COMMIT
- COPY
- CREATE_DATABASE
- CREATE_EXTENSION
- CREATE_EXTERNAL_TABLE
- CREATE_FOREIGN_DATA_WRAPPER
- CREATE_FOREIGN_TABLE
- CREATE_FUNCTION
- CREATE_INDEX
- CREATE_RESOURCE_GROUP
- CREATE_RESOURCE_QUEUE
- CREATE_ROLE
- CREATE_RULE
- CREATE_SCHEMA
- CREATE_SEGMENT_SET
- CREATE_SEQUENCE
- CREATE_SERVER
- CREATE_TABLE
- CREATE_TABLE_AS
- CREATE_TABLESPACE
- CREATE_TYPE
- CREATE_USER_MAPPING
- CREATE_VIEW
- DELETE
- DROP_DATABASE
- DROP_EXTENSION
- DROP_EXTERNAL_TABLE
- DROP_FOREIGN_DATA_WRAPPER
- DROP_FOREIGN_TABLE
- DROP_FUNCTION
- DROP_INDEX
- DROP_RESOURCE_GROUP
- DROP_RESOURCE_QUEUE
- DROP_ROLE
- DROP_RULE
- DROP_SCHEMA
- DROP_SEGMENT_SET
- DROP_SEQUENCE
- DROP_SERVER
- DROP_TABLE
- DROP_TABLESPACE
- DROP_TYPE
- DROP_USER_MAPPING
- DROP_VIEW
- END
- EXPLAIN
- GRANT
- INSERT
- LOAD
- LOCK
- REINDEX
- RELEASE_SAVEPOINT
- RESET
- REVOKE
- ROLLBACK_TO_SAVEPOINT
- ROLLBACK
- SAVEPOINT
- SELECT INTO
- SET ROLE
- SET TRANSACTION
- SET
- SHOW
- START TRANSACTION
- TRUNCATE
- UPDATE
- VACUUM
常见问题(FAQ)
-
新架构 FAQ
- 听说 5.x 下不能随便重启 Supervisor 了,为什么,如果重启了会发生什么?
- 为什么每个服务器上都有 Shard / Cluster 服务进程,但只有一个是活跃(active)状态?
- etcd 是部署在每台主机上吗?
- 日常我们需要针对 etcd 做哪些运维操作?
- etcd 的数据量有多大?是否需要特别的运维工作?
- 引入 etcd 后,图形化界面部署数据库集群操作有哪些变化?
- 5.0 现版本如何在线扩容?
- 5.0 beta 号称实现了 Master Auto-failover,为什么 Master 关机并切换后,再开机 Master 不会自动恢复?
- 当故障自动转移(Auto-failover)发生在不同组件,会分别产生什么影响?我要如何进一步操作?
- YMatrix 5 单个组件启动
- 我不想安装 etcd,可以选择在 YMatrix 5.X 上安装无 etcd(非高可用)的集群吗?
- Master 发生自动切换的延迟是多久?
- Segment 是否可以被 supervisor 自动恢复?
- 当半数以上的 etcd 进程异常(被杀死或无法启动)后,集群出现宕机,是正常现象吗?
-
集群部署 FAQ
- error: could not access directory /data/mxdata_20221104084534/master/mxseg-1: Permission denied
- yum 安装 matrixdb 包后报错 cpio read error
- could not connect to server: No route to host
- setuptools 报告不支持参数:unknown distribution option:long_description_content_type
- ssh 默认端口不是 22
- 图形化界面初始化报错:ping <主机名1> error:lookup multiple ip:<IP 地址1>,<IP 地址1> ping <主机名2> error:lookup multiple ip:<IP 地址2>,<IP 地址2>
- 使用图形化界面部署 YMatrix 报错 failed to connect to host=mdw user=mxadmin database=postgres: dial error (dial tcp 192.168.247.132:5432: connect: connection refused)
- 添加主机失败 collect: do collect: unmarshal remote: json: cannot unmarshal string into Go struct field Disk.hardware.disk.ineligibleDesc of type mxi18n.Message
- 集群启动报错
- 图形化部署 YMatrix 报错:优化操作系统配置 ... 已撤销...
- 安装 YMatrix 安装包报错,缺少依赖
- 由于服务器内核参数配置异常导致 Supervisor 启动异常 panic: timeout to start gRPC service
- 安装 YMatrix 收集信息失败
- 初始化失败,报 failed: initialize_database: error execute /opt/ymatrix/matrixdb-5.0.0+enterprise/bin/initdb
- 可以使用 Nginx 为图形化界面配置域名吗?
- Interconnect error writing an outgoing packet: operation not permitted
- 由于环境限制,我没办法使用图形化部署 YMatrix,可以使用命令行部署的方式吗?
- /etc/hosts 文件缺少 localhost 配置选项导致 Supervisor 服务启动异常
- YMatrix 至少需要多少服务器才能实现新架构中 etcd 集群的高可用?
- 安装数据库时报错 LOG: gp_role forced to 'utility' in single-user mode Y.sh: line 1: 11865 Illegal instruction
-
SQL 查询 FAQ
- ERROR: EvalPlanQual can not handle subPlan with Motion node
- ERROR: Too many unresolved insertion xids, please do a vacuum
- ERROR: modification of distribution columns in OnConflictUpdate is not supported
- 图形化客户端收到 log:server closed the connection unexpectedly
- PARTITION 表简单 Filter 操作的 UNION ALL 查询比 IN 查询慢
- 插入 int 类型数据,单独查询跑很快,但放到 Plpgsql Function 里很慢
- PARTITION 分区裁剪更新操作,两个会话(Session)独立更新会导致互锁
- 自定义 type 使用及单表字段扩展
- ERROR,XX000,Right sibling's left-link doesn't match : block 817 links to 45366 instead of expected 70930 in index tab_idx
- 更新删除时报错 cannot delete from table &tablename because it does not have a replica identity and publishes deletes
- ERROR: could not read block 0 in file base/1588803/269422
- 行转列示例
- 列转行示例
- pg_hba.conf 文件内容配置的顺序导致的远程访问权限异常
- idle in transaction timeout 报错
- insufficient memory reserved for statement 报错
- evalplanqual can not hanlde subplan with motion node 报错
- 在客户端创建表在 Linux 上查询不到,但是客户端上可以查询到
- UUID 分布键插入数据出现数据丢失、数据重复问题
- 数据库对应的操作系统版本从 CentOS7 升级到 CentOS8,查询语句性能下降
- 执行 SQL 语句时显示 insufficient memory reserved for statement 错误
- 创建 matrixts 扩展时报错 ERROR: type mxkv_text already exist
-
MatrixGate FAQ
- 数据加载性能低
- failed to acquire resources on on or more segments ,fatal out of memory
- mxgate 发生锁等待卡住
- mxgate 排除某一列
- mxgate 流式加载增加列不停服的办法
- mxgate socket 文件缺失?
- data format error: invalid input syntax for type integer: 1970-01-01 00:00:01
- mxgate 入库时间字段默认值相差 8 小时
- Aborting operation regardless of REJECT LIMIT value, last error was: invalid input syntax for type timestamp: 22:31:01, column batch_num
- ERROR c.s.o.matrixdb.MatrixdbSource 77 -MatrixdbSource sendingPostRequest errorCode: 400, errorMsg: target table name is empty
- responseCode:500 errorMsg: ERROR: invalid byte sequence for encoding UTF8: 0x81
- body size exceeds the given limit
- you license is expired 2022-11-02
- 使用 MatrixGate 迁移数据报错:Cannot start source: --local-ip localhost is not a valid IP address
- 使用 MatrixGate 数据加载表数据存在双引号
- MatrixGate 升级
- MatrixGate 需要加载包含 unix 时间数据的数据文件,但数据文件中 unix 数据所在的字段不是第一个字段
- MatrixGate 加载数据文件中有 \N 字符
- MatrixGate 通过迁移模式写入时出现 Handshaking was terminated on port XXX
- MatrixGate 可以实现任意列时间戳转换吗?
- MatrixGate JAVA SDK JAR 包可以下载到本地导入吗?
- Kafka 消费 key 字段包含 @ 符号,数据解析找不到 value
- mxgate 迁移模式非 mxadmin 用户提示没有权限
-
运维 FAQ
- 忘记密码
- ssh_exchange_identification: Connection closed by remote host
- psql: WARNING: database testdb must be vacuumed within 529926866 transactions (seg35 192.168.247.129:6005 pid=448116)
- could not read block 3684552 of temporary file
- YMatrix 可以修改服务器主机名(Hostname)吗?
- 数据库启动报错 FATAL: database postgres does not exist
- rpc error: code = Unknown desc = primary not found in shard state
- mxaddmirrors 执行部署添加 Mirror 报错
- ERROR: replication slot internal_wal_replication_slot already exists
- ERROR: interconnect Error: Could not set up tcp listener socket
- 使用 mxshift 工具进行迁移之前,如何增加白名单?
- 如果我在内网环境使用 mxshift 工具,需要开通哪些端口?
- index ron requires 19160 bvtes, maximum size is 8191
-
监控告警 FAQ
- 可以离线安装 Grafana 监控吗?
- Grafana 报错 Annotation Query Failed No message available
- Grafana 发送邮件报错 smtp; 554 Reject by behaviour spam at Rcpt State(Connection IP address:***) ANTISPAM_BAT[01201311R106a,ay29a033002195086]: spfcheck failedCONTINUE
-
PXF FAQ
- remote component error,Failed connect to localhost:5888; Connection refused (libchurl.c:950)
- 文件入库时,某一个字段包含换行符,将一行数据切分成两行,再以分隔符切分,就会导致数据与字段数不一致,也就是说一行数据里有两个 \n 一个在中间一个在尾部 但是中间那个不能被当做换行符处理
- PXF 访问 S3 可以递归当前目录,或者所有子目录下的所有文件吗?
- PXF 可以读取 S3 存储上的文件吗?如何读取?
-
PLPython FAQ
- PLPython 和 Python 连接数据库操作的区别与优劣是什么?
- 如何在数据库中使用 PLPython
- PLPython 中如果需要第三方的库怎么安装?
- Python 访问 YMatrix 数据库示例
- Python 批量插入数据示例
- PLPython 中使用 Python 代码
- PLPython 标准异常处理
- 使用 traceback 处理 PLPython 异常
-
性能 FAQ
在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 设置,点击进入“应用”
在“应用与功能”窗口右侧点击相关设置“程序与功能”
点击“启动或关闭Windows功能”
勾选启用Hyper -V
点击确定按钮,等待Windows 更新完成,重启电脑
2. 安装Docker Desktop
Docker Desktop官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows
(注意:此版本仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版。)
2.1 安装
一路 Next,点击Finish 完成安装
如果按照过程中遇到下面的问题,请点击提示框的链接
按照页面中的提示,点击下图中链接(黄色部分),下载安装 wsl2的linux kerne 更新包,并按照提示重启电脑。
2.2 启动Docker Desktop
如看到如下界面,即表示安装启动成功。
另外,在Windows 服务列表中也可以看到“Docker Desktop Service”
3. 部署MatrixDB Docker
3.1 确认docker安装成功
在Windows 中以管理员身份运行 PowerShell 或者 CMD,执行 docker --version
,确认docker命令能正常运行。
3.2 拉取MatrixDB docker镜像
在PowerShell或者CMD命令行中执行:
docker pull matrixdb/centos7_demo
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
重新加载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按钮启动容器。
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容器。
5. 使用客户端工具访问MatrixDB
本文演示如何使用DBeaver访问MatrixDB。 先从官网下载社区版。
5.1 新建连接
连接类型选择“PostgreSQL”:
5.2 填写连接信息
填写数据库连接信息,包括用户名和密码。
(注意,在本例中已将Docker容器的端口映射到了Windows服务器,所以这里的IP地址可以直接填写localhost)
在PostgreSQL标签页,勾选“显示非缺省的数据库”。
点击“测试连接”,或者“确定”完成连接配置。