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 集群的高可用?
-
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
-
监控告警 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
快速安装
本文档描述了在 单节点 上快速部署使用 YMatrix 的步骤。
YMatrix 支持 Redhat、CentOS、中标麒麟、银河麒麟等多个操作系统。清单如下:
- 操作系统及平台支持
企业特性 | 操作系统 | CPU 架构 |
否 | CentOS 7 Red Hat Enterprise Linux 7 | x86_64: ࠾ 海光 ࠾ 兆芯 开胜® KH-40000 系列 ࠾ 兆芯 开胜® KH-20000 系列 ࠾ 兆芯 开胜® ZX-C+FC-1080/1081 系列 ࠾ 兆芯 开先® KX-5000 系列 ࠾ 兆芯 开先® ZX-C+ 系列 AArch64: ࠾ 飞腾 FT-1500A ࠾ 飞腾 FT-2000 ࠾ 飞腾 FT-2000+ ࠾ 鲲鹏 Kunpeng 920 |
是 | 麒麟信安 V3.3 中标麒麟 V7 |
|
否 | CentOS 8 - 8.5 Red Hat Enterprise Linux 8 |
|
是 | 龙蜥(Anolis)OS 8 统信(UOS) V20(1060a) |
|
否 | Ubuntu 20.04 LTS | |
是 | 银河麒麟 V10 银河麒麟 V10 SP1 银河麒麟 V10 SP2 银河麒麟 V10 SP3 OpenEuler 20.03 LTS OpenEuler 20.03 LTS SP1 OpenEuler 20.03 LTS SP2 OpenEuler 20.03 LTS SP3 超聚变(Fusion)OS 22 麒麟信安 V3.4 统信(UOS) V20(1060e) |
|
是 | OpenEuler 22.03 LTS OpenEuler 22.03 LTS SP1 超聚变(Fusion)OS 23 麒麟信安 V3.5 |
注意!
快速安装只适用于 CentOS 7、RedHat 7 等操作系统的安装。Ubuntu 20.04 部署步骤请点击 这里;CentOS 8、RedHat 8 部署步骤请点击 这里。
注意!
本课程教学视频请参考 YMatrix 安装与部署,如果宿主机无法连接外网,请参考离线集群部署。
安装前,请先下载 YMatrix 安装文件。
1 服务端安装
服务端安装过程包括安装准备和数据库部署共两个环节,后续也讲述了可选的安装后设置和基本的数据库管理命令。
1.1 安装准备
1.1.1 复制 RPM 包
将 RPM 包从本地复制到远程服务器。
~ scp <本地路径> <用户名>@<服务器 IP 地址>: <服务器路径>
1.1.2 安装依赖
注意!
此步骤开始,以下所有操作需要在 root 用户下或使用 sudo 权限执行。
YMatrix 需要 Python 3.6,请使用下列命令安装并将 Python 3.6 设为默认版本:
$ sudo yum install centos-release-scl
$ sudo yum install rh-python36
$ sudo scl enable rh-python36 bash
1.1.3 修改机器配置
关闭防火墙:
$ sudo systemctl stop firewalld.service
$ sudo systemctl disable firewalld.service
关闭 SELinux, 编辑 /etc/selinux/config
,将 SELINUX 的值设为 disabled
:
$ sudo sed s/^SELINUX=.*$/SELINUX=disabled/ -i /etc/selinux/config
$ sudo setenforce 0
确保安装节点上有持久不变的主机名,如果不存在,请用下述命令设置主机名,示例中设置为 mdw
:
$ sudo hostnamectl set-hostname mdw
修改 /etc/hosts
文件,如果第一次使用 vim 工具,可使用 sudo yum install vim
命令安装:
$ sudo vim /etc/hosts
将主机名映射为一个本地网卡地址,修改完成后点击 esc 键,输入 :wq
保存退出
192.168.100.10 mdw
注意!
请勿在/etc/hosts
中重复添加上述 <IP 地址> <主机名> 条目,否则在图形化界面初始化时会出现“主机间网络连接测试失败“报错。
1.2 数据库 RPM 安装
使用 root 用户或 sudo 权限执行下述 yum 命令安装数据库 RPM 包时,系统依赖库会一并自动安装。缺省会安装在 /opt/ymatrix/matrixdb5
目录下:
$ sudo yum install matrixdb5-5.1.0+enterprise_5.1.0-1.el7.x86_64.rpm
注意!
在实际安装过程中,请将文件名替换成最新下载的 RPM 包名。
安装成功后,会自动启动 supervisord、MXUI 进程。这些后台进程用于提供图形化操作界面及进程管理服务。
如果你有配置端口的需求,在安装完 RPM 包后修改 /etc/matrixdb5/defaults.conf
文件进行配置。此操作只在主节点(Master)上进行即可。
$ vim /etc/matrixdb5/defaults.conf
1.3 数据库部署
1.3.1 图形化部署
YMatrix 提供了简洁易用的数据库部署方式,包括图形化部署和命令行部署,推荐使用图形化部署。远程图形化部署需要服务器 8240 和 4617 端口可以访问。图形化界面服务由 MXUI 进程提供。
使用浏览器访问以下图形化安装向导 URL,IP 为 Master 服务器 IP:
http://<IP>:8240/
安装向导的第一个页面,需要填写超级用户密码,使用 sudo more /etc/matrixdb5/auth.conf
命令查看即可:
第二个页面自动选择“单节点部署”,请直接点击下一步:
接下来开始单机部署的三步操作。
第一步,设置实例数目、存储路径和管理员密码,确认后点击一键部署。
第二步,开始部署数据库。页面实时显示任务完成进展。
第三步,完成。部署成功后,可以点击“完成”按钮。
1.3.2 命令行部署
YMatrix 也提供了命令行一键单机部署,命令如下,执行完成后数据库自动启动可立即使用:
source /opt/ymatrix/matrixdb5/greenplum_path.sh
sudo env "PATH=$PATH" mxsetup
完成部署后,会自动启动 Cylinder 进程,此进程会在指定时间自动触发函数执行某些定时任务。
1.4 安装后设置(可选)
SSH 登陆到服务器,切换到 YMatrix 管理员用户 mxadmin:
$ sudo su - mxadmin
YMatrix 缺省安装支持远程连接,如果在安装过程中没有勾选“允许远程连接至数据库”,请手工修改 $MASTER_DATA_DIRECTORY/pg_hba.conf
文件添加类似这样一行,表示允许来自任何 IP 的访问所有数据库的用户通过密码认证连接,可以根据实际需要限定IP范围或者数据库名称以减少安全风险:
$ host all all 0.0.0.0/0 md5
为方便远程连接同时也测试数据库是否初始化正常,请执行下列命令为数据库管理员用户 mxadmin 设置密码(请用您的密码替换 mxpass):
$ psql -c "alter role mxadmin with password 'mxpass'" -h localhost -p 5432 mxdb
完成这些修改后,需要执行下述命令让数据库重新加载 pg_hba.conf
的新设置:
$ mxstop -u
1.5 数据库管理(可选)
SSH 登陆到服务器,切换到 YMatrix 管理员用户 mxadmin:
$ sudo su - mxadmin
YMatrix 的启动、停止、重启、状态查看可以通过下述命令分别完成:
$ mxstart -a
$ mxstop -af
$ mxstop -arf
$ mxstate -s
命令 | 用途 |
---|---|
mxstop -a | 停止集群。(此模式下,如果有会话链接,关闭数据库会卡住) |
mxstop -af | 快速关闭集群 |
mxstop -ar | 重启集群。等待当前正在执行的 SQL 语句结束(此模式下,如果有会话链接,关闭数据库会卡住) |
mxstate -s | 查看集群状态 |
2 最小化安装
YMatrix 可以在低配设备上安装,具体如下:
最低配置 |
---|
1GHZ 双核处理器 |
2GB 内存 |
2GB 磁盘空间 |
RAID 1(镜像) |
如果在 2G 以下内存设备上安装,在安装前可按照下述命令增加 swap,确保设备有不小于 2G 的 swap 空间。
创建和启用一个 2G 的 SWAP 区:
sudo dd if=/dev/zero of=/opt/swapfile count=2048 bs=1MiB
sudo chmod 600 /opt/swapfile
sudo mkswap /opt/swapfile
sudo swapon /opt/swapfile
swapon -s
free -m
编辑 /etc/fstab
添加如下一行,以持久化该 swap 区:
/opt/swapfile swap swap sw 0 0
3 客户端安装
YMatrix 兼容 PostgreSQL 12 协议,PostgreSQL 12 的许多商业和开源客户端工具(如 DBeaver、pgAdmin等)都可以和 YMatrix 搭配使用,你可以很方便地从笔记本等个人电脑远程访问 YMatrix。详见 客户端接入。
YMatrix 的命令行工具 psql 也可以在 Windows 或者 Mac 系统远程使用。Mac 用户可以直接使用 brew 安装:
$ brew install libpq
$ brew link --force libpq ail
Windows 用户请从这里下载安装:https://www.postgresql.org/download/windows/
psql 安装后,可以通过 -h
指定主机名、-p
指定端口连接 YMatrix 服务器。psql 的其他常用参数如下:
$ psql -h [主机名或者IP] -p [端口] -U [用户名] -W -d [数据库名]
例如:
$ psql -h 127.0.0.1 -p 5432 -U mxadmin -W -d mxdb
祝你体验愉快!