当前位置: 首页 > news >正文

如何使用PTK一键安装opengaussdb 5.0

1、关于PTK工具

MogDB数据库是云和恩墨基于openGauss开源数据库打造,安稳易用的企业级关系型数据库。

PTK是云和恩墨出品的一款工具,帮助用户更便捷地部署管理MogDB数据库。

1.1 使用场景

  • 开发人员快速启动多个本地 MogDB 环境
  • 用户通过 PTK 快速安装部署 MogDB
  • DBA 日常运维使用
  • 第三方运维平台集成

1.2 推荐部署架构

PTK 的定位是一个中心化多集群管理软件,作为一个中控软件的角色,通过 SSH 的方式远程管理多个数据库集群,所以,我们推荐您将PTK部署在单独的一台控制服务器上,然后将数据库部署到数据库专属的服务器上,如下图。当然,PTK也支持本地部署,您可以根据您的机器情况自行安排安装位置。

(注:PTK依赖本地元数据来进行集群管理,不同操作系统用户安装的PTK相互独立不可见)

                           +-----------+|    PTK    |+-----------+/---ssh-----/   |    \---ssh----\/               ssh               \/                 |                 \+-----------+      +-----------+      +-----------+|   MogDB   |      |   MogDB   |      |   MogDB   |+-----------+      +-----------+      +-----------+

1.3 PTK 支持部署 MogDB 的操作系统

最新列表请通过 ptk candidate os 查看

软件下载地址:https://www.mogdb.io/downloads/ptk/all

PTK软件使用说明书:https://docs.mogdb.io/zh/ptk/v2.0/overview

云和恩墨的软件许可看得出,这家软件还是比较宽松的,允许大家进行测试,这点十分的友好。

MogDB: Privacy下面是截取的一段说明:

云和恩墨授予您非排他性、不可转让的、不可再许可、不可分许可且可撤销的有限许可,允许您在遵守本协议所述限制的前提下,**仅出于开发、测试、原型设计和演示您的应用程序的目的,并且仅在您的应用程序未用于任何数据处理、业务、商业或生产目的的情况下,且不得用于任何其他目的。**您可以允许您的承包商使用程序,前提是他们代表您行使本协议中授予的许可权利,并且您及您的承包商有责任在此类使用中遵守本协议。您将与您的承包商签订书面协议,严格限制他们使用程序的权利,并以其他方式保护云和恩墨及【MogDB】软件的知识产权,其程度不得低于本协议。您可以在合理必要的范围内复制程序,以行使本协议中授予的许可权利。若云和恩墨发现您允诺使用程序的承包商有不符合要求或使用限制的,云和恩墨可单方中断承包商的使用权限。

目前最新的PTK版本是V1.7.0,在8月30号刚刚发布。
在这里插入图片描述

2、安装PTK

2.1 在线安装

注:命令行安装方式不支持 Windows 系统

在终端中,执行以下指令即可自动完成安装:

curl --proto '=https' --tlsv1.2 -sSf https://cdn-mogdb.enmotech.com/ptk/install.sh | sh

该指令会自动将 PTK 安装在用户的家目录 $HOME/.ptk 目录下,该目录以后会作为 PTK 工具的工作目录, 其产生的缓存文件、数据文件以及集群的配置信息,备份信息等文件均会存储到该目录下。 同时,安装指令会自动将 $HOME/.ptk/bin 的路径加入到对应 SHELL Profile 文件(安装日志的末尾会显示)的 PATH 环境变量中, 这样在用户登录到服务器后就可以直接使用 ptk 指令了。

执行安装完成后,用户重新打开终端即可激活 ptk 命令。

2.2 离线安装

如果您的服务器无法直接访问互联网或者是需要在 Windows 系统上使用 PTK 工具,此时可以通过手动方式进行安装。

请按照以下操作步骤进行安装:

  1. 先从下面链接页面下载对应服务器架构的安装包:

    🔗 https://www.mogdb.io/downloads/ptk/all

  2. 将安装包上传到目标服务器上解压即可

    mkdir -p $HOME/.ptk/bin
    tar -xvf ptk_1.7.0_linux_x86_64.tar.gz -C $HOME/.ptk/bin
    echo "export PATH=$HOME/.ptk/bin:$PATH" >> $HOME/.bashrc
    source $HOME/.bashrc
    

3、使用PTK一键部署openGauss

3.1 安装前准备

整体安装过程如下:

1、生成模板文件

2、检查操作系统是否满足要求并生成整改文件脚本

3、执行安装

另外说一句,执行之前需要提前配置好主机名及hosts文件,只有这些!

这里示例使用的环境如下:

操作系统:银河麒麟V10

数据库版本:openGauss 5.02 for openEuler 22.03

3.2 生成模板文件

使用ptk template 命令即可,以上是命令帮助

[root@ogserver ~]# ptk template -h
生成配置模板Usage:ptk template [flags]Available Commands:create      交互式创建配置文件mogha       生成 MogHA 配置scale-out   生成扩容配置Flags:-d, --base-dir string       指定数据库要安装的基目录 (default "/opt/mogdb")-n, --cluster-name string   指定集群名称, 默认会随机生成-g, --group string          指定系统用户组 (default "omm")-l, --local                 生成安装本地数据库的配置文件-p, --port int              指定数据库端口 (default 26000)-u, --user string           指定系统用户名 (default "omm")Global Flags:--disable-color         禁用彩色日志--disable-debug-log     不生成调试日志文件--disable-progressbar   全局不显示进度条-h, --help                  打印帮助信息--log-file string       指定运行日志文件路径--log-format string     指定运行日志的输出格式, 可选项: [text, json] (default "text")--log-level string      指定运行日志级别, 可选项: [debug, info, warning, error, panic] (default "info")--silence               不打印日志到标准输出--skip-fix-ssh          无需通过交互修复 ssh 连接Examples:
# 生成本地单实例配置模板
ptk template -l > config.yml# 生成多实例集群的配置模板
ptk template > config.yml# 自定义部分配置字段的值
ptk template -n <CLUSTER_NAME> -u <OS_USER> -g <OS_USERGROUP> -d <BASE_DIR> -p <DB_PORT> > config.ymlSupport from: v0.2Use "ptk template [command] --help" for more information about a command.

如果你是小白,推荐使用ptk template create 执行交互式创建,下面是示例:

[root@ogserver ~]# ptk template create
✔ 请输入集群名称 (默认: swirles): dbserver
✔ 请输入系统用户名 (默认: omm): omm
✔ 请输入用户组名 (默认: omm): dbgroup
✔ 请输入数据库密码 (8~15 个字符, 3 种类型): **********
✔ 再次输入数据库密码: **********
✔ 请输入数据库端口 (范围 1024~65535) (默认: 26000): 15400
✔ 请输入数据库基础目录 (需为空目录) (默认: /opt/mogdb): /data/openGauss█
✔ 是否要安装CM组件 (默认 n) [y/n]: y
✔ 是否要安装CM组件 (默认 n) [y/n]: y
接下来, 我们来添加一些数据库实例服务器
================db server 1================
✔ 请输入服务器 IP (仅支持 IPv4): 192.168.100.10
✔ 请选择数据库角色: primary        //此处会提示你是primaty 还是standby,可以按光标选择
✔ 请输入可用区的名称 (默认: AZ1): 
✔ 请输入可用区 ("AZ1") 的优先级 (默认: 1): 
================ end ================
✔ 您想添加另一个数据库实例吗 (默认 n) [y/n]: n
Generate /root/config.2024-09-03T15_51_58.yaml successfully

3.3 执行安装前检查

执行ptk checkos -f <模板文件> --detail就会显示出检查情况,并详细列出哪有不符合Abnormal,哪里是告警Warning建议调整。

这里示例执行输出如下,随后会自动生成 个修改脚本,只要执行一下,就可以完成abnormal项的修改。

[root@ogserver ~]# ptk checkos -f /root/config.2024-09-03T15_51_58.yaml  --detail
INFO[2024-09-03T16:00:52.374] 预检查依赖工具...                                   
INFO[2024-09-03T16:00:52.434] [192.168.100.10][omm] platform: kylin_V10_64bit 
INFO[2024-09-03T16:00:52.437] [192.168.100.111][omm] 交换内存 4132860kB,总内存 2952948kB 
ERRO[2024-09-03T16:00:52.453] [192.168.100.111][omm] net.core.rmem_default=212992, expect 262144 
ERRO[2024-09-03T16:00:52.460] [192.168.100.111][omm] kernel.sem=32000	1024000000	500	32000, expect 250 6400000 1000 25600 
WARN[2024-09-03T16:00:52.463] [192.168.100.111][omm] net.ipv4.tcp_max_syn_backlog=128, expect 65535 
WARN[2024-09-03T16:00:52.469] [192.168.100.111][omm] net.ipv4.tcp_syn_retries=6, expect 5 
WARN[2024-09-03T16:00:52.472] [192.168.100.111][omm] net.core.somaxconn=128, expect 65535 
ERRO[2024-09-03T16:00:52.475] [192.168.100.111][omm] net.core.wmem_default=212992, expect 262144 
ERRO[2024-09-03T16:00:52.485] [192.168.100.111][omm] net.core.wmem_max=212992, expect 1048576 
WARN[2024-09-03T16:00:52.491] [192.168.100.111][omm] net.ipv4.tcp_keepalive_intvl=75, expect 30 
WARN[2024-09-03T16:00:52.498] [192.168.100.111][omm] net.ipv4.tcp_wmem=4096	16384	4194304, expect 8192 250000 16777216 
WARN[2024-09-03T16:00:52.500] [192.168.100.111][omm] net.ipv4.tcp_keepalive_time=7200, expect 30 
WARN[2024-09-03T16:00:52.503] [192.168.100.111][omm] net.ipv4.tcp_retries1=3, expect 5 
WARN[2024-09-03T16:00:52.505] [192.168.100.111][omm] net.ipv4.tcp_retries2=15, expect 12 
WARN[2024-09-03T16:00:52.507] [192.168.100.111][omm] net.core.netdev_max_backlog=1000, expect 65535 
WARN[2024-09-03T16:00:52.513] [192.168.100.111][omm] vm.min_free_kbytes=67584, expect 147647 
ERRO[2024-09-03T16:00:52.517] [192.168.100.111][omm] net.core.rmem_max=212992, expect 1048576 
WARN[2024-09-03T16:00:52.521] [192.168.100.111][omm] net.ipv4.tcp_tw_reuse=2, expect 1 
WARN[2024-09-03T16:00:52.523] [192.168.100.111][omm] net.ipv4.tcp_rmem=4096	131072	6291456, expect 8192 250000 16777216 
INFO[2024-09-03T16:00:52.530] [192.168.100.111][omm] 检查 kernel.core_pattern 
INFO[2024-09-03T16:00:52.534] [192.168.100.111][omm] 检查 RemoveIPC 的值       
INFO[2024-09-03T16:00:52.541] [192.168.100.111][omm] 检查 KillUserProcesses 的值 
ERRO[2024-09-03T16:00:52.554] [192.168.100.111][omm] selinux mode in /etc/selinux/config is 'enforcing' 
INFO[2024-09-03T16:00:55.427] [192.168.100.111][omm] 内核版本: 4.19.90-52.22.v2207.ky10.x86_64 
WARN[2024-09-03T16:00:55.449] [192.168.100.111][omm] device(/dev/sda) readahead value=8192, expect 16384. 
INFO[2024-09-03T16:00:55.458] [192.168.100.111][omm] 检查端口 15400            
INFO[2024-09-03T16:00:55.467] [192.168.100.111][omm] 端口 15400 空闲           
INFO[2024-09-03T16:00:55.474] [192.168.100.111][omm] 时区: +0800             
WARN[2024-09-03T16:00:55.485] [192.168.100.111][omm] device(sda) 'IO Request'=254, expect 256 
ERRO[2024-09-03T16:00:55.501] [192.168.100.111][omm] firewall status='enabled', expect 'disabled'. 
INFO[2024-09-03T16:00:55.501] 完成所有检查项                                      
INFO[2024-09-03T16:00:55.501] 将修复 OS 脚本写入 root_fix_os.0903.160055.sh 成功    
INFO[2024-09-03T16:00:55.501] 用时: 4s                                       
# Check ResultsItem                |  Level   |                                   Message                                    
------------------------------------+----------+------------------------------------------------------------------------------A1.Check_OS_Version               | OK       |                                                                              A2.Check_Kernel_Version           | OK       |                                                                              A3.Check_Unicode                  | OK       |                                                                              A4.Check_TimeZone                 | OK       |                                                                              A5.Check_Swap_Memory_Configure    | Warning  | [192.168.100.111]:                                                           |          | swap memory (4132860 KB) is lager than total memory (2952948 KB)             A6.Check_SysCtl_Parameter         | Abnormal | [192.168.100.111]:                                                           |          | Abnormal: net.core.rmem_default=212992, expect 262144                        |          | Abnormal: kernel.sem=32000	1024000000	500	32000, expect 250 6400000 1000 25600  |          | Warning: net.ipv4.tcp_max_syn_backlog=128, expect 65535                      |          | Warning: net.ipv4.tcp_syn_retries=6, expect 5                                |          | Warning: net.core.somaxconn=128, expect 65535                                |          | Abnormal: net.core.wmem_default=212992, expect 262144                        |          | Abnormal: net.core.wmem_max=212992, expect 1048576                           |          | Warning: net.ipv4.tcp_keepalive_intvl=75, expect 30                          |          | Warning: net.ipv4.tcp_wmem=4096	16384	4194304, expect 8192 250000 16777216     |          | Warning: net.ipv4.tcp_keepalive_time=7200, expect 30                         |          | Warning: net.ipv4.tcp_retries1=3, expect 5                                   |          | Warning: net.ipv4.tcp_retries2=15, expect 12                                 |          | Warning: net.core.netdev_max_backlog=1000, expect 65535                      |          | Warning: vm.min_free_kbytes=67584, expect 147647                             |          | Abnormal: net.core.rmem_max=212992, expect 1048576                           |          | Warning: net.ipv4.tcp_tw_reuse=2, expect 1                                   |          | Warning: net.ipv4.tcp_rmem=4096	131072	6291456, expect 8192 250000 16777216    A7.Check_FileSystem_Configure     | OK       |                                                                              A8.Check_Disk_Configure           | OK       |                                                                              A9.Check_BlockDev_Configure       | Warning  | [192.168.100.111]:                                                           |          | device(/dev/sda) readahead value=8192, expect 16384.                         A9.Check_Logical_Block            | OK       |                                                                              A10.Check_Asynchronous_IO_Request | OK       |                                                                              A10.Check_IO_Configure            | OK       |                                                                              A10.Check_NR_Request              | Warning  | [192.168.100.111]:                                                           |          | device(sda) 'IO Request'=254, expect 256                                     A11.Check_Network_Configure       | OK       |                                                                              A12.Check_Time_Consistency        | OK       |                                                                              A13.Check_Firewall_Status         | Abnormal | [192.168.100.111]:                                                           |          | firewall status='enabled', expect 'disabled'.                                A14.Check_THP_Status              | OK       |                                                                              A15.Check_Dependent_Package       | Warning  | [192.168.100.111]:                                                           |          | Warning: not found package: flex                                             |          | Warning: not found package: bison                                            |          | Warning: not found package: ncurses-devel                                    A16.Check_CPU_Instruction_Set     | OK       |                                                                              A17.Check_Port                    | OK       |                                                                              A18.Check_Selinux                 | Abnormal | [192.168.100.111]:                                                           |          | selinux mode in /etc/selinux/config is 'enforcing'                           A19.Check_User_Ulimit             | OK       |                                                                              A20.Check_Directory               | OK       |                                                                              
Total count 23, abnormal count 3, warning count 4
Failed to check os, can’t perform installation unless fix all the abnormal items.
You can use 'ptk checkos -i ITEM --detail' to get detail message
Please check root_fix_os.0903.160055.sh for commands to resolve.

这里我们执行一下脚本,修正不符合的参数。

[root@ogserver ~]# sh root_fix_os.0903.160055.sh 
++ ip addr
++ grep -v 'inet6\|127.0.0.1\|grep'
++ awk '{print $2}'
++ awk -F / '{print $1}'
++ grep inet
+ local_ips='192.168.100.111
192.168.233.134
192.168.122.1'
+ for ip in ${local_ips}
+ [[ 192.168.100.111 == \1\9\2\.\1\6\8\.\1\0\0\.\1\1\1 ]]
+ sed -i /net.core.rmem_default/d /etc/sysctl.conf
+ echo net.core.rmem_default = 262144
+ sed -i /kernel.sem/d /etc/sysctl.conf
+ echo kernel.sem = 250 6400000 1000 25600
+ sed -i /net.core.wmem_default/d /etc/sysctl.conf
+ echo net.core.wmem_default = 262144
+ sed -i /net.core.wmem_max/d /etc/sysctl.conf
+ echo net.core.wmem_max = 1048576
+ sed -i /net.core.rmem_max/d /etc/sysctl.conf
+ echo net.core.rmem_max = 1048576
+ sysctl -p
kernel.sysrq = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.core.rmem_default = 262144
kernel.sem = 250 6400000 1000 25600
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.core.rmem_max = 1048576
+ sudo sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
+ systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
+ systemctl stop firewalld
+ for ip in ${local_ips}
+ [[ 192.168.233.134 == \1\9\2\.\1\6\8\.\1\0\0\.\1\1\1 ]]
+ for ip in ${local_ips}
+ [[ 192.168.122.1 == \1\9\2\.\1\6\8\.\1\0\0\.\1\1\1 ]]

改完可以再检查一遍,几乎都修复完了,我就省略一下只显示结果

Total count 23, abnormal count 0, warning count 5

关于warning的选项也可根据提示手动修改。这里就不演示了。

3.4 安装openGauss数据库

执行命令,一键安装

[root@ogserver ~]#  ptk install -f /root/config.2024-09-03T15_51_58.yaml -p /root/kylinv10sp3_openGauss-5.0.2-openEuler-64bit-all_x86.tar.gz 
INFO[2024-09-03T16:15:04.983] PTK 版本: 1.7.0 release                        
INFO[2024-09-03T16:15:04.983] 从 /root/config.2024-09-03T15_51_58.yaml 加载配置 
如果您选择继续安装软件,
就代表您接受该软件的许可协议。[Y]: 接受并继续[C]: 显示许可协议内容[N]: 中止安装并退出✔ 请输入 (默认: Y): y
集群名:"dbserver"
+--------------+-----------------+--------------+-------+---------+----------------------+----------+
| az(priority) |       ip        | user(group)  | port  |  role   |       data dir       | upstream |
+--------------+-----------------+--------------+-------+---------+----------------------+----------+
| AZ1(1)       | 192.168.100.111 | omm(dbgroup) | 15400 | primary | /data/openGauss/data | -        |
+--------------+-----------------+--------------+-------+---------+----------------------+----------+
✔ 集群配置是否正确 (默认 n) [y/n]: y
INFO[2024-09-03T16:15:15.644] 检查主机名 ...                                    
INFO[2024-09-03T16:15:15.647] 主机名检查成功                                      
INFO[2024-09-03T16:15:15.647] 检查操作系统 ...                                   
INFO[2024-09-03T16:15:15.647] 预检查依赖工具...                                   
INFO[2024-09-03T16:15:15.672] [192.168.100.111][omm] platform: kylin_V10_64bit 
INFO[2024-09-03T16:15:15.674] [192.168.100.111][omm] 内核版本: 4.19.90-52.22.v2207.ky10.x86_64 
INFO[2024-09-03T16:15:15.678] [192.168.100.111][omm] 时区: +0800             
WARN[2024-09-03T16:15:15.685] [192.168.100.111][omm] device(/dev/sda) readahead value=8192, expect 16384. 
INFO[2024-09-03T16:15:15.693] [192.168.100.111][omm] 交换内存 4132860kB,总内存 2952948kB 
WARN[2024-09-03T16:15:15.696] [192.168.100.111][omm] net.ipv4.tcp_max_syn_backlog=128, expect 65535 
WARN[2024-09-03T16:15:15.706] [192.168.100.111][omm] net.ipv4.tcp_retries2=15, expect 12 
WARN[2024-09-03T16:15:15.719] [192.168.100.111][omm] net.ipv4.tcp_keepalive_intvl=75, expect 30 
WARN[2024-09-03T16:15:15.721] [192.168.100.111][omm] net.ipv4.tcp_rmem=4096	131072	6291456, expect 8192 250000 16777216 
WARN[2024-09-03T16:15:15.723] [192.168.100.111][omm] net.core.netdev_max_backlog=1000, expect 65535 
WARN[2024-09-03T16:15:15.784] [192.168.100.111][omm] vm.min_free_kbytes=67584, expect 147647 
WARN[2024-09-03T16:15:15.920] [192.168.100.111][omm] net.ipv4.tcp_keepalive_time=7200, expect 30 
WARN[2024-09-03T16:15:15.994] [192.168.100.111][omm] net.ipv4.tcp_retries1=3, expect 5 
WARN[2024-09-03T16:15:15.998] [192.168.100.111][omm] net.ipv4.tcp_wmem=4096	16384	4194304, expect 8192 250000 16777216 
WARN[2024-09-03T16:15:16.005] [192.168.100.111][omm] net.ipv4.tcp_syn_retries=6, expect 5 
WARN[2024-09-03T16:15:16.011] [192.168.100.111][omm] net.ipv4.tcp_tw_reuse=2, expect 1 
WARN[2024-09-03T16:15:16.018] [192.168.100.111][omm] net.core.somaxconn=128, expect 65535 
INFO[2024-09-03T16:15:16.020] [192.168.100.111][omm] 检查 kernel.core_pattern 
INFO[2024-09-03T16:15:16.024] [192.168.100.111][omm] 检查 RemoveIPC 的值       
INFO[2024-09-03T16:15:16.032] [192.168.100.111][omm] 检查 KillUserProcesses 的值 
INFO[2024-09-03T16:15:18.426] [192.168.100.111][omm] 检查端口 15400            
INFO[2024-09-03T16:15:18.439] [192.168.100.111][omm] 端口 15400 空闲           
WARN[2024-09-03T16:15:18.471] [192.168.100.111][omm] device(sda) 'IO Request'=254, expect 256 
INFO[2024-09-03T16:15:18.509] 完成所有检查项                                      
INFO[2024-09-03T16:15:18.509] 用时: 3s                                       
INFO[2024-09-03T16:15:18.509] 操作系统检查成功                                     
INFO[2024-09-03T16:15:18.509] 检查系统发行版 ...                                  
INFO[2024-09-03T16:15:18.509] 发行版检查成功                                      
INFO[2024-09-03T16:15:18.509] 检查用户 ...                                     
INFO[2024-09-03T16:15:18.518] 检查用户成功                                       
INFO[2024-09-03T16:15:18.518] 检查端口 ...                                     
INFO[2024-09-03T16:15:18.518] checking port 15400 on host 192.168.100.111 (db listen port) ... 
INFO[2024-09-03T16:15:18.526] checking port 15401 on host 192.168.100.111 (db HA port) ... 
INFO[2024-09-03T16:15:18.532] 端口检查成功                                       
INFO[2024-09-03T16:15:18.535] [192.168.100.111][omm] 创建操作系统用户omm, 组dbgroup 
INFO[2024-09-03T16:15:18.560] [192.168.100.111][omm] set ulimit configs    
INFO[2024-09-03T16:15:18.563] 准备安装包 ...                                    
INFO[2024-09-03T16:15:18.563] 安装包已经就绪                                      
INFO[2024-09-03T16:15:18.563] parse installation package ...               
INFO[2024-09-03T16:16:12.448] 数据库产品: openGauss, 版本: 5.0.2, number: 92.861, commit_id: 48a25b11 
INFO[2024-09-03T16:16:12.800] 将 openGauss-5.0.2-openEuler-64bit.tar.bz2 提取到目录/tmp/ptk_tmp_2235563565 
INFO[2024-09-03T16:16:31.188] execute command: gaussdb --version           
INFO[2024-09-03T16:16:31.241] parse installation package success           
INFO[2024-09-03T16:16:31.241] 开始完善配置 ...                                   
INFO[2024-09-03T16:16:31.241] 完善配置成功                                       
INFO[2024-09-03T16:16:31.241] save the topology to metadata                
INFO[2024-09-03T16:16:31.242] 开始分发安装包...                                   
INFO[2024-09-03T16:16:31.420] 安装包分发成功                                      
INFO[2024-09-03T16:16:31.420] 开始安装逻辑节点 ...                                 
INFO[2024-09-03T16:16:31.421] 部署数据库到 omm@192.168.100.111                   
INFO[2024-09-03T16:16:31.422] [192.168.100.111][omm] 创建用户omm的目录:/data/openGauss 
INFO[2024-09-03T16:16:31.835] [192.168.100.111][omm] 清除用户 omm 的 IPC 资源     
INFO[2024-09-03T16:16:31.911] [192.168.100.111][omm] 创建用户omm的目录:/data/openGauss/tool,/data/openGauss/tool/ptk_tool/bin 
INFO[2024-09-03T16:16:33.218] [192.168.100.111][omm] 将 kylinv10sp3_openGauss-5.0.2-openEuler-64bit-all_x86.tar.gz 提取到目录/data/openGauss/tool 
INFO[2024-09-03T16:16:34.078] [192.168.100.111][omm] 将 openGauss-5.0.2-openEuler-64bit-om.tar.gz 提取到目录/data/openGauss/tool 
INFO[2024-09-03T16:16:34.864] [192.168.100.111][omm] 尝试修复psutil Python库    
INFO[2024-09-03T16:16:35.444] [192.168.100.111][omm] 写入文件 /data/openGauss/tool/script/py_pstree.py 
INFO[2024-09-03T16:16:35.588] [192.168.100.111][omm] 写入文件 /data/openGauss/tool/ptk_tool/bin/README.md 
INFO[2024-09-03T16:16:35.838] [192.168.100.111][omm] 写入文件 /data/openGauss/tool/ptk_tool/bin/pscp 
INFO[2024-09-03T16:16:36.123] [192.168.100.111][omm] 写入文件 /data/openGauss/tool/ptk_tool/bin/pssh 
INFO[2024-09-03T16:16:36.262] [192.168.100.111][omm] 写入文件 /data/openGauss/tool/ptk_tool/bin/task_pool.py 
INFO[2024-09-03T16:16:36.682] [192.168.100.111][omm] 创建用户omm的目录:/data/openGauss/app 
INFO[2024-09-03T16:16:36.914] [192.168.100.111][omm] 将 openGauss-5.0.2-openEuler-64bit.tar.bz2 提取到目录/data/openGauss/app 
INFO[2024-09-03T16:16:57.317] [192.168.100.111][omm] 将 /data/openGauss/app 的权限更改为 700 
INFO[2024-09-03T16:16:57.442] [192.168.100.111][omm] 创建用户omm的目录:/data/openGauss/app/share/postgresql 
INFO[2024-09-03T16:16:57.793] [192.168.100.111][omm] 将 /data/openGauss/tool/script/gspylib/etc/sql/pmk_schema.sql 复制到 /data/openGauss/app/share/postgresql 
INFO[2024-09-03T16:16:57.866] [192.168.100.111][omm] 将 /data/openGauss/tool/script/gspylib/etc/sql/pmk_schema_single_inst.sql 复制到 /data/openGauss/app/share/postgresql 
INFO[2024-09-03T16:16:57.920] [192.168.100.111][omm] 写入文件 /data/openGauss/app/bin/transfer.py 
INFO[2024-09-03T16:16:58.077] [192.168.100.111][omm] 设置用户omm的配置文件          
INFO[2024-09-03T16:16:58.530] [192.168.100.111][omm] 验证并尝试修复 gs_initdb 的 ld 库 
INFO[2024-09-03T16:16:58.582] [192.168.100.111][omm] 验证并尝试修复 gaussdb 的 ld 库 
INFO[2024-09-03T16:16:58.654] [192.168.100.111][omm] 创建用户omm的目录:/data/openGauss/log/gs_profile,/data/openGauss/log/pg_log,/data/openGauss/log/pg_audit,/data/openGauss/log/bin,/data/openGauss/log/pg_log/dn_6001,/data/openGauss/log/pg_audit/dn_6001 
INFO[2024-09-03T16:17:01.316] [192.168.100.111][omm] 创建用户omm的目录:/data/openGauss/tmp 
INFO[2024-09-03T16:17:01.519] [192.168.100.111][omm] 将版本保存为 upgrade_version 
INFO[2024-09-03T16:17:01.868] [192.168.100.111][omm] 创建文件 cluster_manual_start 
INFO[2024-09-03T16:17:01.956] [192.168.100.111][omm] 生成 cluster_static_config 文件 
INFO[2024-09-03T16:17:02.045] [192.168.100.111][omm] 创建用户omm的目录:/data/openGauss/data 
INFO[2024-09-03T16:17:02.302] [192.168.100.111][omm] 写入文件 /data/openGauss/tool/.ptk_deployer 
INFO[2024-09-03T16:17:02.691] 生成认证文件                                       
INFO[2024-09-03T16:17:03.917] 下载认证文件                                       
INFO[2024-09-03T16:17:04.867] 认证文件安装成功                                     
INFO[2024-09-03T16:17:04.867] 在 omm@192.168.100.111 上初始化数据库                
INFO[2024-09-03T16:17:04.867] [192.168.100.111][omm] 数据库正在初始化, 请稍等一会儿      
INFO[2024-09-03T16:17:16.636] [192.168.100.111][omm] 配置 postgresql.conf 文件 
INFO[2024-09-03T16:17:16.739] [192.168.100.111][omm] 配置 pg_hba.conf 文件     
INFO[2024-09-03T16:17:16.808] [192.168.100.111][omm] 将 SSL 文件复制到数据目录       
INFO[2024-09-03T16:17:16.893] 逻辑节点安装成功                                     
INFO[2024-09-03T16:17:16.900] 生成 PTKC ...                                  
INFO[2024-09-03T16:17:17.054] 开始构建 SSH 互信 ...                              
INFO[2024-09-03T16:17:18.154] SSH 互信构建成功                                   
INFO[2024-09-03T16:17:18.154] 启动数据库 ...                                    
INFO[2024-09-03T16:17:18.154] [192.168.100.111][omm] 使用 gs_ctl 启动数据库中 ...  
INFO[2024-09-03T16:17:18.154] [192.168.100.111][omm] 数据库正在启动,请稍等一会儿        
INFO[2024-09-03T16:17:19.245] [192.168.100.111][omm] 数据库启动成功               
INFO[2024-09-03T16:17:19.245] 数据库启动成功                                      
INFO[2024-09-03T16:17:19.245] 正在清理临时目录 ...                                 
INFO[2024-09-03T16:17:19.271] 临时目录清理成功                                     
INFO[2024-09-03T16:17:19.271] 用时: 2m9s                                     cluste_name |      host       | user | port  |    status     | message  
--------------+-----------------+------+-------+---------------+----------dbserver    | 192.168.100.111 | omm  | 15400 | start_success | success 

只用时2m9s安装完毕。

4、使用PTK管理数据库

这里简单演示一下简单的管理命令

4.1 启停集群

主要是通过ptk cluster命令来管理集群

[root@ogserver ~]# ptk cluster -h
管理集群Usage:ptk cluster [flags]Available Commands:start                     启动数据库实例或集群stop                      停止数据库实例或集群restart                   重启数据库实例或集群status                    显示集群或实例的状态信息build                     重建数据库数据switchover                主备切换,升级备库为主库,降主库为备库failover                  提升一个备库为主库inspect                   返回关于集群的内部信息install-plugin            安装 MogDB 插件list-plugins              列出集群中的插件install-mogha             为 MogDB 安装 MogHAuninstall-mogha           卸载 MogHAscale-in                  对一个MogDB集群进行缩容scale-out                 对一个MogDB集群进行扩容show-hba                  打印数据库 pg_hba.conf 内容set-hba                   设置并重新加载数据库的 pg_hba.confshow-guc                  打印数据库参数set-guc                   设置并重新加载数据库参数show-config               打印集群拓扑配置文件modify-comment            修改指定集群的备注shell                     执行 shell 命令或脚本refresh                   更新集群配置promote                   将一个数据库实例从备库提升为主库, 或从级联备库提升为备库demote                    将数据库角色从 Primary 降级为 Standby,或从 Standby 降级为 Cascade Standbyupgrade                   升级集群的数据库版本upgrade-commit            确认提交升级操作(!提交后不能回滚)upgrade-rollback          回滚升级操作is-in-upgrade             查看集群是否处于升级过程中install-kerberos-server   安装 kerberos 服务器uninstall-kerberos-server 卸载 kerberos 服务add-kerberos-auth         添加 kerberos 认证del-kerberos-auth         删除 kerberos 认证load-cm-vip               管理 CM 的虚拟IP (仅 Mogdb v5.0.4+ 支持)gen-cert-files            生成ssl证书文件install-cm                安装 CM 组件uninstall-cm              卸载 CM 组件takeover                  添加一个新的实例到PTK的元数据throwout                  从PTK的元数据中移除实例rename                    重命名集群install-mogila            安装mogila示例数据install-compat-tools      安装compat-toolsuninstall-compat-tools    Uninstall compat-toolscreatedb                  创建DatabaseFlags:-n, --name string   集群名称Global Flags:--disable-color         禁用彩色日志--disable-debug-log     不生成调试日志文件--disable-progressbar   全局不显示进度条-h, --help                  打印帮助信息--log-file string       指定运行日志文件路径--log-format string     指定运行日志的输出格式, 可选项: [text, json] (default "text")--log-level string      指定运行日志级别, 可选项: [debug, info, warning, error, panic] (default "info")--silence               不打印日志到标准输出--skip-fix-ssh          无需通过交互修复 ssh 连接Support from: v0.1Use "ptk cluster [command] --help" for more information about a command.

PTK可以代替gs_om命令来启停集群,示例如下

[root@ogserver ~]# ptk cluster -n dbserver  status
[   Cluster State   ]
cluster_name                   : dbserver
cluster_state                  : Normal
database_version               : openGauss 5.0.2 (build 48a25b11)[  Datanode State   ]cluster_name |  id  |       ip        | port  | user | nodename | db_role | state  |  uptime  | upstream  
---------------+------+-----------------+-------+------+----------+---------+--------+----------+-----------dbserver     | 6001 | 192.168.100.111 | 15400 | omm  | dn_6001  | primary | Normal | 00:02:29 | -         
[root@ogserver ~]# ptk cluster -n dbserver  stop 
INFO[2024-09-03T16:19:52.916] 操作: stop                                     
INFO[2024-09-03T16:19:52.916] ========================================     
INFO[2024-09-03T16:19:53.643] 数据库[192.168.100.111:15400]停止中 ...            
INFO[2024-09-03T16:19:54.807] 数据库[192.168.100.111:15400]停止成功               
INFO[2024-09-03T16:19:54.807] ========================================     
INFO[2024-09-03T16:19:54.807] 停止成功                                         
[root@ogserver ~]# ptk cluster -n dbserver  start
INFO[2024-09-03T16:20:02.251] checking cluster state before start          
INFO[2024-09-03T16:20:02.699] 操作: start                                    
INFO[2024-09-03T16:20:02.699] ========================================     
INFO[2024-09-03T16:20:02.699] 数据库[192.168.100.111:15400]启动中 ...            
INFO[2024-09-03T16:20:03.993] 数据库[192.168.100.111:15400]启动成功               
INFO[2024-09-03T16:20:04.245] ========================================     
INFO[2024-09-03T16:20:04.245] 集群启动成功 

4.2 卸载集群

卸载前需要先停止停群,然后执行ptk uninstall -n <集群名>

[root@ogserver ~]# ptk uninstall -n dbserver
INFO[2024-09-03T16:23:05.516] PTK 版本: 1.7.0 release                        
集群名:"dbserver"
+--------------+-----------------+--------------+-------+---------+----------------------+----------+
| az(priority) |       ip        | user(group)  | port  |  role   |       data dir       | upstream |
+--------------+-----------------+--------------+-------+---------+----------------------+----------+
| AZ1(1)       | 192.168.100.111 | omm(dbgroup) | 15400 | primary | /data/openGauss/data | -        |
+--------------+-----------------+--------------+-------+---------+----------------------+----------+
✔ 您确实要卸载该集群吗? 请仔细确认 (默认 n) [y/n]: y
✔ 是否要删除数据库数据 (默认 n) [y/n]: y
✔ 是否要删除操作系统用户 (默认 n) [y/n]: y
INFO[2024-09-03T16:23:08.856] [192.168.100.111][omm] 检查数据库目录属主             
INFO[2024-09-03T16:23:09.217] [192.168.100.111][omm] 检查数据进程状态              
INFO[2024-09-03T16:23:09.376] [192.168.100.111][omm] 删除文件: /data/openGauss/app,/data/openGauss/tool,/data/openGauss/tmp,/data/openGauss/data,/data/openGauss/log 
INFO[2024-09-03T16:23:09.739] [192.168.100.111][omm] 终止用户 "omm" 现有的进程: [krb5kdc] 
INFO[2024-09-03T16:23:10.142] [192.168.100.111][omm] 从cron.allow中移除用户"omm" 
INFO[2024-09-03T16:23:10.148] [192.168.100.111][omm] 移除用户"omm"的ulimits设置   
INFO[2024-09-03T16:23:10.176] [192.168.100.111][omm] 如果 "/data/openGauss" 为空,则删除 
INFO[2024-09-03T16:23:10.189] [192.168.100.111][omm] 终止用户 "omm" 的所有进程      
INFO[2024-09-03T16:23:10.222] [192.168.100.111][omm] 删除用户"omm"             
INFO[2024-09-03T16:23:10.255] 卸载成功                                         

5 总结

要做一个好的数据库,好用的工具是必不可少的,这点MogDB确实优秀,PTK命令工具十分简洁方便,简单上手。

看了一下MogDB官网还有好几实用的工具,都可以用来进行测试。这次先测到这里,回头再详细使用。

相关文章:

如何使用PTK一键安装opengaussdb 5.0

1、关于PTK工具 MogDB数据库是云和恩墨基于openGauss开源数据库打造&#xff0c;安稳易用的企业级关系型数据库。 PTK是云和恩墨出品的一款工具&#xff0c;帮助用户更便捷地部署管理MogDB数据库。 1.1 使用场景 开发人员快速启动多个本地 MogDB 环境用户通过 PTK 快速安装…...

跟李沐学AI:长短期记忆网络LSTM

输入们、遗忘门和输出门 LSTM引入输入门、忘记门和输出门 输入门计算公式为&#xff1a;。 遗忘门计算公式为&#xff1a;。 输出门计算公式为&#xff1a;。 它们由三个具有sigmoid激活函数的全连接层处理&#xff0c; 以计算输入门、遗忘门和输出门的值。 因此&#xff0c…...

【BIM模型数据】BIM模型的数据如何存储,BIM大模型数据云端存储,需要考虑哪些因素,BIM模型数据存储和获取

【BIM模型数据】BIM模型的数据如何存储&#xff0c;BIM大模型数据云端存储&#xff0c;需要考虑哪些因素&#xff0c;BIM模型数据存储和获取 BIM文件的结构化数据和非结构化数据的存储方式&#xff0c;需要根据数据的特性和使用需求来选择。以下是一些推荐的存储策略&#xff1…...

【LLM大模型】大模型架构:layer\_normalization

2.layer_normalization 1.Normalization 1.1 Batch Norm 为什么要进行BN呢&#xff1f; 在深度神经网络训练的过程中&#xff0c;通常以输入网络的每一个mini-batch进行训练&#xff0c;这样每个batch具有不同的分布&#xff0c;使模型训练起来特别困难。Internal Covariat…...

PON光模块的独特类型和特性

在当前互联网需求快速增长的背景下&#xff0c;PON光模块已成为实现光纤网络高速数据传输的重要组成部分。从住宅宽带到各种企业应用程序解决方案&#xff0c;PON光模块始终致力于实现高质量的数据传输与无缝通信。了解PON光模块的类型和特性对于深入理解现代网络基础设施至关重…...

架构与业务的一致性应用:实现企业战略目标和合规管理的全面指南

在当今快速变化的数字经济中&#xff0c;信息架构已成为企业实现其业务目标、优化运营效率和确保数据安全的关键工具。 一个成功的信息架构不仅要与企业的战略目标紧密对齐&#xff0c;还必须遵循日益严格的合规性要求&#xff0c;以保护敏感数据并满足法规规定。《信息架构&a…...

时尚穿搭想换就换,各种风格一键完美搭配!亲测在线虚拟试衣换装平台效果超赞!

随着科技的发展&#xff0c;时尚领域也迎来了新的革命。传统的试衣方式逐渐被现代科技所取代&#xff0c;虚拟试衣间的出现使得用户可以在舒适的家中轻松体验不同的服装风格。 先前给大家也介绍过一些虚拟试衣的技术&#xff0c;例如AnyFit或者OutfitAnyone等&#xff0c;今天…...

【C++】C++ 标准库string类介绍(超详细解析,小白必看系列)

C 标准库中的 std::string 类是一个非常强大的工具&#xff0c;用于处理和操作字符串。它属于 <string> 头文件&#xff0c;并提供了一套丰富的功能和方法。以下是 std::string 类的一些主要特性和常用操作&#xff1a; 1 string简介 字符串是表示字符序列的类 标准的字…...

若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)

文章目录 一、开发脚手架选择二、RuoYi框架1、介绍2、版本发展3、为什么选择若依4、优缺点5、项目内置功能 三、后端项目部署1、拉取源码2、环境要求3、Maven构建4、MySQL相关&#xff08;1&#xff09;导入SQL脚本&#xff08;2&#xff09;配置信息 5、Redis相关&#xff08;…...

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果&#xff1a; 解密后的数据就是正常数据&#xff1a; 后端&#xff1a;使用的是spring-cloud框架&#xff0c;在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30…...

HarmonyOS开发之使用PhotoViewPicker(图库选择器)保存图片

一&#xff1a;效果图 二&#xff1a;添加依赖 import fs from ohos.file.fs;//文件管理 import picker from ohos.file.picker//选择器 三&#xff1a;下载&#xff0c;保存图片的实现 // 下载图片imgUrldownloadAndSaveImage(imgUrl: string) {http.createHttp().request(…...

跨境独立站支付收款常见问题排雷篇1.0丨出海笔记

最近小伙伴们在社群讨论挺多关于独立站支付问题的&#xff0c;鉴于不少朋友刚接触独立站&#xff0c;我整理了一些独立站支付相关的问题和解决方案&#xff0c;供大家参考&#xff0c;百度网上一堆媒体的那些软文大家就别看了&#xff0c;都是软广或者抄来抄去&#xff0c;让大…...

uni-app实现web-view和App之间的相互通信

双向实时 如果app端部署成网站&#xff0c;则web-view就是iframe&#xff0c;使用也可以双向通讯 https://uniapp.dcloud.net.cn/component/web-view.html APP端代码 index.vue: <template><web-viewid"m-webview":fullscreen"true":src"…...

HTB-Vaccine(suid提权、sqlmap、john2zip)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天来为大家讲解Vaccine靶机 渗透过程 信息搜集 服务器开放了 21FTP服务、22SSH服务、80HTTP服务 通过匿名登录FTP服务器 通过匿名登录到服务器&#xff0c;发现backup.zip文件&#xff0c;可能存在账号密码 发现b…...

【达梦数据库】异构数据库迁移到达梦

目录 1、迁移准备2、正式迁移3、问题处理3.1、return附近出现错误3.1.1、排查过程3.1.2、问题原因3.1.2、解决方法 3.2、对象[XXX]处于无效状态-类型13.2.1、排查过程3.2.2、问题原因3.2.3、解决方法 3.3、对象[XXX]处于无效状态-类型23.3.1、排查过程3.3.2、问题原因3.3.3、解…...

抽象类和接口(1)

抽象类&#xff1a; 什么是抽象类&#xff1a; 听着就很抽象&#xff0c;确实挺抽象&#xff0c;先来写一个抽象类感觉一下&#xff1a; 这就是抽象类&#xff01; 在 Java 中&#xff0c;一个类如果被 abstract 修饰称为抽象类&#xff0c;抽象类中被 abstract 修饰的方法…...

epoll内核原理与实现详解

目录 1 epoll相关理论基础 1.1 I/O多路复用技术 1.2 事件驱动模型 1.2.1 基本概念 1.2.2 优缺点分析 1.2.3 与epoll的关联 1.3 epoll机制简介 1.3.1 核心原理 1.3.2 优点 2 epoll内核原理 2.1 epoll数据结构 2.1.1 主要数据结构 2.1.2 数据结构关系 2.2 epoll工作…...

被低估的SQL

SQL是现代数据库管理系统中不可或缺的一部分。尽管它的使用已十分普遍&#xff0c;但在数据处理领域&#xff0c;SQL的某些功能和潜力仍然被许多人低估。接下来&#xff0c;小编将与您一起&#xff0c;探讨SQL的一些被忽视的特性&#xff0c;揭示它在数据管理中的真正实力。 1.…...

数字证书、数字签名及其关系

一.数字证书与数字签名 1.数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。简单地说&#xff0c;数字证书是一段包含用户身份信息、用户公钥信息以及份验证机构数字签名的数据。 通俗理解&#xff1a;数字证书相当于【身份证】 —— 确认你…...

一文读懂:如何将广告融入大型语言模型(LLM)输出

本文是我翻译过来的&#xff0c;讨论了在线广告行业的现状以及如何将大型语言模型&#xff08;LLM&#xff09;应用于在线广告。 原文请参见”阅读原文“。 在2024年&#xff0c;预计全球媒体广告支出的69%将流向数字广告市场。这个数字预计到2029年将增长到79%。在Meta的2024…...

godotenv拜读

简介 应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。 但是在实际开发中&#xff0c;如果同一台机器运行多个项目&#xff0c;设置环境变量容易冲突&#xff0c;不实用。godotenv库从.env文件中读取配置&#xff0c;…...

解析REST API与OpenAPI之差异:避免混淆

在网络API领域&#xff0c;常提及的两种术语为Rest API与Open API&#xff0c;其既存在差异亦存在联系。前者是一种API设计方式&#xff0c;后者则是一种API描述及定义规范。值得注意的是&#xff0c;OpenAPI 可用于描述和定义REST API。 什么是REST API&#xff1f; REST API …...

一篇文章就搞懂了:过虑器 、拦截器 、监听器是什么

java 过虑器 、拦截器 、监听器的区别? ‌实现原理‌&#xff1a; 过滤器基于函数回调实现。拦截器基于Java的反射机制实现。监听器用于监听特定事件的发生&#xff0c;并作出相应处理。 ‌使用范围‌&#xff1a; 过滤器依赖于Tomcat等容器&#xff0c;主要用于Web程序。拦截…...

本体映射与本体集成

文章目录 本体映射与本体集成本体映射分类知识挖掘是从己有的实体及实体关系出发挖掘新的知识,具体包括知识内容挖掘和知识结构挖掘。 本体映射与本体集成 解决本体异构的通用方法是本体集成与本体映射。本体集成直接将多个本体合并为一个大本体,本体映射则寻找本体间的映射…...

华媒舍:10种提升推特大V发文推广曝光率的方式

在社交媒体时代&#xff0c;推特已成为许多大V达到更广泛受众的重要渠道。并非所有的推文都能获得理想的曝光率。为了帮助大V们提升推文的曝光率&#xff0c;本文将介绍10种有效的方式。 1. 精心构思内容 好的内容是吸引读者和提升曝光率的关键。大V们应该从听众的角度出发&am…...

前端本地存储数据:深入解析与代码示例(Cookie、LocalStorage、SessionStorage和IndexedDB)

在现代Web应用中&#xff0c;前端本地存储是实现用户个性化体验的关键技术。本文将深入探讨前端本地存储的四种主要技术&#xff1a;Cookie、LocalStorage、SessionStorage和IndexedDB&#xff0c;并提供具体的代码示例。 Cookie 简介 Cookie是由服务器创建并存储在用户浏览…...

Java语言程序设计基础篇_编程练习题*18.21 (将十进制数转换为二进制数)

*18.21 (将十进制数转换为二进制数) 编写一个递归方法&#xff0c;将一个十进制数转换为一个二进制数的字符串。方法头如下: public static String dec2Bin(int value)编写一个测试程序&#xff0c;提示用户输入一个十进制数&#xff0c;然后显示等价的二进制数。 代码示例 …...

中年转行新可能:18 个月迈向大模型提示词工程师

【导读】 人到中年&#xff0c;想半路转行成为大模型提示词工程师&#xff0c;这可行吗&#xff1f;最近&#xff0c;一位国外小哥成功转行&#xff0c;他在一篇干货满满的硬核博客中给出了答案&#xff1a;完全可行&#xff01; 转行成为大模型提示词工程师&#xff0c;到底…...

C++通过返回值和输出参数的原理是什么?分别有什么优势和缺点?

C中&#xff0c;通过返回值和输出参数&#xff08;通常是通过引用或指针&#xff09;是函数与外部世界交换数据的两种主要方式。它们各自有着不同的原理和优缺点。 通过返回值 原理&#xff1a; 当函数通过返回值向调用者传递数据时&#xff0c;它实际上是在函数执行完毕后&…...

AI客服机器人开启企业客户服务新纪元

随着人工智能(AI)技术的迅猛发展&#xff0c;使得AI客服机器人走进了我们的视野&#xff0c;成为提高客户满意度和业务效率的不二法宝。这些智能机器人不仅能够处理海量信息&#xff0c;还能为客户提供个性化的服务体验。 一、AI客服机器人的基本原理 AI客服机器人是基于人工智…...