集群部署常见问题

本文档介绍集群部署中的常见问题。

1 error: could not access directory \"/data/mxdata_20221104084534/master/mxseg-1\": Permission denied


图形化界面初始化日志:

"error": "execute: do execute: run: initialize_database: 7 errors occurred: * 
error execute \"/usr/local/matrixdb-4.5.0.community/bin/initdb\"\n\n STDOUT:
The files belonging to this database system will be owned by user \"mxadmin\".
This user must also own the server process.

  The database cluster will be initialized with locale \"en_US.utf8\".\n The default text search configuration will be set to \"english\".

  Data page checksums are enabled.

   STDERR:
      initdb: error: could not access directory \"/data/mxdata_20221104084534/master/mxseg-1\": Permission denied\n * error execute \"/usr/local/matrixdb-4.5.0.community/bin/initdb\"
   STDOUT:
      The files belonging to this database system will be owned by user \"mxadmin\".
      This user must also own the server process.\n\n The database cluster will be initialized with locale \"en_US.utf8\".
      The default text search configuration will be set to \"english\".
      Data page checksums are enabled.

问题分析

data 目录只有所有者有 rwx 权限, 所属组和其他用户无访问权限。

[root@mdw ~]# ll /
total 36
lrwxrwxrwx.   1 root    root       7 Jun  1 19:38 bin -> usr/bin
dr-xr-xr-x.   5 root    root    4096 Oct 26 18:28 boot
drwxr-xr-x   20 root    root    3200 Oct 26 14:45 dev
drwxr-xr-x.  80 root    root    8192 Oct 28 13:53 etc
drwxr-xr-x.   5 root    root    8192 Oct 26 18:17 export
drwxr-xr-x.   5 root    root     105 Oct 26 18:28 home
drwx------.   5 root    root     105 Oct 26 18:28 data

解决方案

修改数据目录权限即可。

sudo chmod 755 /data 

2 yum 安装 matrixdb 包后报错 cpio read error


问题分析

用户环境为 Windows,使用 vm15 虚拟机,Windows 下载安装包后文件拖拽到虚拟机,导致文件被截断。

解决方案

使用 vm 共享目录机制传输数据。

3 could not connect to server: No route to host


初始化时报错:

could not connect to server: No route to host
 Is the server running on host "192.168.88.203" and accepting
 TCP/IP connections on port 40000?
 (seg0 192.168.88.203:40000)

问题分析

203 机器关掉了 iptables,但是没有 disable,重启机器后,防火墙又启动了。
端口默认没有放开,导致初始化时机器无法通信,现象就是初始化一直卡住,无法完成。

解决方案

清空 203 机器上的防火墙规则,停掉 iptables 服务并且 disable,防止重启后,网络不通。

4 setuptools 报告不支持参数: unknown distribution option:"long_description_content_type'


问题分析

setuptools 版本比较老。

解决方案

sudo python3 -m pip install --upgrade setuptools

5 ssh 默认端口不是 22


解决方案

.ssh/config 文件中增加主机名、端口号和用户的配置:

Host mdw
   Hostname mdw
   Port 29022
   User mxadmin
Host sdw1
   Hostname sdw1
   Port 29022
   User mxadmin

6 MXUI 初始化报错:ping <主机名1> error:lookup multiple ip:<IP 地址1>,<IP 地址1> ping <主机名2> error:lookup multiple ip:<IP 地址2>,<IP 地址2>


问题分析

/etc/hosts 中存在相同条目,如:

<IP 地址1> <主机名1>
<IP 地址1> <主机名1>
<IP 地址2> <主机名2>
<IP 地址2> <主机名2>

解决方案

删除 /etc/hosts 中的多余的条目:

<IP 地址1> <主机名1>
<IP 地址2> <主机名2>

修改后可以正常初始化。

7 使用图形化界面部署 MatrixDB 报错 failed to connect to host=mdw user=mxadmin database=postgres: dial error (dial tcp 192.168.247.132:5432: connect: connection refused)


图形化界面出现如下报错: failed to connect to host=mdw user=mxadmin database=postgres: dial error (dial tcp 192.168.247.132:5432: connect: connection refused)

问题分析

你很可能已经使用浏览器安装过一次 MatrixDB。由于某些原因之前的 MatrixDB 环境已经被清理掉,如再次加载此图形化界面,默认会在 URL 地址最后增加 /datastream 路径。 例如:http://192.168.247.132:8240/datastream

解决方案

datastream 关键字改为 installer。 例如:http://192.168.247.132:8240/installer 再次使用图形化界面进行下一步安装即可。

8 添加主机失败 collect: do collect: unmarshal remote: json: cannot unmarshal string into Go struct field Disk.hardware.disk.ineligibleDesc of type mxi18n.Message


使用图形化界面安装部署 MatrixDB 集群时,添加节点报错:

添加主机失败 collect: do collect: unmarshal remote: json: cannot unmarshal string into Go struct field Disk.hardware.disk.ineligibleDesc of type mxi18n.Message

问题分析

各个服务器节点安装的 MatrixDB 版本不一致导致。

检查办法

依次检查每台服务器节点的 MatrixDB 版本。

检查主节点 mdw MatrixDB 版本。

[root@mdw matrixdb]# ll /usr/local/matrixdb
lrwxrwxrwx 1 root root 25 12月  9 18:02 /usr/local/matrixdb -> matrixdb-4.7.5.enterprise

检查数据节点 sdw1 MatrixDB 版本。

[root@sdw1 ~]$ ll /usr/local/matrixdb
lrwxrwxrwx 1 root root 25 12月 22 17:24 /usr/local/matrixdb -> matrixdb-4.6.2.enterprise

检查数据节点 sdw2 MatrixDB 版本。

[root@sdw2 ~]# ll /usr/local/matrixdb
lrwxrwxrwx 1 root root 25 12月  9 18:02 /usr/local/matrixdb -> matrixdb-4.7.5.enterprise

检查数据节点 sdw3 MatrixDB 版本。

[root@sdw3 ~]# ll /usr/local/matrixdb
lrwxrwxrwx 1 root root 25 12月  9 18:02 /usr/local/matrixdb -> matrixdb-4.7.5.enterprise

检查结果

sdw1 节点的数据库版本是 4.6.2,其他节点的数据库版本是 4.7.5。

解决方案

将 sdw1 节点的数据库版本升级和其他节点相同的版本,命令如下:

停止 Supervisor 服务。

[root@sdw1 ~]$ systemctl stop matrixdb.supervisor.service

卸载 MatrixDB 老版本软件。

[root@sdw1 ~]$ yum -y remove matrixdb

安装 MatrixDB 新版本软件。

[root@sdw1 ~]$ yum -y install /home/mxadmin/matrixdb-4.7.5.enterprise-1.el7.x86_64.rpm

启动 Supervisor 服务。

[root@sdw1 ~]$ systemctl start matrixdb.supervisor.service

9 集群启动报错


报错信息

20221223:09:55:10:001626 gpstart:mdw:mxadmin-[CRITICAL]:-Error occurred: non-zero rc: 1
 Command was: 'env GPSESSID=0000000000 GPERA=None $GPHOME/bin/pg_ctl -D /mxdata_20221221165810/master/mxseg-1 -l /mxdata_20221221165810/master/mxseg-1/log/startup.log -w -t 600 -o " -p 5432 -c gp_role=utility " start'
rc=1, stdout='waiting for server to start.... stopped waiting
', stderr='pg_ctl: could not start server
Examine the log output.
'

问题分析

查看日志文件。

[mxadmin@mdw ~]$ cd /mxdata_20221221165810/master/mxseg-1/log
[mxadmin@mdw log]$ vi startup.log
"FATAL","42501","could not create lock file ""/tmp/.s.PGSQL.5432.lock"": Permission denied",,,,,,,,"CreateLockFile","miscinit.c",994,1    0xd44e33 postgres errstart (elog.c:498)

查看 /tmp 路径的权限。由于 /tmp 路径的权限必须为 777,因此将其修改回来即可。

[mxadmin@mdw ~]$ ll / | grep tmp
drw-r-xr-x.   7 root    root    8192 12月 23 10:00 tmp

解决方案

在 root 用户下将 /tmp 路径权限修改为 777 权限。

[mxadmin@mdw ~]$ exit
[root@mdw ~]# chmod 777 /tmp

重新启动集群。

[root@mdw ~]# su - mxadmin
[mxadmin@mdw ~]$ gpstart -a

10 图形化部署 MatrixDB 报错:优化操作系统配置 ... 已撤销 { "error": "execute: do execute: run: launch_matrixdb: error execute \"/usr/local/matrixdb-4.7.5.enterprise/bin/pg_ctl -w -l /mxdata_20221223100549/master/mxseg-1/log/startup.log -D /mxdata_20221223100549/master/mxseg-1 -o -i -p 5432 -c gp_role=utility -m start\"\n\nSTDOUT:\n waiting for server to start.... stopped waiting\n\nSTDERR:\n pg_ctl: could not start server\nExamine the log output.\n" }


问题分析
查看图形化部署日志文件

[mxadmin@mdw ~]$ cd /var/log/matrixdb/
[mxadmin@mdw matrixdb]$ vi mxui.log 

[20221223:10:08:43][INFO] id=1; start: system_setup
[20221223:10:08:43][INFO] id=1; done
[20221223:10:08:43][INFO] id=2; start: create_user_and_directories
[20221223:10:08:43][INFO] id=2; done
[20221223:10:08:43][INFO] id=3; start: initialize_database
[20221223:10:08:44][INFO] id=3; running: 6%
[20221223:10:08:44][INFO] id=3; running: 6%
[20221223:10:08:44][INFO] id=3; running: 6%
[20221223:10:08:44][INFO] id=3; running: 6%
[20221223:10:08:44][INFO] id=3; running: 6%
[20221223:10:08:45][INFO] id=3; running: 6%
[20221223:10:08:45][INFO] id=3; running: 6%
[20221223:10:08:45][INFO] id=3; done
[20221223:10:08:45][INFO] id=4; start: launch_matrixdb
[20221223:10:08:45][ERROR] id=4; failed: launch_matrixdb: error execute "/usr/local/matrixdb-4.7.5.enterprise/bin/pg_ctl -w -l /mxdata_20221223100549/master/mxseg-1/log/startup.log -D /mxdata_20221223100549/master/mxseg-1 -o -i -p 5432 -c gp_role=utility -m start"
STDOUT:
    waiting for server to start.... stopped waiting
STDERR:
    pg_ctl: could not start server
Examine the log output.
[20221223:10:08:45][INFO] id=4; revert start: launch_matrixdb
[20221223:10:08:45][INFO] id=4; revert done
[20221223:10:08:45][INFO] id=3; revert start: initialize_database
[20221223:10:08:45][INFO] id=3; revert done
[20221223:10:08:45][INFO] id=2; revert start: create_user_and_directories
[20221223:10:08:45][INFO] id=2; revert done
[20221223:10:08:45][INFO] id=1; revert start: system_setup
[20221223:10:08:45][INFO] id=1; revert done
{
  "error": "execute: do execute: run: launch_matrixdb: error execute \"/usr/local/matrixdb-4.7.5.enterprise/bin/pg_ctl -w -l /mxdata_20221223100549/master/mxseg-1/log/startup.log -D /mxdata_20221223100549/master/mxseg-1 -o -i -p 5432 -c gp_role=utility -m start\"\n\nSTDOUT:\n    waiting for server to start.... stopped waiting\n\nSTDERR:\n    pg_ctl: could not start server\nExamine the log output.\n"
}
execute: do execute: run: launch_matrixdb: error execute "/usr/local/matrixdb-4.7.5.enterprise/bin/pg_ctl -w -l /mxdata_20221223100549/master/mxseg-1/log/startup.log -D /mxdata_20221223100549/master/mxseg-1 -o -i -p 5432 -c gp_role=utility -m start"

STDOUT:
    waiting for server to start.... stopped waiting

STDERR:
    pg_ctl: could not start server
Examine the log output.

[GIN] 2022/12/23 - 10:08:45 | 200 |      148.13µs |   192.168.247.2 | GET      "/api/installer/log"

查看图形化界面部署的步骤当前已经运行到 launch_matrixdb,在日志中找到相关操作并且根据上下文分析:发现当前已经运行到 pg_ctl 启动实例这一步。这说明了启动实例失败,导致整个初始化操作失败并且回退。

可能导致启动实例失败的原因有如下几个,你需要根据实际情况逐一排查:

  1. CPU 负载过高。
  2. 内存使用量过大,剩余内存无法支撑实例(Instance)启动。
  3. 网络不稳定。
  4. /tmp 权限不足,无法创建 lock 文件。

解决方案

由于前三个问题形成原因较复杂,需具体场景具体分析,在此不做详述。
4. 在 root 用户下将 /tmp 路径权限修改为 777 权限。

[root@mdw ~]# chmod 777 /tmp

11 安装 MatrixDB 安装包报错,缺少依赖


报错信息

[root@sdw4 yum.repos.d]# yum -y install /home/mxadmin/matrixdb-4.7.5.enterprise-1.el7.x86_64.rpm 
已加载插件:fastestmirror
正在检查 /home/mxadmin/matrixdb-4.7.5.enterprise-1.el7.x86_64.rpm: matrixdb-4.7.5.enterprise-1.el7.x86_64
/home/mxadmin/matrixdb-4.7.5.enterprise-1.el7.x86_64.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 matrixdb.x86_64.0.4.7.5.enterprise-1.el7 将被 安装
--> 正在处理依赖关系 sysstat,它被软件包 matrixdb-4.7.5.enterprise-1.el7.x86_64 需要
Loading mirror speeds from cached hostfile
--> 解决依赖关系完成
错误:软件包:matrixdb-4.7.5.enterprise-1.el7.x86_64 (/matrixdb-4.7.5.enterprise-1.el7.x86_64)
          需要:sysstat
 您可以尝试添加 --skip-broken 选项来解决该问题
 您可以尝试执行:rpm -Va --nofiles --nodigest

问题分析

缺少 sysstat 软件包。

解决方案

配置 yum 源,使用 yum -y install sysstat 安装 sysstat 工具,然后再安装 MatrixDB 软件包。

12 由于服务器内核参数配置异常导致 supervisor 启动异常 “panic: timeout to start gRPC service”


问题分析

在 MatrixDB 4.7.5版本安装包部署完成后,supervisor 进程启动异常,查看 /var/log/messages 后发现如下异常日志

Dec 22 19:08:59 sdw21 systemd: matrixdb.supervisor.service holdoff time over, scheduling restart.
Dec 22 19:08:59 sdw21 systemd: Stopped MatrixDB Supervisord Daemon.
Dec 22 19:08:59 sdw21 systemd: Started MatrixDB Supervisord Daemon.
Dec 22 19:08:59 sdw21 bash: time="2022-12-22T19:08:59+08:00" level=info msg="load configuration from file" file=/etc/matrixdb/supervisor.conf
Dec 22 19:08:59 sdw21 bash: time="2022-12-22T19:08:59+08:00" level=info msg="load config file over, content "
Dec 22 19:09:09 sdw21 bash: panic: timeout to start gRPC service
Dec 22 19:09:09 sdw21 bash: goroutine 1 [running]:
Dec 22 19:09:09 sdw21 bash: main.runServer()
Dec 22 19:09:09 sdw21 bash: /home/runner/work/matrixdb-ci/matrixdb-ci/cmd/supervisor/main.go:151 +0x4f0
Dec 22 19:09:09 sdw21 bash: main.main()
Dec 22 19:09:09 sdw21 bash: /home/runner/work/matrixdb-ci/matrixdb-ci/cmd/supervisor/main.go:216 +0x185
Dec 22 19:09:09 sdw21 systemd: matrixdb.supervisor.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Dec 22 19:09:09 sdw21 systemd: Unit matrixdb.supervisor.service entered failed state.
Dec 22 19:09:09 sdw21 systemd: matrixdb.supervisor.service failed.
Dec 22 19:09:14 sdw21 systemd: matrixdb.supervisor.service holdoff time over, scheduling restart.
Dec 22 19:09:14 sdw21 systemd: Stopped MatrixDB Supervisord Daemon.
Dec 22 19:09:14 sdw21 systemd: Started MatrixDB Supervisord Daemon.

经过排查发现是 /etc/sysctl.conf 文件中变量取值过大,会导致 supervisor 运行不畅。 改成正常大小值即可,具体如下。

解决方案

  1. 改小 /etc/sysctl.conf 的内核参数配置,防止 supervisor 运行阻塞

    ######### value too large, supervisor startup fail
    #net.core.rmem_default = 1800262144
    #net.core.wmem_default = 1800262144
    #net.core.rmem_max = 2000777216
    #net.core.wmem_max = 2000777216
    #########
    net.core.rmem_default = 262144
    net.core.wmem_default = 262144
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
  2. supervisor 启动失败或故障,可以使用 journalctl --no-pager 抓取详细信息,包括崩溃的栈等。

13 安装 MatrixDB 收集信息失败


报错信息

收集信息失败 collect: do collect: hardware: GetDisk: createTempUser: error execute useradd: exit status 1 please create "mxadmin" user manually to workaround this issue useradd:无法打开 /etc/passwd

问题分析

根据报错信息分析,是 /etc/passwd 文件权限问题导致创建操作系统用户 mxadmin 失败。

解决方案

  1. 手动创建一个测试用户并查看报错信息

    [root@sdw4 ~]# useradd test1
    useradd:无法打开 /etc/passwd
  2. 查看 /etc/passwd 权限

    [root@sdw4 ~]# ll /etc/passwd
    -rw-r--r-- 1 root root 898 12月 24 01:48 /etc/passwd

    结果显示 644 权限属于正常权限,没有问题

  3. 检查 /etc/passwd 是否有特殊权限

    [root@sdw4 ~]# lsattr /etc/passwd
    ----i----------- /etc/passwd

    结果显示 /etc/passwd 文件存在特殊的权限 "i" (权限说明:任何用户不得更改及删除,包括 root)。

  4. 重复以上步骤检查 /etc/group 文件

    [root@sdw4 ~]# ll /etc/group
    -rw-r--r-- 1 root root 460 12月 24 01:48 /etc/group
    [root@sdw4 ~]# lsattr /etc/group
    ----i----------- /etc/group
  5. /etc/passwd/etc/group 两个文件的特殊权限去掉

    [root@sdw4 ~]# chattr -i /etc/passwd
    [root@sdw4 ~]# chattr -i /etc/group
  6. 再次尝试手动创建一个测试用户

    [root@sdw4 ~]# useradd test1

    结果可以正常创建用户。

  7. 删除测试用户

    [root@sdw4 ~]# userdel -r test1
  8. 使用图形化界面继续安装部署 MatrixDB

14 初始化失败,报 failed: initialize_database: error execute "/usr/local/matrixdb-4.7.2.enterprise/bin/initdb"


使用 MXUI 做初始化时,执行最后一步,报错如下:

[20221101:14:59:02][ERROR] id=3; failed: initialize_database: error execute "/usr/local/matrixdb-4.7.2.enterprise/bin/initdb"
STDOUT:
    The files belonging to this database system will be owned by user "mxadmin".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.utf8".
The default text search configuration will be set to "english".
{
  "error": "execute: do execute: run: initialize_database: error execute \"/usr/local/matrixdb-4.7.2.enterprise/bin/initdb\"\n\nSTDOUT:\n    The files belonging to this database system will be owned by user \"mxadmin\".\nThis user must also own the server process.\n\nThe database cluster will be initialized with locale \"en_US.utf8\".\nThe default text search configuration will be set to \"english\".\n\nData page checksums are enabled.\n\nfixing permissions on existing directory /data/mxdata_20221101121858/primary/mxseg0 ... ok\ncreating subdirectories ... ok\nselecting dynamic shared memory implementation ... posix\nselecting default max_connections ... \nSTDERR:\n    initdb: error: initdb: error 256 from: \"/usr/local/matrixdb-4.7.2.enterprise/bin/postgres\" --boot -x0 -F -c max_connections=1500 -c shared_buffers=262144 -c dynamic_shared_memory_type=posix \u003c \"/dev/null\" \u003e \"/dev/null\" 2\u003e\u00261\ninitdb: removing contents of data directory \"/data/mxdata_20221101121858/primary/mxseg0\"\n"
Data page checksums are enabled.
fixing permissions on existing directory /data/mxdata_20221101121858/primary/mxseg0 ... ok
creating subdirectories ... ok
}
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 
STDERR:
    initdb: error: initdb: error 256 from: "/usr/local/matrixdb-4.7.2.enterprise/bin/postgres" --boot -x0 -F -c max_connections=1500 -c shared_buffers=262144 -c dynamic_shared_memory_type=posix < "/dev/null" > "/dev/null" 2>&1
initdb: removing contents of data directory "/data/mxdata_20221101121858/primary/mxseg0"

问题分析

  1. 主机名绑定的 IP 不一致。
  2. 内存余量过低。

解决方案

  1. /etc/hosts 中将本地 IP 与主机名(hostname)关联起来。
  2. 使用 free -g 命令检查内存大小。

15 可以使用 Nginx 为图形化界面配置域名吗?


可以的。

图形化客户端 MXUI 默认使用 http://<IP>:8240 对外提供服务,如果需要使其能通过域名 http://hostname 直接访问,可借助 Nginx 配置反向代理。
例如:如需设置 mxui.ymatrix.cn 为对外访问地址,Nginx 配置如下。

 server
        {
                listen  80;
                server_name mxui.ymatrix.cn; # 对外域名


                # WebSocket 转发规则
                location /ws {
                    proxy_pass http://127.0.0.1:8240/ws;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "Upgrade";
                    proxy_set_header Host $host;
                }  

                # 网页转发规则
                location / {
                    proxy_pass http://127.0.0.1:8240; 
                }

        }

注意!
MXUI 需要使用 WebSocket API 进行通信,需要单独为其配置转发规则才能正常使用。

16 Interconnect error writing an outgoing packet: operation not permitted


系统日志 /var/log/message 输出如下:

Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:15 sdw37 kernel: nf_conntrack: table full, dropping packet
Mar 10 06:26:20 sdw37 kernel: nf_conntrack: table full, dropping packet

问题分析

系统参数 net.netfilter.nf_conntrack_max 默认最大跟踪 65536 个连接,当存在大量连接时出现该错误,可使用如下命令查看当前系统设置最大连接数:

cat /proc/sys/net/netfilter/nf_conntrack_max

解决方案

调大参数 net.netfilter.nf_conntrack_max 即可。

sysctl -w net.netfilter.nf_conntrack_max=655360

17 数据库可以正常使用,但是图形化界面报数据实例异常


问题描述

在数据部署完毕后,图形化界面告警信息一直报错,但是从数据库的 gp_segment_configuration 中看到节点状态是正常的。

问题分析

首先,需要通过 gpstate -a 命令来看一下集群节点状态。 如果输出信息如下:

Database status  = unkown -- unable to load segment status

那么你需要到 /home/mxadmin/gpAdminLogs 目录下,查看类似 gpgetstatususingtransition.py_mdw:mxadmin_20230702.log 的日志文件。

大部分情况下,从日志中的报错信息可以明显看到是由于 netstat 命令执行失败。

解决方案

补充安装 net-tools 包即可。

18 安装数据库时 LOG: gp_role forced to 'utility' in single-user mode Y.sh: line 1: 11865 Illegal instruction 错误


报错信息

"LogCheckpointEnd","xlog.c",8916, LOG: gp_role forced to 'utility' in single-user mode Y.sh: line 1: 
11865 Illegal instruction (core dumped) "/opt/ymatrix/matrixdb-5.0.0+community/bin/postgres" --single -F -O -j -c 
gp_role=utility -c search_path=pg_catalog -c exit_on_error=true template1 > /dev/null child process exited with exit code 132 
initdb: data directory "/mxdata_20231018165815/master/mxseg-1" not removed at user's request * rpc error: 

问题分析

新版本的数据库支持了向量集用到了 SIMD 指令,在安装时会对 CPU 指令集的检测,如果 CPU 指令集不支持则会出现以上错误提示。

解决方案

  1. 使用以下命令查看是否支持以下指令
    cat /proc/cpuinfo|grep -E "mmx|sse|sse2|ssse3|sse4_1|sse4_2|avx|avx2"
  2. 如果是虚拟机,在 CPU 工作模式处选择直通模式,然后重启虚拟机进行尝试。

19 在防火墙开启的情况下,需要配置哪些防火墙策略可以使得数据库集群正常运行?


# 集群内部IP之间网络需要打开所有端口,对外的端口可以只暴露服务端口
# 数据库防火墙配置,示例中假设 10.129.38.230、10.129.38.231、10.129.38.232 三台服务器构建了一套数据库集群
# 集群中所有主机之间开放所有端口,包括TCP、UDP协议
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.230" port protocol="tcp" port="0-65535" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.231" port protocol="tcp" port="0-65535" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.232" port protocol="tcp" port="0-65535" accept"

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.230" port protocol="udp" port="0-65535" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.231" port protocol="udp" port="0-65535" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.232" port protocol="udp" port="0-65535" accept"

# 开启 ping
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.230" port protocol="icmp" port="0-65535" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.231" port protocol="icmp" port="0-65535" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.129.38.232" port protocol="icmp" port="0-65535" accept"

# master 及 standby master 节点限制对外开放 5432 服务端口 8240
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --zone=public --add-port=8240/tcp --permanent

#  Grafana 
firewall-cmd --zone=public --add-port=3000/tcp --permanent

# 查看防火墙规则
firewall-cmd --list-all

# 重新加载防火墙,使配置生效
firewall-cmd --reload
systemctl restart firewalld.service