YMatrix 4-5 大版本升级
大版本升级是指主版本号改变。如:从 4.6.0 升级到 5.0.0;从 4.8.1 升级到 5.0.0。
对于 4.X 到 5.X 的升级,YMatrix 给出两套方案,请根据需求谨慎选择。
- 如果你需要在同一服务器上升级,那么可以使得新的 YMatrix 5 集群与 原来的 YMatrix 4 集群共存,即在同一机器安装两个版本的软件,随后迁移数据。
- 如果你需要在不同服务器上升级,那么则需要在新机器上安装部署新的 YMatrix 5 集群,然后迁移数据。
下面,以从 YMatrix 4.8.1 升级到 5.0.0 为例,介绍两种方案的详细步骤。
注意!
两种方案选择一种即可,切勿全部实施。
1 YMatrix 4 与 5 共存
使用此方案能够从 YMatrix 4 原地升级到 YMatrix 5。4 和 5 将在一个主机上同时存在,软件可以同时安装,集群可以同时启动运行,相互不影响。但需要保证当前机器的存储空间至少可以容纳当前集群体积的 2 倍。
示例集群信息如下:4 台主机。1 个主节点(Master),2 个数据节点(Segment)(带有镜像节点实例(Mirror)),1 个主节点备用节点(Standby)。
1.1 查看原有 YMatrix 4 信息
查看原有 YMatrix 4 软件版本信息。
=# select version();
versi
on
---------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 12 (MatrixDB 4.8.1-enterprise) (Greenplum Database 7.0.0+dev.18290.g7184139e3e build commit:7184139e3ebba8b77239ec19db63c04
bd43951b6) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9), 64-bit compiled on Mar 21 2023 06:51:57
(1 row)
查看源集群信息。
=# select * from gp_segment_configuration order by content, dbid;
dbid | content | role | preferred_role | mode | status | port | hostname |
address | datadir
------+---------+------+----------------+------+--------+------+-------------------------------------------------+---------------------
----------------------------+----------------------------------------
1 | -1 | p | p | n | u | 5432 | ip-10-0-128-97.cn-northwest-1.compute.internal | ip-10-0-128-97.cn-no
rthwest-1.compute.internal | /mxdata_20230321075750/master/mxseg-1
10 | -1 | m | m | s | u | 5432 | ip-10-0-92-234.cn-northwest-1.compute.internal | ip-10-0-92-234.cn-no
rthwest-1.compute.internal | /mxdata_20230321075750/standby/mxseg-1
4 | 0 | p | p | s | u | 6000 | ip-10-0-101-114.cn-northwest-1.compute.internal | ip-10-0-101-114.cn-n
orthwest-1.compute.internal | /mxdata_20230321075750/primary/mxseg0
8 | 0 | m | m | s | u | 7001 | ip-10-0-137-193.cn-northwest-1.compute.internal | ip-10-0-137-193.cn-n
orthwest-1.compute.internal | /mxdata_20230321075750/mirror/mxseg0
5 | 1 | p | p | s | u | 6001 | ip-10-0-101-114.cn-northwest-1.compute.internal | ip-10-0-101-114.cn-n
orthwest-1.compute.internal | /mxdata_20230321075750/primary/mxseg1
9 | 1 | m | m | s | u | 7000 | ip-10-0-137-193.cn-northwest-1.compute.internal | ip-10-0-137-193.cn-n
orthwest-1.compute.internal | /mxdata_20230321075750/mirror/mxseg1
2 | 2 | p | p | s | u | 6000 | ip-10-0-137-193.cn-northwest-1.compute.internal | ip-10-0-137-193.cn-n
orthwest-1.compute.internal | /mxdata_20230321075750/primary/mxseg2
6 | 2 | m | m | s | u | 7000 | ip-10-0-101-114.cn-northwest-1.compute.internal | ip-10-0-101-114.cn-n
orthwest-1.compute.internal | /mxdata_20230321075750/mirror/mxseg2
3 | 3 | p | p | s | u | 6001 | ip-10-0-137-193.cn-northwest-1.compute.internal | ip-10-0-137-193.cn-n
orthwest-1.compute.internal | /mxdata_20230321075750/primary/mxseg3
7 | 3 | m | m | s | u | 7001 | ip-10-0-101-114.cn-northwest-1.compute.internal | ip-10-0-101-114.cn-n
orthwest-1.compute.internal | /mxdata_20230321075750/mirror/mxseg3
(10 rows)
查看每台主机的主机名,了解当前集群部署在哪些机器上。
=# select distinct(hostname) from gp_segment_configuration ;
hostname
-------------------------------------------------
ip-10-0-101-114.cn-northwest-1.compute.internal
ip-10-0-92-234.cn-northwest-1.compute.internal
ip-10-0-137-193.cn-northwest-1.compute.internal
ip-10-0-128-97.cn-northwest-1.compute.internal
(4 rows)
1.2 安装 YMatrix 5
注意!
此部分命令需要在所有节点上运行。
安装 YMatrix 5 软件。
$ sudo yum install -y matrixdb5-5.0.0+enterprise-1.el7.x86_64.rpm
检查 YMatrix 4 的安装信息。
$ yum info matrixdb
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: download.cf.centos.org
* centos-sclo-rh: download.cf.centos.org
* centos-sclo-sclo: download.cf.centos.org
* epel: mirrors.bfsu.edu.cn
* extras: download.cf.centos.org
* updates: download.cf.centos.org
https://apache.bintray.com/arrow/centos/7/x86_64/repodata/repomd.xml: [Errno 14] curl#51 - "Unable to communicate securely with peer: requested domain name does not match the server's certificate."
Trying other mirror.
Installed Packages
Name : matrixdb
Arch : x86_64
Version : 4.8.1.enterprise
Release : 1.el7
Size : 287 M
Repo : installed
From repo : /matrixdb-4.8.1.enterprise-1.el7.x86_64
Summary : MatrixDB
URL : https://matrixdb.cn
License : MatrixDB License
Description : MatrixDB is a timeseries-optimized database based on Greenplum.
检查 YMatrix 5 的安装信息。
[ec2-user@ip-10-0-128-97 ~]$ yum info matrixdb5
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: download.cf.centos.org
* centos-sclo-rh: download.cf.centos.org
* centos-sclo-sclo: download.cf.centos.org
* epel: mirrors.bfsu.edu.cn
* extras: download.cf.centos.org
* updates: download.cf.centos.org
https://apache.bintray.com/arrow/centos/7/x86_64/repodata/repomd.xml: [Errno 14] curl#51 - "Unable to communicate securely with peer: requested domain name does not match the server's certificate."
Trying other mirror.
Installed Packages
Name : matrixdb5
Arch : x86_64
Version : 5.0.0+enterprise~beta.6
Release : 1.el7
Size : 185 M
Repo : installed
Summary : MatrixDB 5
URL : https://ymatrix.cn
License : MatrixDB License
Description : MatrixDB is a timeseries-optimized database based on Greenplum.
确认 YMatrix 4 集群的 supervisor 服务的状态。
[ec2-user@ip-10-0-128-97 ~]$ systemctl status matrixdb.supervisor.service
● matrixdb.supervisor.service - MatrixDB Supervisord Daemon
Loaded: loaded (/usr/lib/systemd/system/matrixdb.supervisor.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-03-21 07:45:07 UTC; 23min ago
Main PID: 1866 (supervisord)
CGroup: /system.slice/matrixdb.supervisor.service
├─1866 /usr/local/matrixdb/bin/supervisord -c /etc/matrixdb/supervisor.conf
├─1875 /usr/local/matrixdb/bin/mxui
├─1876 /usr/local/matrixdb/bin/cylinder
├─2349 /usr/local/matrixdb-4.8.1.enterprise/bin/postgres -D /mxdata_20230321075750/master/mxseg-1 -p 5432 -c gp_role=disp...
├─2350 postgres: 5432, master logger process
├─2352 postgres: 5432, checkpointer
├─2353 postgres: 5432, background writer
├─2354 postgres: 5432, walwriter
├─2355 postgres: 5432, stats collector
├─2356 postgres: 5432, dtx recovery process con1
├─2357 postgres: 5432, ftsprobe process
├─2360 postgres: 5432, monitor
├─2361 postgres: 5432, matrixgate warden
├─2363 postgres: 5432, logical replication launcher
├─2364 postgres: 5432, ic proxy process
├─2365 postgres: 5432, sweeper process
├─2366 postgres: 5432, global deadlock detector process
├─2397 postgres: 5432, walsender mxadmin 10.0.92.234(34154) streaming 0/C3BD940
├─2431 /usr/local/matrixdb/bin/mxctl telegraf exec --path /usr/local/matrixdb --gpname ip-10-0-128-97.cn-northwest-1.comp...
├─2436 /usr/local/matrixdb/bin/telegraf --config /tmp/mxui_collector_5432.conf
├─2475 postgres: 5432, mxstat reaper con29 cmd17
├─3392 postgres: 5432, mxadmin matrixmgr [local] con29 seg-1 idle
├─4594 postgres: 5432, mxadmin postgres 10.0.128.97(44034) con251 cmd2 idle
└─4598 /usr/lib64/sa/sadc -S DISK 4 2 /tmp/sysstat-141050081
Mar 21 07:45:07 ip-10-0-128-97.cn-northwest-1.compute.internal bash[1866]: time="2023-03-21T07:45:07Z" level=info msg="loaded pro...i]"
Mar 21 07:55:56 ip-10-0-128-97.cn-northwest-1.compute.internal useradd[1989]: new group: name=mxyNKVPS, GID=1002
Mar 21 07:55:56 ip-10-0-128-97.cn-northwest-1.compute.internal useradd[1989]: new user: name=mxyNKVPS, UID=1002, GID=1002, home=/...ash
Mar 21 07:55:56 ip-10-0-128-97.cn-northwest-1.compute.internal userdel[1996]: delete user 'mxyNKVPS'
Mar 21 07:55:56 ip-10-0-128-97.cn-northwest-1.compute.internal userdel[1996]: removed group 'mxyNKVPS' owned by 'mxyNKVPS'
Mar 21 07:55:56 ip-10-0-128-97.cn-northwest-1.compute.internal userdel[1996]: removed shadow group 'mxyNKVPS' owned by 'mxyNKVPS'
Mar 21 07:58:14 ip-10-0-128-97.cn-northwest-1.compute.internal useradd[2094]: new group: name=mxadmin, GID=1002
Mar 21 07:58:14 ip-10-0-128-97.cn-northwest-1.compute.internal useradd[2094]: new user: name=mxadmin, UID=1002, GID=1002, home=/h...ash
Mar 21 07:58:14 ip-10-0-128-97.cn-northwest-1.compute.internal su[2127]: (to mxadmin) root on none
Mar 21 07:58:14 ip-10-0-128-97.cn-northwest-1.compute.internal su[2141]: (to mxadmin) root on none
Hint: Some lines were ellipsized, use -l to show in full.
确认 YMatrix 5 集群的 supervisor 服务的状态。
[ec2-user@ip-10-0-128-97 ~]$ systemctl status matrixdb5.supervisor.service
● matrixdb5.supervisor.service - MatrixDB 5 Supervisord Daemon
Loaded: loaded (/usr/lib/systemd/system/matrixdb5.supervisor.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Tue 2023-03-21 08:12:23 UTC; 1s ago
Process: 5229 ExecStart=/bin/bash -c PATH="$MXHOME/bin:$PATH" exec "$MXHOME"/bin/supervisord -c "$MX_SUPERVISOR_CONF" (code=exited, status=2)
Main PID: 5229 (code=exited, status=2)
Mar 21 08:12:23 ip-10-0-128-97.cn-northwest-1.compute.internal systemd[1]: matrixdb5.supervisor.service: main process exited, cod...ENT
Mar 21 08:12:23 ip-10-0-128-97.cn-northwest-1.compute.internal systemd[1]: Unit matrixdb5.supervisor.service entered failed state.
Mar 21 08:12:23 ip-10-0-128-97.cn-northwest-1.compute.internal systemd[1]: matrixdb5.supervisor.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
注意!
此时因为默认端口冲突的原因,此服务应该是不能启动的状态。
修改 YMatrix 5 集群的 supervisord 和图形化服务(MXUI)的端口号配置文件 /etc/default/matrixdb5
防止与 YMatrix 4 集群的端口冲突。(此处假设 4618
和 8241
端口没有被其他进程占用)
$ cat /etc/default/matrixdb5
MXHOME=/opt/ymatrix/matrixdb5
MXLOGDIR=/var/log/matrixdb5
MXCONFDIR=/etc/matrixdb5
MX_SUPERVISOR_PID_FILE=/var/run/matrixdb5.supervisord.pid
MX_SUPERVISOR_CONF=/etc/matrixdb5/supervisor.conf
MX_SUPERVISOR_INET_GRPC_SERVER_PORT=4617
MX_UI_PORT=8240
MX_DEPLOYER_PORT=4627
export MXHOME
export MXLOGDIR
export MXCONFDIR
export MX_SUPERVISOR_INET_GRPC_SERVER_PORT
将 supervisor 端口 MX_SUPERVISOR_INET_GRPC_SERVER_PORT
从 4617
改为 4618
。
将图形化服务端口 MX_UI_PORT
从 8240
改为 8241
。
[ec2-user@ip-10-0-128-97 ~]$ sudo sed -i s/4617/4618/g /etc/default/matrixdb5
[ec2-user@ip-10-0-128-97 ~]$ sudo sed -i s/8240/8241/g /etc/default/matrixdb5
[ec2-user@ip-10-0-128-97 ~]$ cat /etc/default/matrixdb5
MXHOME=/opt/ymatrix/matrixdb5
MXLOGDIR=/var/log/matrixdb5
MXCONFDIR=/etc/matrixdb5
MX_SUPERVISOR_PID_FILE=/var/run/matrixdb5.supervisord.pid
MX_SUPERVISOR_CONF=/etc/matrixdb5/supervisor.conf
MX_SUPERVISOR_INET_GRPC_SERVER_PORT=4618
MX_UI_PORT=8241
MX_DEPLOYER_PORT=4627
export MXHOME
export MXLOGDIR
export MXCONFDIR
export MX_SUPERVISOR_INET_GRPC_SERVER_PORT
重新启动 YMatrix 5 的 supervisor 服务并重新确认 YMatrix 5 的 supervisor 服务的状态。
$ sudo systemctl restart matrixdb5.supervisor.service
$ sudo systemctl status matrixdb5.supervisor.service
● matrixdb5.supervisor.service - MatrixDB 5 Supervisord Daemon
Loaded: loaded (/usr/lib/systemd/system/matrixdb5.supervisor.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-03-21 08:27:02 UTC; 19s ago
Process: 9483 ExecStop=/bin/bash -c exec "$MXHOME"/bin/supervisorctl shutdown (code=exited, status=0/SUCCESS)
Main PID: 9488 (supervisord)
CGroup: /system.slice/matrixdb5.supervisor.service
├─9488 /opt/ymatrix/matrixdb5/bin/supervisord -c /etc/matrixdb5/supervisor.conf
└─9496 /opt/ymatrix/matrixdb5/bin/mxui
Mar 21 08:27:02 ip-10-0-128-97.cn-northwest-1.compute.internal systemd[1]: Started MatrixDB 5 Supervisord Daemon.
Mar 21 08:27:02 ip-10-0-128-97.cn-northwest-1.compute.internal bash[9488]: time="2023-03-21T08:27:02Z" level=info msg="load confi...onf
Mar 21 08:27:02 ip-10-0-128-97.cn-northwest-1.compute.internal bash[9488]: time="2023-03-21T08:27:02Z" level=info msg="load confi...t "
Mar 21 08:27:02 ip-10-0-128-97.cn-northwest-1.compute.internal bash[9488]: time="2023-03-21T08:27:02Z" level=info msg="load confi...onf
Mar 21 08:27:02 ip-10-0-128-97.cn-northwest-1.compute.internal bash[9488]: time="2023-03-21T08:27:02Z" level=info msg="load confi...ile
Mar 21 08:27:02 ip-10-0-128-97.cn-northwest-1.compute.internal bash[9488]: time="2023-03-21T08:27:02Z" level=info msg="loaded pro...i]"
Hint: Some lines were ellipsized, use -l to show in full.
检查原有 YMatrix 4 是否正常。
[ec2-user@ip-10-0-128-97 ~]$ sudo su - mxadmin
Last login: Tue Mar 21 08:28:34 UTC 2023
********** MatrixDB Administrator **********
The MatrixDB on 5432 is up for 00:30:56
Connect matrixdb with
psql postgres
********************************************
[mxadmin@ip-10-0-128-97 ~]$ psql postgres
psql (12)
Type "help" for help.
postgres=# select version();
versi
on
---------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 12 (MatrixDB 4.8.1-enterprise) (Greenplum Database 7.0.0+dev.18290.g7184139e3e build commit:7184139e3ebba8b77239ec19db63c04
bd43951b6) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9), 64-bit compiled on Mar 21 2023 06:51:57
(1 row)
可以看到 YMatrix 4 并没有受到影响,依然服务在 5432
端口。
1.3 初始化 YMatrix 5
使用浏览器访问以下图形化安装向导 URL,IP 为 Master 主机的 IP:
http://<IP>:8241/
按照 5 数据库部署 说明在图形化界面上完成集群初始化。
注意!
在执行部署
前的确认页面,图形化界面自动分配了5433
作为新的 Master 端口,数据目录也规避了原有的集群,使得原有 YMatrix 4 集群和即将创建的 YMatrix5 集群能够并存。确认无误后点击“执行部署”,等待部署成功即可。
修改 mxadmin 用户的 ~/.bash_profile
以便能切换 4 / 5 的环境。删除 ~/.bash_profile
的以下内容,防止它们同时 source 引发冲突。
if [ -f ~/.matrixdb.env ]; then
source ~/.matrixdb.env
fi
if [ -f ~/.matrixdb5.env ]; then
source ~/.matrixdb5.env
fi
注意!
此步骤需要在 Master 和 Standby 上操作。
随后用新的 Login Session 登入 mxadmin 用户。
如果要访问 YMatrix 5 数据库,在 mxadmin 用户下 source ~/.matrixdb5.env
。
查看当前 YMatrix 5 集群的状态。
$ sudo su - mxadmin
Last login: Tue Mar 21 11:36:55 UTC 2023 on pts/0
$ source ~/.matrixdb5.env
********** MatrixDB Administrator **********
The MatrixDB on 5433 is up for 03:01:21
Connect matrixdb with
psql postgres
********************************************
$ psql -p 5433 postgres
psql (12)
Type "help" for help.
postgres=# select version();
v
ersion
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
-----
PostgreSQL 12 (MatrixDB 5.0.0-beta.6+enterprise) (Greenplum Database 7.0.0+dev.20409.gf30a45b118 build commit:f30a45b118f626c84b580ffa
7a0226a673ccae70) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9), 64-bit compiled on Mar 21 2023 02:0
5:03
(1 row)
postgres=# select * from gp_segment_configuration order by content, dbid;
dbid | content | role | preferred_role | mode | status | port | hostname |
address | datadir
------+---------+------+----------------+------+--------+------+-------------------------------------------------+---------------------
----------------------------+----------------------------------------
1 | -1 | p | p | s | u | 5433 | ip-10-0-128-97.cn-northwest-1.compute.internal | ip-10-0-128-97.cn-no
rthwest-1.compute.internal | /mxdata_20230321083551/master/mxseg-1
10 | -1 | m | m | s | u | 5433 | ip-10-0-92-234.cn-northwest-1.compute.internal | ip-10-0-92-234.cn-no
rthwest-1.compute.internal | /mxdata_20230321083551/standby/mxseg-1
4 | 0 | p | p | s | u | 6002 | ip-10-0-101-114.cn-northwest-1.compute.internal | ip-10-0-101-114.cn-n
orthwest-1.compute.internal | /mxdata_20230321083551/primary/mxseg0
8 | 0 | m | m | s | u | 7003 | ip-10-0-137-193.cn-northwest-1.compute.internal | ip-10-0-137-193.cn-n
orthwest-1.compute.internal | /mxdata_20230321083551/mirror/mxseg0
5 | 1 | p | p | s | u | 6003 | ip-10-0-101-114.cn-northwest-1.compute.internal | ip-10-0-101-114.cn-n
orthwest-1.compute.internal | /mxdata_20230321083551/primary/mxseg1
9 | 1 | m | m | s | u | 7002 | ip-10-0-137-193.cn-northwest-1.compute.internal | ip-10-0-137-193.cn-n
orthwest-1.compute.internal | /mxdata_20230321083551/mirror/mxseg1
2 | 2 | p | p | s | u | 6002 | ip-10-0-137-193.cn-northwest-1.compute.internal | ip-10-0-137-193.cn-n
orthwest-1.compute.internal | /mxdata_20230321083551/primary/mxseg2
6 | 2 | m | m | s | u | 7002 | ip-10-0-101-114.cn-northwest-1.compute.internal | ip-10-0-101-114.cn-n
orthwest-1.compute.internal | /mxdata_20230321083551/mirror/mxseg2
3 | 3 | p | p | s | u | 6003 | ip-10-0-137-193.cn-northwest-1.compute.internal | ip-10-0-137-193.cn-n
orthwest-1.compute.internal | /mxdata_20230321083551/primary/mxseg3
7 | 3 | m | m | s | u | 7003 | ip-10-0-101-114.cn-northwest-1.compute.internal | ip-10-0-101-114.cn-n
orthwest-1.compute.internal | /mxdata_20230321083551/mirror/mxseg3
(10 rows)
postgres=# select distinct(hostname) from gp_segment_configuration;
hostname
-------------------------------------------------
ip-10-0-101-114.cn-northwest-1.compute.internal
ip-10-0-92-234.cn-northwest-1.compute.internal
ip-10-0-137-193.cn-northwest-1.compute.internal
ip-10-0-128-97.cn-northwest-1.compute.internal
(4 rows)
如果要访问 YMatrix 4 数据库,在 mxadmin 用户下 source ~/.matrixdb.env
。
[ec2-user@ip-10-0-128-97 ~]$ sudo su - mxadmin
Last login: Tue Mar 21 11:37:38 UTC 2023 on pts/0
[mxadmin@ip-10-0-128-97 ~]$ source ~/.matrixdb.env
********** MatrixDB Administrator **********
The MatrixDB on 5432 is up for 03:59:57
Connect matrixdb with
psql postgres
********************************************
[mxadmin@ip-10-0-128-97 ~]$ psql postgres
psql (12)
Type "help" for help.
postgres=# select version();
versi
on
---------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 12 (MatrixDB 4.8.1-enterprise) (Greenplum Database 7.0.0+dev.18290.g7184139e3e build commit:7184139e3ebba8b77239ec19db63c04
bd43951b6) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9), 64-bit compiled on Mar 21 2023 06:51:57
(1 row)
至此,YMatrix 5 已经在 YMatrix 4 的原有机器集群上部署完成。
1.4 为 YMatrix 5 部署监控
请见:
2 在新服务器上部署新的 YMatrix 5 集群
此方案需要部署好新集群后使用 mxshift 做数据迁移。
详细部署步骤请见:
详细迁移步骤请见: