
今天老杨让我帮忙提供一套MogDB环境用于安全测试,顺手简单做了一下相关测试,没想到如此简单,简直惊到我了。简单记录一下,供大家学习参考!
##如何快速部署一套MogDB环境
1、安装ptk
[root@yashandb1 ~]# curl --proto '=https' --tlsv1.2 -sSf https://cdn-mogdb.enmotech.com/ptk/install.sh | shDownloading ptk package...Detected shell: bashShell profile: root/.bash_profileptk has been added to PATH in root/.bash_profileopen a new terminal or source root/.bash_profile to active itInstalled path: root/.ptk/bin/ptk
如果你的环境无法连外网,那么也可以手工安装ptk,也是非常简单的,直接下载即可(https://docs.mogdb.io/zh/ptk/v1.1/install)。
2、检查安装环境是否符合数据库安装要求
[root@yashandb1 ~]# ptk checkos -f config.yamlINFO[2024-02-20T20:12:02.251] prechecking dependent tools...WARN[2024-02-20T20:12:02.411] [172.20.22.146][omm] device(/dev/sdd) readahead value=8192, expect 16384.WARN[2024-02-20T20:12:02.411] [172.20.22.146][omm] device(/dev/sda) readahead value=8192, expect 16384.WARN[2024-02-20T20:12:02.411] [172.20.22.146][omm] device(/dev/sdb) readahead value=8192, expect 16384.WARN[2024-02-20T20:12:02.411] [172.20.22.146][omm] device(/dev/sdc) readahead value=8192, expect 16384.INFO[2024-02-20T20:12:02.527] [172.20.22.146][omm] check port 26000INFO[2024-02-20T20:12:02.550] [172.20.22.146][omm] port 26000 is freeINFO[2024-02-20T20:12:02.561] [172.20.22.146][omm] swap memory 8257532kB, total memory 16265908kBWARN[2024-02-20T20:12:02.581] [172.20.22.146][omm] net.ipv4.tcp_keepalive_time=7200, expect 30WARN[2024-02-20T20:12:02.591] [172.20.22.146][omm] net.ipv4.tcp_rmem=4096 87380 6291456, expect 8192 250000 16777216WARN[2024-02-20T20:12:02.614] [172.20.22.146][omm] vm.min_free_kbytes=67584, expect 813295WARN[2024-02-20T20:12:02.644] [172.20.22.146][omm] net.ipv4.tcp_tw_recycle=0, expect 1WARN[2024-02-20T20:12:02.662] [172.20.22.146][omm] net.ipv4.tcp_syn_retries=6, expect 5ERRO[2024-02-20T20:12:02.671] [172.20.22.146][omm] net.core.rmem_default=212992, expect 262144WARN[2024-02-20T20:12:02.682] [172.20.22.146][omm] net.ipv4.tcp_retries2=15, expect 12ERRO[2024-02-20T20:12:02.691] [172.20.22.146][omm] net.core.wmem_max=212992, expect 1048576ERRO[2024-02-20T20:12:02.710] [172.20.22.146][omm] kernel.sem=250 32000 32 128, expect 250 6400000 1000 25600WARN[2024-02-20T20:12:02.729] [172.20.22.146][omm] net.ipv4.tcp_wmem=4096 16384 4194304, expect 8192 250000 16777216WARN[2024-02-20T20:12:02.738] [172.20.22.146][omm] net.ipv4.tcp_max_syn_backlog=512, expect 65535WARN[2024-02-20T20:12:02.748] [172.20.22.146][omm] net.core.netdev_max_backlog=1000, expect 65535ERRO[2024-02-20T20:12:02.757] [172.20.22.146][omm] net.core.rmem_max=212992, expect 1048576ERRO[2024-02-20T20:12:02.767] [172.20.22.146][omm] net.core.wmem_default=212992, expect 262144WARN[2024-02-20T20:12:02.776] [172.20.22.146][omm] net.ipv4.tcp_tw_reuse=0, expect 1WARN[2024-02-20T20:12:02.786] [172.20.22.146][omm] net.ipv4.tcp_keepalive_intvl=75, expect 30WARN[2024-02-20T20:12:02.796] [172.20.22.146][omm] net.core.somaxconn=128, expect 65535WARN[2024-02-20T20:12:02.835] [172.20.22.146][omm] net.ipv4.tcp_retries1=3, expect 5INFO[2024-02-20T20:12:02.854] [172.20.22.146][omm] check kernel.core_patternINFO[2024-02-20T20:12:02.874] [172.20.22.146][omm] check RemoveIPC valueINFO[2024-02-20T20:12:02.896] [172.20.22.146][omm] check KillUserProcesses valueINFO[2024-02-20T20:12:02.960] [172.20.22.146][omm] kernel version: 3.10.0-1160.el7.x86_64INFO[2024-02-20T20:12:02.971] [172.20.22.146][omm] locale: LANG=en_US.UTF-8WARN[2024-02-20T20:12:02.982] [172.20.22.146][omm] device(sda) 'IO Request'=128, expect 256WARN[2024-02-20T20:12:02.983] [172.20.22.146][omm] device(sdb) 'IO Request'=128, expect 256WARN[2024-02-20T20:12:02.983] [172.20.22.146][omm] device(sdc) 'IO Request'=128, expect 256WARN[2024-02-20T20:12:02.983] [172.20.22.146][omm] device(sdd) 'IO Request'=128, expect 256ERRO[2024-02-20T20:12:03.039] [172.20.22.146][omm] transparent_hugepage status is 'always', expect 'never'INFO[2024-02-20T20:12:03.051] [172.20.22.146][omm] platform: rhel_7.9_64bitINFO[2024-02-20T20:12:03.062] [172.20.22.146][omm] timezone: +0800ERRO[2024-02-20T20:12:11.275] [172.20.22.146][omm] not found package: numactlINFO[2024-02-20T20:12:11.276] all checkers finishedINFO[2024-02-20T20:12:11.276] write fix os script to root_fix_os.0220.201211.sh successINFO[2024-02-20T20:12:11.276] time elapsed: 9s# Check ResultsItem | Level------------------------------------+-----------A1.Check_OS_Version | OKA2.Check_Kernel_Version | OKA3.Check_Unicode | OKA4.Check_TimeZone | OKA5.Check_Swap_Memory_Configure | OKA6.Check_SysCtl_Parameter | AbnormalA7.Check_FileSystem_Configure | OKA8.Check_Disk_Configure | OKA9.Check_BlockDev_Configure | WarningA9.Check_Logical_Block | OKA10.Check_NR_Request | WarningA10.Check_Asynchronous_IO_Request | OKA10.Check_IO_Configure | OKA11.Check_Network_Configure | OKA12.Check_Time_Consistency | OKA13.Check_Firewall_Status | OKA14.Check_THP_Status | AbnormalA15.Check_Dependent_Package | AbnormalA16.Check_CPU_Instruction_Set | OKA17.Check_Port | OKA18.Check_Selinux | OKA19.Check_User_Ulimit | OKTotal count 22, abnormal count 3, warning count 2Failed to check os, can’t perform installation unless fix all the abnormal items.You can use 'ptk checkos -i ITEM --detail' to get detail messagePlease check root_fix_os.0220.201211.sh for commands to resolve.
使用ptk在检查的过程中,无法发现有异常,运行root_fix_os 脚本即可。
[root@yashandb1 ~]# ./root_fix_os.0220.201211.shnet.core.rmem_default = 262144net.core.wmem_max = 1048576kernel.sem = 250 6400000 1000 25600net.core.rmem_max = 1048576net.core.wmem_default = 262144WARNING: You should reboot host to disable transparent huge pages(THP) permanently!Loaded plugins: product-id, search-disabled-repos, subscription-managerThis system is not registered with an entitlement server. You can use subscription-manager to register.
3、一条命令完成数据库安装部署
[root@yashandb1 ~]# ptk install -f config.yamlINFO[2024-02-20T20:18:47.232] PTK Version: 1.3.0 releaseINFO[2024-02-20T20:18:47.232] load config from config.yamlIf you continue to install the software,you are accepting the license agreement of the software.[Y]: Accept and continue[C]: Show content of licence agreement[N]: Abort installation and exit✔ Please enter (default: Y):Cluster Name: "mogdb1"+--------------+---------------+-------------+-------+---------+-----------------+----------+| az(priority) | ip | user(group) | port | role | data dir | upstream |+--------------+---------------+-------------+-------+---------+-----------------+----------+| AZ1(1) | 172.20.22.146 | omm(omm) | 26000 | primary | opt/mogdb/data | - |+--------------+---------------+-------------+-------+---------+-----------------+----------+✔ Is cluster config correct (default=n) [y/n]: yINFO[2024-02-20T20:18:49.609] start check hostname ...INFO[2024-02-20T20:18:49.623] check hostname successINFO[2024-02-20T20:18:49.623] start check os ...INFO[2024-02-20T20:18:49.623] prechecking dependent tools...INFO[2024-02-20T20:18:49.740] [172.20.22.146][omm] swap memory 8257532kB, total memory 16265908kBINFO[2024-02-20T20:18:58.423] [172.20.22.146][omm] check port 26000INFO[2024-02-20T20:18:58.441] [172.20.22.146][omm] port 26000 is freeINFO[2024-02-20T20:18:58.460] [172.20.22.146][omm] platform: rhel_7.9_64bitINFO[2024-02-20T20:18:58.469] [172.20.22.146][omm] kernel version: 3.10.0-1160.el7.x86_64WARN[2024-02-20T20:18:58.487] [172.20.22.146][omm] net.ipv4.tcp_keepalive_intvl=75, expect 30WARN[2024-02-20T20:18:58.504] [172.20.22.146][omm] net.core.somaxconn=128, expect 65535WARN[2024-02-20T20:18:58.524] [172.20.22.146][omm] net.ipv4.tcp_keepalive_time=7200, expect 30WARN[2024-02-20T20:18:58.535] [172.20.22.146][omm] net.ipv4.tcp_syn_retries=6, expect 5WARN[2024-02-20T20:18:58.545] [172.20.22.146][omm] net.core.netdev_max_backlog=1000, expect 65535WARN[2024-02-20T20:18:58.573] [172.20.22.146][omm] net.ipv4.tcp_tw_recycle=0, expect 1WARN[2024-02-20T20:18:58.583] [172.20.22.146][omm] net.ipv4.tcp_rmem=4096 87380 6291456, expect 8192 250000 16777216WARN[2024-02-20T20:18:58.593] [172.20.22.146][omm] net.ipv4.tcp_max_syn_backlog=512, expect 65535WARN[2024-02-20T20:18:58.667] [172.20.22.146][omm] vm.min_free_kbytes=67584, expect 813295WARN[2024-02-20T20:18:58.695] [172.20.22.146][omm] net.ipv4.tcp_tw_reuse=0, expect 1WARN[2024-02-20T20:18:58.715] [172.20.22.146][omm] net.ipv4.tcp_retries1=3, expect 5WARN[2024-02-20T20:18:58.726] [172.20.22.146][omm] net.ipv4.tcp_wmem=4096 16384 4194304, expect 8192 250000 16777216WARN[2024-02-20T20:18:58.758] [172.20.22.146][omm] net.ipv4.tcp_retries2=15, expect 12INFO[2024-02-20T20:18:58.768] [172.20.22.146][omm] check kernel.core_patternINFO[2024-02-20T20:18:58.788] [172.20.22.146][omm] check RemoveIPC valueINFO[2024-02-20T20:18:58.811] [172.20.22.146][omm] check KillUserProcesses valueWARN[2024-02-20T20:18:58.863] [172.20.22.146][omm] device(sdc) 'IO Request'=128, expect 256WARN[2024-02-20T20:18:58.863] [172.20.22.146][omm] device(sdd) 'IO Request'=128, expect 256WARN[2024-02-20T20:18:58.863] [172.20.22.146][omm] device(sda) 'IO Request'=128, expect 256WARN[2024-02-20T20:18:58.863] [172.20.22.146][omm] device(sdb) 'IO Request'=128, expect 256INFO[2024-02-20T20:18:58.921] [172.20.22.146][omm] timezone: +0800WARN[2024-02-20T20:18:58.959] [172.20.22.146][omm] device(/dev/sda) readahead value=8192, expect 16384.WARN[2024-02-20T20:18:58.960] [172.20.22.146][omm] device(/dev/sdb) readahead value=8192, expect 16384.WARN[2024-02-20T20:18:58.960] [172.20.22.146][omm] device(/dev/sdc) readahead value=8192, expect 16384.WARN[2024-02-20T20:18:58.960] [172.20.22.146][omm] device(/dev/sdd) readahead value=8192, expect 16384.INFO[2024-02-20T20:18:59.005] [172.20.22.146][omm] locale: LANG=en_US.UTF-8INFO[2024-02-20T20:18:59.025] all checkers finishedINFO[2024-02-20T20:18:59.025] time elapsed: 9sINFO[2024-02-20T20:18:59.026] check os successINFO[2024-02-20T20:18:59.026] start check distro ...INFO[2024-02-20T20:18:59.026] check distro successINFO[2024-02-20T20:18:59.026] start check user ...INFO[2024-02-20T20:18:59.038] check user successINFO[2024-02-20T20:18:59.038] start check port ...INFO[2024-02-20T20:18:59.080] check port successINFO[2024-02-20T20:18:59.091] [172.20.22.146][omm] create os user omm, group ommINFO[2024-02-20T20:18:59.197] [172.20.22.146][omm] set ulimit configsINFO[2024-02-20T20:18:59.205] start prepare installation package ...INFO[2024-02-20T20:18:59.205] no package specified, use online package: https://cdn-mogdb.enmotech.com/mogdb-media/5.0.5/CentOS_x86_64/MogDB-5.0.5-CentOS-x86_64-all.tar.gzINFO[2024-02-20T20:18:59.205] downloading MogDB-5.0.5-CentOS-x86_64-all.tar.gz ...> MogDB-5.0.5-CentOS-x86_64-a...: 129.20 MiB 131.30 MiB [------------------------------------------------------------------------------------------------------------------------->_] 98.40% 11.15 MiB p/s ETA 0s> MogDB-5.0.5-CentOS-x86_64-a...: 131.30 MiB 131.30 MiB [-----------------------------------------------------------------------------------------------------------------------------] 100.00% 11.31 MiB p/s 12sINFO[2024-02-20T20:19:11.311] installation package is readyINFO[2024-02-20T20:19:11.311] start validate installation package ...INFO[2024-02-20T20:19:15.430] db product: MogDB, version: 5.0.5, number: 92.901, commit_id: b77f1a82INFO[2024-02-20T20:19:15.430] validate installation package successINFO[2024-02-20T20:19:15.431] start complete the configuration ...✔ Please enter db password (8~15 characters, 3 classes): ********✔ Retype db password: ********INFO[2024-02-20T20:19:40.333] complete the configuration successINFO[2024-02-20T20:19:40.334] start distribute installation package ...INFO[2024-02-20T20:19:40.539] distrubite packages successINFO[2024-02-20T20:19:40.539] start install logic nodes ...INFO[2024-02-20T20:19:40.539] deploy db to omm@172.20.22.146INFO[2024-02-20T20:19:40.540] [172.20.22.146][omm] make user omm's dir(s): opt/mogdbINFO[2024-02-20T20:19:40.855] [172.20.22.146][omm] clean user omm's ipc resourceINFO[2024-02-20T20:19:41.005] [172.20.22.146][omm] make user omm's dir(s): opt/mogdb/tool,/opt/mogdb/tool/ptk_tool/binINFO[2024-02-20T20:19:41.336] [172.20.22.146][omm] extract MogDB-5.0.5-CentOS-x86_64-all.tar.gz to dir opt/mogdb/toolINFO[2024-02-20T20:19:43.766] [172.20.22.146][omm] extract MogDB-5.0.5-CentOS-64bit-om.tar.gz to dir opt/mogdb/toolINFO[2024-02-20T20:19:44.616] [172.20.22.146][omm] try to fix psutil python libWARN[2024-02-20T20:19:44.649] [172.20.22.146][omm] Not found python3, skip fix psutil dynamic lib,please install proper python and fix it manually or reinstall by ptkif you don't fix this, it will cause that gs_om and cm_ctl cannot run properly, but not ptk and databaseINFO[2024-02-20T20:19:44.649] [172.20.22.146][omm] write file opt/mogdb/tool/ptk_tool/bin/README.mdINFO[2024-02-20T20:19:44.754] [172.20.22.146][omm] write file opt/mogdb/tool/ptk_tool/bin/pscpINFO[2024-02-20T20:19:44.864] [172.20.22.146][omm] write file opt/mogdb/tool/ptk_tool/bin/psshINFO[2024-02-20T20:19:44.971] [172.20.22.146][omm] write file opt/mogdb/tool/ptk_tool/bin/task_pool.pyINFO[2024-02-20T20:19:45.078] [172.20.22.146][omm] make user omm's dir(s): opt/mogdb/appINFO[2024-02-20T20:19:45.183] [172.20.22.146][omm] extract MogDB-5.0.5-CentOS-64bit.tar.gz to dir opt/mogdb/appINFO[2024-02-20T20:19:51.204] [172.20.22.146][omm] change mode of opt/mogdb/app to 700INFO[2024-02-20T20:19:51.265] [172.20.22.146][omm] make user omm's dir(s): opt/mogdb/app/share/postgresqlINFO[2024-02-20T20:19:51.422] [172.20.22.146][omm] copy opt/mogdb/tool/script/gspylib/etc/sql/pmk_schema.sql to opt/mogdb/app/share/postgresql if existINFO[2024-02-20T20:19:51.457] [172.20.22.146][omm] copy /opt/mogdb/tool/script/gspylib/etc/sql/pmk_schema_single_inst.sql to /opt/mogdb/app/share/postgresql if existINFO[2024-02-20T20:19:51.491] [172.20.22.146][omm] write file /opt/mogdb/app/bin/transfer.pyINFO[2024-02-20T20:19:51.558] [172.20.22.146][omm] set user omm profilesINFO[2024-02-20T20:19:51.963] [172.20.22.146][omm] validate and try to fix ld library for gs_initdbINFO[2024-02-20T20:19:52.012] [172.20.22.146][omm] validate and try to fix ld library for mogdbINFO[2024-02-20T20:19:52.066] [172.20.22.146][omm] make user omm's dir(s): /opt/mogdb/log/gs_profile,/opt/mogdb/log/pg_log,/opt/mogdb/log/pg_audit,/opt/mogdb/log/bin,/opt/mogdb/log/pg_log/dn_6001,/opt/mogdb/log/pg_audit/dn_6001INFO[2024-02-20T20:19:52.960] [172.20.22.146][omm] make user omm's dir(s): /opt/mogdb/tmpINFO[2024-02-20T20:19:53.061] [172.20.22.146][omm] save version to upgrade_versionINFO[2024-02-20T20:19:53.224] [172.20.22.146][omm] create file cluster_manual_startINFO[2024-02-20T20:19:53.262] [172.20.22.146][omm] generate cluster_static_config fileINFO[2024-02-20T20:19:53.338] [172.20.22.146][omm] make user omm's dir(s): /opt/mogdb/dataINFO[2024-02-20T20:19:53.446] [172.20.22.146][omm] write file /opt/mogdb/tool/.ptk_deployerINFO[2024-02-20T20:19:53.520] generate certification filesINFO[2024-02-20T20:19:55.505] download certification filesINFO[2024-02-20T20:19:56.171] certification files setup successINFO[2024-02-20T20:19:56.171] initialize db on omm@172.20.22.146INFO[2024-02-20T20:19:56.207] [172.20.22.146][omm] the database is initializing, please wait a few minutesINFO[2024-02-20T20:20:28.958] [172.20.22.146][omm] config postgresql.confINFO[2024-02-20T20:20:29.121] [172.20.22.146][omm] config pg_hba.confINFO[2024-02-20T20:20:29.195] [172.20.22.146][omm] copy ssl files to data dirINFO[2024-02-20T20:20:29.244] logic nodes installed successINFO[2024-02-20T20:20:29.244] generating ptkc ...INFO[2024-02-20T20:20:29.543] start build ssh trust ...INFO[2024-02-20T20:20:29.902] ssh trust build successINFO[2024-02-20T20:20:29.903] start launch db ...INFO[2024-02-20T20:20:29.903] [172.20.22.146][omm] start db using gs_ctl ...INFO[2024-02-20T20:20:29.903] [172.20.22.146][omm] the database is starting, please wait a few minutesINFO[2024-02-20T20:20:33.163] [172.20.22.146][omm] start db successINFO[2024-02-20T20:20:34.164] [172.20.22.146][omm] start alter db initial password ...INFO[2024-02-20T20:20:34.341] [172.20.22.146][omm] alter db password successINFO[2024-02-20T20:20:34.342] launch db successINFO[2024-02-20T20:20:34.342] clear temp dirs ...INFO[2024-02-20T20:20:34.402] clear temp dirs successINFO[2024-02-20T20:20:34.403] time elapsed: 1m46scluste_name | host | user | port | status | message--------------+---------------+------+-------+---------------+----------mogdb1 | 172.20.22.146 | omm | 26000 | start_success | success
足够简单了吧!1分46秒即可完成数据库软件安装。当然这里通过ptk去进行在线安装仍然需要链接外网,如果你的环境无法连外网,那么可以提前下载好数据库软件安装包,通过ptk进行离线安装。
[root@yashandb1 ~]# su - omm[omm@yashandb1 ~]$ gsql -d postgres -p26000gsql ((MogDB 5.0.5 build b77f1a82) compiled at 2023-12-08 03:11:47 commit 0 last mr 1804 )Non-SSL connection (SSL connection is recommended when requiring high-security)Type "help" for help.MogDB=# \l+List of databasesName | Owner | Encoding | Collate | Ctype | Access privileges | Compatibility | Size | Tablespace | Description-----------+-------+----------+---------+-------+-------------------+---------------+-------+------------+--------------------------------------------postgres | omm | UTF8 | C | C | | A | 29 MB | pg_default | default administrative connection databasetemplate0 | omm | UTF8 | C | C | =c/omm +| A | 25 MB | pg_default | default template for new databases| | | | | omm=CTc/omm | | | |template1 | omm | UTF8 | C | C | =c/omm +| A | 25 MB | pg_default | unmodifiable empty database| | | | | omm=CTc/omm | | | |(3 rows)MogDB=#
是不是非常的简单!
接下来我再给大家演示一下如何通过ptk一键升级一套MogDB主备集群,仍然是只需要一条命令即可。首先来看下我当前的这套测试环境,是MogDB 5.0.3,一主一丛架构,我们提前下载好MogDB 最新版本补丁包5.0.5.
1、检查集群环境和状态
[root@mogdb1 ~]# ptk cluster status -n test[ Cluster State ]cluster_name : testcluster_state : Normaldatabase_version : MogDB 5.0.3 (build 86d963ad)[ Datanode State ]cluster_name | id | ip | port | user | nodename | db_role | state | uptime | upstream---------------+------+---------------+-------+------+----------+---------+--------+------------------+-----------test | 6001 | 172.20.22.125 | 26000 | omm | dn_6001 | primary | Normal | 21 days 23:36:47 | -| 6002 | 172.20.22.128 | 26000 | omm | dn_6002 | standby | Normal | 21 days 23:36:43 | -[root@mogdb1 ~]#[root@mogdb1 ~]# cd /opt/soft/[root@mogdb1 soft]# ls -ltr MogDB-*-rw-r--r-- 1 root root 137845317 Jul 28 2023 MogDB-5.0.0-CentOS-x86_64-all.tar.gz-rw-r--r-- 1 root root 139260078 Aug 4 2023 MogDB-3.0.3-CentOS-x86_64.tar.gz-rw-r--r-- 1 root root 137677267 Jan 19 15:41 MogDB-5.0.5-CentOS-x86_64-all.tar.gz[root@mogdb1 soft]#
2、检查数据库是否安装插件
[root@mogdb1 soft]# ptk cluster -n test list-plugins[[log_fdw] [hstore] [file_fdw] [dist_fdw] [security_plugin] [plpgsql]][[log_fdw] [hstore] [file_fdw] [dist_fdw] [security_plugin] [plpgsql] [pageinspect]][[log_fdw] [dolphin] [hstore] [file_fdw] [dist_fdw] [security_plugin] [plpgsql]][[log_fdw] [dolphin] [hstore] [file_fdw] [dist_fdw] [security_plugin] [plpgsql]][[log_fdw] [hstore] [file_fdw] [dist_fdw] [security_plugin] [plpgsql]][[log_fdw] [hstore] [file_fdw] [dist_fdw] [security_plugin] [plpgsql]]List of Installed Plugins:Plugin Name | dn_6001 | dn_6002---------------+---------+----------postgres_fdw | Yes | Yesdblink | Yes | YesExtension Status of Databases:Database | Extension(s)---------------+---------------mdb_repo |postgres |banben_mngdb |datab |test |aa |
可以看到,我这里的环境安装了2个插件,一个是postgres_fdw,另外一个是dblink插件。如果有安装插件的话,那么需要提前下载最新版本的插件软件版本。
[root@mogdb1 plugins]# ls -ltrtotal 92drwxr-xr-x 2 omm omm 107 Oct 22 2022 pg_trgmdrwxr-xr-x 2 omm omm 103 Oct 22 2022 dblinkdrwxr-xr-x 2 omm omm 80 Oct 22 2022 pg_prewarmdrwxr-xr-x 2 omm omm 69 Oct 22 2022 orafcedrwxr-xr-x 2 omm omm 96 Oct 22 2022 pg_repackdrwxr-xr-x 2 omm omm 25 Oct 22 2022 wal2jsondrwxr-xr-x 2 omm omm 297 Oct 22 2022 pg_bulkloaddrwxr-xr-x 2 omm omm 65 Oct 22 2022 whaledrwxr-xr-x 2 omm omm 71 Oct 22 2022 dolphindrwxr-xr-x 2 omm omm 4096 Oct 22 2022 postgis-rw-r--r-- 1 omm omm 3960 Oct 22 2022 desc.json-rw-r--r-- 1 root root 30167 Feb 20 16:45 dblink-1.0-5.0.5-01-CentOS-x86_64.tar.gz-rw-r--r-- 1 root root 51740 Feb 20 16:45 postgres_fdw-1.0-5.0.5-01-CentOS-x86_64.tar.gz[root@mogdb1 plugins]# pwd/opt/soft/plugins[root@mogdb1 plugins]#
3、准备工作就绪后,就一键升级吧
[root@mogdb1 ~]# ptk cluster -n test upgrade -y -p /opt/soft/MogDB-5.0.5-CentOS-x86_64-all.tar.gz --plugin-dir /opt/soft/pluginsINFO[2024-02-21T00:51:12.137] PTK Version: 1.3.0 releaseINFO[2024-02-21T00:51:12.137] upgrade mode: replaceINFO[2024-02-21T00:51:12.141] new step recorder, current step: "start"Tip:The upgrade process relies on SSH.Please ensure that the network is always workedduring the upgrade process.INFO[2024-02-21T00:51:12.141] parsing package from /opt/soft/MogDB-5.0.5-CentOS-x86_64-all.tar.gzINFO[2024-02-21T00:51:14.425] kernel package name: MogDB-5.0.5-CentOS-64bit.tar.gzINFO[2024-02-21T00:51:14.425] package version: MogDB-5.0.5,92.901,b77f1a82INFO[2024-02-21T00:51:14.425] check db versionINFO[2024-02-21T00:51:14.518] big upgrade: trueINFO[2024-02-21T00:51:14.518] current version: 5.0.3, target version: 5.0.5INFO[2024-02-21T00:51:14.519] current number: 92.900, target number: 92.901INFO[2024-02-21T00:51:14.621] version is okINFO[2024-02-21T00:51:14.622] prepare all upgrade sqlINFO[2024-02-21T00:51:15.353] extract upgrade_sql.tar.gz successfullyWARN[2024-02-21T00:51:15.353] no sql file found for upgrade maindbWARN[2024-02-21T00:51:15.353] no sql file found for upgrade otherdbWARN[2024-02-21T00:51:15.354] no sql file found for rollback maindbWARN[2024-02-21T00:51:15.354] no sql file found for rollback otherdbINFO[2024-02-21T00:51:15.405] check cluster statusINFO[2024-02-21T00:51:15.555] cluster state is okINFO[2024-02-21T00:51:15.556] check db config: enable_stream_replicationINFO[2024-02-21T00:51:15.609] config is ok: enable_stream_replication=onINFO[2024-02-21T00:51:15.609] create remote temporary upgrade directoryINFO[2024-02-21T00:51:15.650] set cluster to read-onlyINFO[2024-02-21T00:51:15.687] begin: wait_xlog_syncINFO[2024-02-21T00:51:15.687] check disk sizeINFO[2024-02-21T00:51:16.409] check and wait xlog syncINFO[2024-02-21T00:51:16.460] finished: wait_xlog_syncINFO[2024-02-21T00:51:16.460] begin: backup_old_filesINFO[2024-02-21T00:51:16.460] backup old app and toolINFO[2024-02-21T00:51:38.395] finished: backup_old_filesINFO[2024-02-21T00:51:38.396] begin: exec_pre_sqlINFO[2024-02-21T00:51:38.396] set cluster to read-writeINFO[2024-02-21T00:51:38.481] [retry: 1] check cluster statusINFO[2024-02-21T00:51:38.630] cluster status is normalINFO[2024-02-21T00:51:38.630] set upgrade_mode to 2INFO[2024-02-21T00:51:38.660] execute rollback sqlINFO[2024-02-21T00:51:38.661] execute rollback sql on maindbINFO[2024-02-21T00:51:38.823] execute rollback sql on otherdb: [template1 template0 mdb_repo banben_mngdb datab test aa]INFO[2024-02-21T00:51:39.214] execute upgrade sqlINFO[2024-02-21T00:51:39.214] execute upgrade sql on maindbINFO[2024-02-21T00:51:39.367] execute upgrade sql on otherdb: [template1 template0 mdb_repo banben_mngdb datab test aa]INFO[2024-02-21T00:51:39.729] execute checkpointINFO[2024-02-21T00:51:40.080] finished: exec_pre_sqlINFO[2024-02-21T00:51:40.080] begin: stop_datanodeINFO[2024-02-21T00:51:40.080] stop all datanodesINFO[2024-02-21T00:51:40.100] operation: stopINFO[2024-02-21T00:51:40.101] ========================================INFO[2024-02-21T00:51:40.143] stop db [172.20.22.128:26000] ...INFO[2024-02-21T00:51:41.175] stop db [172.20.22.128:26000] successfullyINFO[2024-02-21T00:51:41.175] ========================================INFO[2024-02-21T00:51:41.175] stop successfullyINFO[2024-02-21T00:51:41.192] operation: stopINFO[2024-02-21T00:51:41.192] ========================================INFO[2024-02-21T00:51:41.226] stop db [172.20.22.125:26000] ...INFO[2024-02-21T00:51:42.256] stop db [172.20.22.125:26000] successfullyINFO[2024-02-21T00:51:42.256] ========================================INFO[2024-02-21T00:51:42.256] stop successfullyINFO[2024-02-21T00:51:42.256] finished: stop_datanodeINFO[2024-02-21T00:51:42.256] begin: replace_binaryINFO[2024-02-21T00:51:42.256] check need update config in postgresql.confINFO[2024-02-21T00:51:42.256] backup old configsINFO[2024-02-21T00:51:42.315] install new app and omINFO[2024-02-21T00:51:42.315] extact kernel and om package locallyINFO[2024-02-21T00:51:43.054] distribute new kernel and om to all datanodesINFO[2024-02-21T00:51:47.841] [172.20.22.125][omm] validate and try to fix ld library for gs_initdbINFO[2024-02-21T00:51:47.864] [172.20.22.125][omm] validate and try to fix ld library for mogdbINFO[2024-02-21T00:51:48.916] [172.20.22.128][omm] validate and try to fix ld library for gs_initdbINFO[2024-02-21T00:51:48.949] [172.20.22.128][omm] validate and try to fix ld library for mogdbINFO[2024-02-21T00:51:48.973] restore old configs to new appINFO[2024-02-21T00:51:49.015] delete deprecated gucINFO[2024-02-21T00:51:49.092] update config in postgresql.confINFO[2024-02-21T00:51:49.093] finished: replace_binaryINFO[2024-02-21T00:51:49.093] begin: upgrade_pluginINFO[2024-02-21T00:51:49.093] finished: upgrade_pluginINFO[2024-02-21T00:51:49.093] begin: start_dn_with_old_numberINFO[2024-02-21T00:51:49.093] start with old numberINFO[2024-02-21T00:51:49.093] checking cluster state before startINFO[2024-02-21T00:51:49.146] operation: startINFO[2024-02-21T00:51:49.146] ========================================INFO[2024-02-21T00:51:49.146] start db [172.20.22.125:26000] ...INFO[2024-02-21T00:51:51.505] start db [172.20.22.125:26000] successfullyINFO[2024-02-21T00:51:51.505] start db [172.20.22.128:26000] ...INFO[2024-02-21T00:51:58.807] start db [172.20.22.128:26000] successfullyINFO[2024-02-21T00:51:58.956] ========================================INFO[2024-02-21T00:51:58.956] start cluster successfullyINFO[2024-02-21T00:51:58.956] finished: start_dn_with_old_numberINFO[2024-02-21T00:51:58.956] begin: exec_post_sqlINFO[2024-02-21T00:51:58.956] set cluster to read-writeINFO[2024-02-21T00:51:59.040] [retry: 1] check cluster statusINFO[2024-02-21T00:51:59.207] cluster status is normalINFO[2024-02-21T00:51:59.207] update upgrade_versionINFO[2024-02-21T00:51:59.224] execute rollback-post sqlINFO[2024-02-21T00:51:59.225] execute rollback-post sql on maindbINFO[2024-02-21T00:51:59.373] execute rollback-post sql on otherdb: [template1 template0 mdb_repo banben_mngdb datab test aa]INFO[2024-02-21T00:51:59.780] execute upgrade-post sqlINFO[2024-02-21T00:51:59.780] execute upgrade-post sql on maindbINFO[2024-02-21T00:51:59.952] execute upgrade-post sql on otherdb: [template1 template0 mdb_repo banben_mngdb datab test aa]INFO[2024-02-21T00:52:00.543] finished: exec_post_sqlINFO[2024-02-21T00:52:00.543] begin: restart_dn_finallyINFO[2024-02-21T00:52:00.543] restart all datanodesINFO[2024-02-21T00:52:00.563] operation: stopINFO[2024-02-21T00:52:00.563] ========================================INFO[2024-02-21T00:52:00.601] stop db [172.20.22.128:26000] ...INFO[2024-02-21T00:52:02.635] stop db [172.20.22.128:26000] successfullyINFO[2024-02-21T00:52:02.635] ========================================INFO[2024-02-21T00:52:02.635] stop successfullyINFO[2024-02-21T00:52:02.652] operation: stopINFO[2024-02-21T00:52:02.653] ========================================INFO[2024-02-21T00:52:02.689] stop db [172.20.22.125:26000] ...INFO[2024-02-21T00:52:04.730] stop db [172.20.22.125:26000] successfullyINFO[2024-02-21T00:52:04.730] ========================================INFO[2024-02-21T00:52:04.730] stop successfullyINFO[2024-02-21T00:52:04.730] checking cluster state before startINFO[2024-02-21T00:52:04.786] operation: startINFO[2024-02-21T00:52:04.786] ========================================INFO[2024-02-21T00:52:04.786] start db [172.20.22.125:26000] ...INFO[2024-02-21T00:52:07.005] start db [172.20.22.125:26000] successfullyINFO[2024-02-21T00:52:07.005] start db [172.20.22.128:26000] ...INFO[2024-02-21T00:52:09.618] start db [172.20.22.128:26000] successfullyINFO[2024-02-21T00:52:09.765] ========================================INFO[2024-02-21T00:52:09.765] start cluster successfullyINFO[2024-02-21T00:52:09.765] finished: restart_dn_finallyINFO[2024-02-21T00:52:09.765] upgrade successfullyIf you confirm upgrade no problem, you can run this to finish process:ptk cluster -n test upgrade-commitIf you want to cancel upgrade, you can run this to rollback it:ptk cluster -n test upgrade-rollbackINFO[2024-02-21T00:52:09.765] time elapsed: 58s[root@mogdb1 ~]#[root@mogdb1 ~]#[root@mogdb1 ~]# ptk cluster -n test upgrade-commitINFO[2024-02-21T00:52:20.274] PTK Version: 1.3.0 releaseINFO[2024-02-21T00:52:20.279] new step recorder, current step: "restart_dn_finally"INFO[2024-02-21T00:52:20.279] load upgrade meta infoINFO[2024-02-21T00:52:20.280] check cluster statusINFO[2024-02-21T00:52:20.280] [retry: 1] check cluster statusINFO[2024-02-21T00:52:20.537] cluster status is normalINFO[2024-02-21T00:52:20.537] set upgrade_mode to 0INFO[2024-02-21T00:52:20.568] enable cluster read-writeINFO[2024-02-21T00:52:20.568] set cluster to read-writeINFO[2024-02-21T00:52:20.654] clear temporary directoriesINFO[2024-02-21T00:52:25.654] commit successINFO[2024-02-21T00:52:25.654] time elapsed: 6s[root@mogdb1 ~]#
这里需要注意,进行upgrade升级操作之后,确认输出日志无错误的话,那么需要进行upgrade-commit操作,否则集群状态会异常。
最后我们来看下升级后集群的状态如何。
[root@mogdb1 ~]# ptk cluster status -n test[ Cluster State ]cluster_name : testcluster_state : Normaldatabase_version : MogDB 5.0.5 (build b77f1a82)[ Datanode State ]cluster_name | id | ip | port | user | nodename | db_role | state | uptime | upstream---------------+------+---------------+-------+------+----------+---------+--------+----------+-----------test | 6001 | 172.20.22.125 | 26000 | omm | dn_6001 | primary | Normal | 00:00:35 | -| 6002 | 172.20.22.128 | 26000 | omm | dn_6002 | standby | Normal | 00:00:32 | -[root@mogdb1 ~]#
可以看到,这套MogDB主备集群仅1分钟就完成了从5.0.3到5.0.5的升级工作。不过对于生产环境而言,在进行升级之前,还是有不少准备工作的,比如业务在新版本的验证,数据库备份(为了避免软件升级出现异常,建议手工单独备份)等等。
后续给大家带来更多关于MogDB的一些技术文章~~~ 欢迎关注和转发!
参考文档:
https://docs.mogdb.io/zh/ptk/v1.1/install
https://docs.mogdb.io/zh/ptk/v1.1/usage-upgrade





