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
ALTER ROLE
更改一个数据库角色(用户或组)。
概要
ALTER ROLE name [ [ WITH ] option [ ... ] ]
其中 option 可以是:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CREATEEXTTABLE | NOCREATEEXTTABLE [ ( attribute='value' [, ...] )
where attributes and values are:
type='readable'|'writable'
protocol='gpfdist'|'http'
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
ALTER ROLE name RENAME TO new_name
ALTER ROLE { name | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE { name | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
ALTER ROLE { name | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
ALTER ROLE { name | ALL } [ IN DATABASE database_name ] RESET ALL
ALTER ROLE name RESOURCE QUEUE {queue_name | NONE}
ALTER ROLE name RESOURCE GROUP {group_name | NONE}
描述
ALTER ROLE 更改 YMatrix 数据库角色的属性,此命令有几种变体。
WITH option
- 修改可以在 CREATE ROLE 中指定的大多数角色属性包含了所有可能的属性,但不包括添加或删除成员身份的选项;为那些选项使用 GRANT 和 REVOKE 。在这个命令中没提到的属性将保留她们原来的值。超级用户可以为任何角色修改任何设置。拥有 CREATEROLE 权限的角色可以修改任意的这些设置,但是仅限于非超级用户和非replication 角色。普通用户只可以修改自己的密码。
RENAME
- 更改角色的名称。数据库超级用户可以重命名任何角色。角色有 CREATEROLE 特权可以重命名非超级用户角色。无法重命名当前会话用户(以其他用户身份连接重命名角色)。 因为 MD5 加密的密码使用角色名称作为密钥,如果密码为 MD5 加密,则重命名角色将清除其密码。
SET | RESET
- 为指定的配置参数更改角色的会话默认值, 对于所有数据库,或者在 IN DATABASE 子句指定数据库时,仅对命名数据库中的会话 进行更改。如果指定了 all 而不是角色名,则会更改所有角色的设置。在 IN DATABASE 使用 ALL 实际上与使用命令 ALTER DATABASE...SET... 一样。
每当角色随后启动新会话时,指定的值将成为会话默认值,覆盖服务器配置文件 (postgresql.conf)中存在的,或从 postgres 命令行接收到的任何设置。 这只会发生在登录时,执行 SET ROLE 或者 SET SESSION AUTHORIZATION 不会触发设置新的值。
附加到角色的数据库特定设置将覆盖所有数据库的设置。特定数据库或特定角色的设置将覆盖所有角色的设置。
对于没有 LOGIN 权限的角色,会话默认值无效。普通角色可以更改自己的会话默认值。超级用户可以更改任何人的会话默认值。具有 CREATEROLE 权限的角色可以更改非超级用户角色的默认值。普通角色只能为自己设置默认值。某些配置变量不能这样设置,或者只能在超级用户发出命令时设置。
RESOURCE QUEUE
- 将角色分配给工作负载管理资源队列。 在发出查询时,角色将受到分配资源队列的限制。指定 NONE 将角色分配给默认资源队列。一个角色只能属于一个资源队列。对于没有 LOGIN 特权的角色,会话默认值没有任何作用。
RESOURCE GROUP
- 为角色分配资源组。然后,角色将受制于为资源组配置的并发事务、内存和 CPU 限制。可以将单个资源组分配给一个或多个角色。不能将为外部组件创建的资源组分配给角色。
参数
name
- 将被修改属性的角色名。
new_name
- 该角色的新名称。
database_name
- 将要设置配置参数的数据库名。
config_parameter=value
- 将指定配置参数的此角色会话默认值设置为给定值。如果 value 是 DEFAULT 指或者指定 RESET ,则角色的指定参数设置会被删除,角色将在新会话里面继承系统层面的默认值,使用 RESET ALL 可以清除所有的角色特殊配置。 SET FROM CURRENT 保存会话的当前参数值作为角色指定的值。如果指定了 IN DATABASE ,则只会为指定的角色数据库。当随后角色 开启新的会话时,指定的参数值成为会话的默认值,覆盖服务器配置文件(postgresql.conf)中存在的,或从 postgres 命令行接收到的任何设置。
角色指定的变量设置只会在登录时生效; SET ROLE 和 SET SESSION AUTHORIZATION 不会处理指定角色的变量设置。
group_name
- 分配给该角色的资源组名称。指定 group_name 为 NONE 删除角色当前分配的资源组,基于角色的能力分配一个默认资源组。 SUPERUSER 角色分配 admin_group 资源组,而 default_group 资源组则分配给非 admin 角色。
不能将为外部组件创建的资源组分配给角色。
queue_name
- 要分配用户级角色的资源队列的名称。 只有 LOGIN 特权的角色 可以分配给资源队列。要从资源队列中取消分配角色并将其置于默认资源队列中, 请指定 NONE。 角色只能属于一个资源队列。
SUPERUSER | NOSUPERUSER
CREATEDB | NOCREATEDB
CREATEROLE | NOCREATEROLE
CREATEUSER | NOCREATEUSER
- CREATEUSER 和 NOCREATEUSER 已经过期,但是 仍被接受为 SUPERUSER 和 NOSUPERUSER。注意,它们不等同于 CREATEROLE 和 NOCREATEROLE 子句。
CREATEEXTTABLE | NOCREATEEXTTABLE [(attribute='value')]
- 如果CREATEEXTTABLE 被指定, 允许定义的角色创建外部表。如果没 被指定,默认类型是 readable,并且默认协议 是 gpfdist。 NOCREATEEXTTABLE(默认)拒绝角色有创建外部表的能力。 注意使用的外部表 file 或 execute 协议只能由超级用户创建。
INHERIT | NOINHERIT
LOGIN | NOLOGIN
REPLICATION
NOREPLICATION
CONNECTION LIMIT connlimit
PASSWORD password
ENCRYPTED | UNENCRYPTED
VALID UNTIL 'timestamp'
- 这些子句通过 CREATE ROLE 改变了原来设置的角色属性。
DENY deny_point
DENY BETWEEN deny_point AND deny_point
- DENY 和 DENY BETWEEN 关键字设置了在登录时强制执行的基于时间的约束。DENY 设置一天或一天的时间来拒绝访问。DENY BETWEEN 设置访问被拒绝的间隔。 两者都使用以下格式的参数 deny_point :
DAY day [ TIME 'time' ]
deny_point 两部分参数使用以下格式:
对于 day:{'Sunday' | 'Monday' | 'Tuesday' |'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 0-6 }
对于 time:{ 00-23 : 00-59 | 01-12 : 00-59 { AM | PM }}
DENY BETWEEN 子句使用两种 deny_point 参数。DENY BETWEEN deny_point AND deny_point
DROP DENY FOR deny_point
- 该 DROP DENY FOR 子句从角色中删除基于时间的约束。它使用上述的 deny_point 参数。
注意
使用 CREATE ROLE 新增角色, 使用 DROP ROLE 删除角色。
使用 GRANT 和 REVOKE 来增加和删除角色成员。
使用此命令指定未加密的密码时,必须小心。密码将以明文形式发送到服务器,也可能会记录在客户端的命令历史记录或服务器日志中。 该 psql 命令行客户端包含一个元命令 \password 可用于安全地更改角色的密码。
还可以将会话默认值与特定数据库而不是角色绑定。如果存在冲突,则特定于角色的设置将覆盖数据库特定的设置。参阅 ALTER DATABASE。
示例
更改角色的密码:
ALTER ROLE daria WITH PASSWORD 'passwd123';
删除角色的密码:
ALTER ROLE daria WITH PASSWORD NULL;
更改密码失效日期:
ALTER ROLE scott VALID UNTIL 'May 4 12:00:00 2015 +1';
使密码永久有效:
ALTER ROLE luke VALID UNTIL 'infinity';
赋予角色创建其他角色和新数据库的能力:
ALTER ROLE joelle CREATEROLE CREATEDB;
给角色一个非默认设置 maintenance_work_mem 参数:
ALTER ROLE admin SET maintenance_work_mem = 100000;
给角色一个非默认,指定数据库的参数 client_min_messages 值:
ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;
将角色分配给资源队列:
ALTER ROLE sammy RESOURCE QUEUE poweruser;
授予创建可写外部表的角色权限:
ALTER ROLE load CREATEEXTTABLE (type='writable');
更改角色在星期日不允许登录访问:
ALTER ROLE user3 DENY DAY 'Sunday';
改变角色以消除星期日不允许登录访问的约束:
ALTER ROLE user3 DROP DENY FOR DAY 'Sunday';
指定一个新的资源组给角色:
ALTER ROLE parttime_user RESOURCE GROUP rg_light;
兼容性
ALTER ROLE 语句是 YMatrix 数据库的扩展