openGauss 5.0 单点企业版部署_Centos7_x86(下)

上一篇分享了安装环境、配置、创建用户,本篇将继续分享执行、安装、访问数据库。

8、目录规划

--创建存放安装包的目录
mkdir -p /topsoft/soft/openGauss
chmod 777 -R /topsoft/soft

--创建目录  目录会自动创建,可选择不创建
mkdir -p /topsoft/huawei/install/app  #数据库安装目录
mkdir -p /topsoft/huawei/log/omm  #日志目录
mkdir -p /topsoft/huawei/tmp  #临时文件目录
mkdir -p /topsoft/huawei/install/om  #数据库工具目录
mkdir -p /topsoft/huawei/corefile  #数据库core文件目录

不建议把安装包的存放目录规划到openGauss用户的根目录或其子目录下,可能导致权限问题。

openGauss用户须具有/topsoft/soft/openGauss目录的读写权限。

9、下载并上传安装包

登录openGauss开源社区https://opengauss.org/zh/download/,选择对应平台的企业版安装包。

上传至/topsoft/soft/openGauss目录,安装包“openGauss-5.1.0-openEuler-64bit-all.tar.gz”和配置文件“cluster_config.xml”都上传至上一步所创建的目录中。

10、配置单节点XML文件

安装openGauss前需要创建XML文件。XML文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss如何部署。用户需根据不同场景配置对应的XML文件。

关于如何配置XML文件,详细请参见创建XML配置文件。

将cluster_config.xml上传至/topsoft/soft/openGauss目录,安装包“openGauss-5.1.0-openEuler-64bit-all.tar.gz”和配置文件“cluster_config.xml”都上传至上一步所创建的目录中。

为确保成功安装,检查hostname与/etc/hostname是否一致。预安装过程中,会对hostname进行检查。

默认端口15400,若待用自定义端口,更改xml文件中的端口号

官方XML文件模板

cat cluster_config.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="node1_hostname" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" />
        <!-- 数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/opt/huawei/corefile" />
        <!-- 节点IP,与数据库节点名称列表一一对应 -->
        <PARAM name="backIp1s" value="192.168.0.1"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="node1_hostname">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="node1_hostname"/>
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.0.1"/>
            <PARAM name="sshIp1" value="192.168.0.1"/>
               
	    <!--dbnode-->
	    <PARAM name="dataNum" value="1"/>
	    <PARAM name="dataPortBase" value="15400"/>
	    <PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

根据官方模板更改后的xml文件

cat cluster_config.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="opendb01" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/topsoft/huawei/install/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/topsoft/huawei/log/omm" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/topsoft/huawei/tmp" />
        <!-- 数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/topsoft/huawei/install/om" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/topsoft/huawei/corefile" />
        <!-- 节点IP,与数据库节点名称列表一一对应 -->
        <PARAM name="backIp1s" value="192.168.40.110"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="opendb01">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="opendb01"/>
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.40.110"/>
            <PARAM name="sshIp1" value="192.168.40.110"/>
               
	    <!--dbnode-->
	    <PARAM name="dataNum" value="1"/>
	    <PARAM name="dataPortBase" value="15400"/>
	    <PARAM name="dataNode1" value="/topsoft/huawei/install/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

可通过以下全局替换

vi /topsoft/soft/openGauss/cluster_config.xml

:%s#node1_hostname#opendb01#g   #主机名
:%s#/opt/huawei/install/app#/topsoft/huawei/install/app#g   #安装目录
:%s#/opt/huawei/install/app#/topsoft/huawei/install/app#g   #安装目录
:%s#/var/log/omm#/topsoft/huawei/log/omm#g    #日志目录
:%s#/opt/huawei/tmp#/topsoft/huawei/tmp#g   #临时文件目录
:%s#/opt/huawei/install/om#/topsoft/huawei/install/om#g    #数据库工具目录
:%s#/opt/huawei/corefile#/topsoft/huawei/corefile#g   #数据库core文件目录
:%s#192.168.0.1#192.168.40.110#g   #IP地址
:%s#/opt/huawei/install/data/dn#/topsoft/huawei/install/data/dn#g   #数据节点目录  /opt/huawei/install/data/dn

11、解压安装包

对于个人开发者或非企业级环境,下载极简安装包(不安装OM等组件)即可。本文档采用的是企业版安装,因此安装OM等组件

注意:安装包“openGauss-5.1.0-openEuler-64bit-all.tar.gz”和配置文件“cluster_config.xml”需在同一目录中,本文档是/topsoft/soft/openGauss目录。

--进入安装包所在目录
[root@opendb01 ~]# cd /topsoft/soft/openGauss/
[root@localhost openGauss]# ls -l
total 130712
-rw-r--r--. 1 root root      1905 Jan 27 08:31 cluster_config.xml
-rw-r--r--. 1 root root 133842584 Jan 27 08:30 openGauss-5.1.0-openEuler-64bit-all.tar.gz

--解压openGauss-5.1.0-openEuler-64bit-all.tar.gz安装包
tar -xvf openGauss-5.1.0-openEuler-64bit-all.tar.gz 

--查看解压后的文件
[root@localhost ~]# cd /topsoft/soft/openGauss/
[root@localhost openGauss]# ls -lS
total 131764
-rw-r--r--. 1 root root 99901554 Dec 15 20:34 openGauss-5.0.1-CentOS-64bit.tar.bz2
-rw-r--r--. 1 root root 22528301 Dec 15 20:34 openGauss-5.0.1-CentOS-64bit-cm.tar.gz
-rw-r--r--. 1 root root 11971903 Dec 15 20:33 openGauss-5.0.1-CentOS-64bit-om.tar.gz  #数据库工具目录
-rw-------. 1 root root   499269 Dec 15 20:32 upgrade_sql.tar.gz
-rw-r--r--. 1 root root      105 Dec 15 20:34 openGauss-5.0.1-CentOS-64bit-cm.sha256
-rw-r--r--. 1 root root       65 Dec 15 20:33 openGauss-5.0.1-CentOS-64bit-om.sha256
-rw-r--r--. 1 root root       65 Dec 15 20:34 openGauss-5.0.1-CentOS-64bit.sha256
-rw-------. 1 root root       65 Dec 15 20:32 upgrade_sql.sha256

参数说明:
-S :按文件类型排序

--继续解压openGauss-5.0.1-CentOS-64bit-om.tar.gz  数据库工具包 企业版安装需要解压该包极简版不需要
tar -xvf openGauss-5.0.1-CentOS-64bit-om.tar.gz

--查看解压后的文件   script目录中生成gs_preinstall等各种OM工具脚本
[root@opendb01 openGauss]# ls -lS
total 262484
-rw-r--r--.  1 root root 133842584 Jan 24 06:03 openGauss-5.1.0-openEuler-64bit-all.tar.gz
-rw-r--r--.  1 root root  99901554 Dec 15 20:34 openGauss-5.0.1-CentOS-64bit.tar.bz2
-rw-r--r--.  1 root root  22528301 Dec 15 20:34 openGauss-5.0.1-CentOS-64bit-cm.tar.gz
-rw-r--r--.  1 root root  11971903 Dec 15 20:33 openGauss-5.0.1-CentOS-64bit-om.tar.gz
-rw-------.  1 root root    499269 Dec 15 20:32 upgrade_sql.tar.gz
drwxr-xr-x. 14 root root      4096 Dec 15 20:33 lib
drwxr-xr-x. 10 root root      4096 Dec 15 20:33 script
-rw-r--r--.  1 root root       105 Dec 15 20:34 openGauss-5.0.1-CentOS-64bit-cm.sha256
-rw-r--r--.  1 root root        65 Dec 15 20:33 openGauss-5.0.1-CentOS-64bit-om.sha256
-rw-r--r--.  1 root root        65 Dec 15 20:34 openGauss-5.0.1-CentOS-64bit.sha256
-rw-------.  1 root root        65 Dec 15 20:32 upgrade_sql.sha256
-rw-r--r--.  1 root root        32 Dec 15 20:33 version.cfg
  • 在执行前置脚本gs_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。

  • 运行前置脚本gs_preinstall准备安装环境时,脚本内部会自动将openGauss配置文件、解压后的安装包同步拷贝到其余服务器的相同目录下。

  • 在执行前置脚本或者互信前,请检查/etc/profile文件中是否包含错误输出信息,如果存在错误输出,需手动处理。

12、使用gs_preinstall初始化安装环境

安装环境的初始化包含上传安装包和XML文件(二者需在同一目录)、解压安装包、使用gs_preinstall准备好安装环境。

分2种场景初始化,自行选择。

13、准备安装用户及环境

创建完openGauss配置文件后,在执行安装前,为了后续能以最小权限进行安装及openGauss管理操作,保证系统安全性,需要运行安装前置脚本gs_preinstall准备好安装用户及环境。在执行前置脚本gs_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。

安装前置脚本gs_preinstall可以协助用户自动完成如下的安装环境准备工作:

  • 自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。openGauss所设置的Linux内核参数取值请参见配置操作系统参数。

  • 脚本内部会自动将openGauss配置文件、安装包拷贝到openGauss主机的相同目录下。

  • openGauss安装用户、用户组不存在时,自动创建安装用户以及用户组。

  • 读取openGauss配置文件中的目录信息并创建,将目录权限授予安装用户。

  • 只能使用root用户执行gs_preinstall命令

  • 在执行前置脚本或者互信前,请检查/etc/profile文件中是否包含错误输出信息,如果存在错误输出,需手动处理。

注意:如果是openEuler(openEuler 20.03)的操作系统,执行如下命令打开performance.sh文件,用#注释sysctl -w vm.min_free_kbytes=112640 &> /dev/null,键入“ESC”键进入指令模式,执行**:wq**保存并退出修改。

vi /etc/profile.d/performance.sh

场景1:采用交互模式执行前置

[root@opendb01 /]# cd /topsoft/soft/openGauss/script/
./gs_preinstall -U omm -G dbgrp -X /topsoft/soft/openGauss/cluster_config.xml

这里设置:omm用户密码omm

预安装脚本执行的详细过程如下:

[root@localhost script]# ./gs_preinstall -U omm -G dbgrp -X /topsoft/soft/openGauss/cluster_config.xml
Parsing the configuration file.
Successfully parsed the configuration file.
Installing the tools on the local node.
Successfully installed the tools on the local node.
Setting host ip env
Successfully set host ip env.
Are you sure you want to create the user[omm] (yes/no)?
Please enter password for cluster user.
Password:
Please enter password for cluster user again.
Password:
Generate cluster user password files successfully.

Successfully created [omm] user on all nodes.
Preparing SSH service.
Successfully prepared SSH service.
Checking OS software.
Successfully check os software.
Checking OS version.
Successfully checked OS version.
Creating cluster's path.
Successfully created cluster's path.
Set and check OS parameter.
Setting OS parameters.
Successfully set OS parameters.
Warning: Installation environment contains some warning messages.
Please get more details by "/topsoft/soft/openGauss/script/gs_checkos -i A -h opendb01 --detail".
Set and check OS parameter completed.
Preparing CRON service.
Successfully prepared CRON service.
Setting user environmental variables.
Successfully set user environmental variables.
Setting the dynamic link library.
Successfully set the dynamic link library.
Setting Core file
Successfully set core path.
Setting pssh path
Successfully set pssh path.
Setting Cgroup.
Successfully set Cgroup.
Set ARM Optimization.
No need to set ARM Optimization.
Fixing server package owner.
Setting finish flag.
Successfully set finish flag.
Preinstallation succeeded.
问题处理
--问题描述
采用交互模式执行前置时报错/usr/bin/env: python3: No such file or directory
[root@opendb01 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
/usr/bin/env: python3: No such file or directory

--解决办法
采用上面办法进行python版本升级
--查看python版本
[root@opendb01 ~]# python --version
Python 2.7.5

[root@opendb01 ~]# python3 --version
python3命令找不到

--采用yum方式安装操作系统自带的包管理器中的python3
yum install python3

--再次查看python版本
[root@opendb01 ~]# python --version
Python 2.7.5

[root@opendb01 ~]# python3 --version
Python 3.6.8

14、执行安装

使用gs_install安装openGauss。安装脚本gs_install必须以前置脚本中指定的omm执行,否则,脚本执行会报错。

/topsoft/soft/openGauss/cluster_config.xml为openGauss配置文件的路径。在执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码。这里设置为Topnet@123

设置的密码要符合复杂度要求:

  • 最少包含8个字符,最多包含16个字符。

  • 不能和用户名、当前密码(ALTER)、或当前密码反序相同。

  • 至少包含大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。

注意事项:

  • openGauss支持字符集的多种写法:gbk/GBK、UTF-8/UTF8/utf8/utf-8和Latine1/latine1。

  • 安装时若不指定字符集,默认字符集为SQL_ASCII,为简化和统一区域loacle默认设置为C,若想指定其他字符集和区域,请在安装时使用参数–gsinit-parameter="–locale=LOCALE"来指定,LOCALE为新数据库设置缺省的区域。

  • 默认端口15400

--赋予配置文件777的权限,因为安装脚本gs_install必须以前置脚本中指定的omm执行
chmod 777 /topsoft/soft/openGauss/cluster_config.xml

--切换用户  omm为前置脚本gs_preinstall中-U参数指定的用户
su - omm

--查看配置文件/etc/profile中的语言参数
[omm@opendb01 dn_6001]$ cat /etc/profile | grep LANG
export LANG=en_US.UTF-8

--查看系统支持UTF-8编码的区域
 locale -a|grep utf8

--执行安装脚本
gs_install -X /topsoft/soft/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"

安装过程中会生成ssl证书,证书存放路径为{gaussdbAppPath}/share/sslcert/om,其中{gaussdbAppPath}为openGauss配置文件中指定的程序安装目录。

[omm@opendb01 om]$ cd /topsoft/huawei/install/app/share/sslcert/om
[omm@opendb01 om]$ ls -l
total 64
-rw-------. 1 omm dbgrp  4399 Jan 27 08:43 cacert.pem
-rw-------. 1 omm dbgrp  4402 Jan 27 08:43 client.crt
-rw-------. 1 omm dbgrp  1766 Jan 27 08:43 client.key
-rw-------. 1 omm dbgrp    56 Jan 27 08:43 client.key.cipher
-rw-------. 1 omm dbgrp  1218 Jan 27 08:43 client.key.pk8
-rw-------. 1 omm dbgrp    24 Jan 27 08:43 client.key.rand
-rw-------. 1 omm dbgrp 10921 Jan 27 08:43 openssl.cnf
-rw-------. 1 omm dbgrp  4402 Jan 27 08:43 server.crt
-rw-------. 1 omm dbgrp  1766 Jan 27 08:43 server.key
-rw-------. 1 omm dbgrp    56 Jan 27 08:43 server.key.cipher
-rw-------. 1 omm dbgrp    24 Jan 27 08:43 server.key.rand

日志文件路径下会生成两个日志文件:“gs_install-YYYY-MMDD_HHMMSS.log”和“gs_local-YYYY-MM-DD_HHMMSS.log”。

/topsoft/huawei/log/omm/omm/om/gs_install-2024-01-27_084156.log

详细过程如下:

[omm@opendb01 ~]$ gs_install -X /topsoft/soft/openGauss/cluster_config.xml
Parsing the configuration file.
Check preinstall on every node.
Successfully checked preinstall on every node.
Creating the backup directory.
Successfully created the backup directory.
begin deploy..
Installing the cluster.
begin prepare Install Cluster..
Checking the installation environment on all nodes.
begin install Cluster..
Installing applications on all nodes.
Successfully installed APP.
begin init Instance..
encrypt cipher and rand files for database.
Please enter password for database:
Please repeat for database:
begin to create CA cert files
The sslcert will be generated in /topsoft/huawei/install/app/share/sslcert/om
NO cm_server instance, no need to create CA for CM.
Non-dss_ssl_enable, no need to create CA for DSS
Cluster installation is completed.
Configuring.
Deleting instances from all nodes.
Successfully deleted instances from all nodes.
Checking node configuration on all nodes.
Initializing instances on all nodes.
Updating instance configuration on all nodes.
Check consistence of memCheck and coresCheck on database nodes.
Configuring pg_hba on all nodes.
Configuration is completed.
The cluster status is Normal.
Successfully started cluster.
Successfully installed application.
end deploy..

问题处理

字符集不是UTF8

--问题描述
安装完成后登录数据库查看数据库时字符集不是UTF8

--原因
执行安装时未指定字符集参数,,未指定字符集参数执行安装时字符集默认是SQL_ASCII

--解决办法
--查看配置文件/etc/profile中的语言参数
[omm@opendb01 dn_6001]$ cat /etc/profile | grep LANG
export LANG=en_US.UTF-8

--

15、访问数据库

连接数据库的客户端工具包括gsql、应用程序接口(如JDBC)。

  • gsql是openGauss自带的客户端工具。使用gsql连接数据库,可以交互式地输入、编辑、执行SQL语句。

  • 用户可以使用标准的数据库应用程序接口(如JDBC),开发基于openGauss的应用程序。

--查看进程
[omm@opendb01 ~]$ ps -ef | grep gaussdb
omm        7669      1  8 07:18 ?        00:01:45 /topsoft/huawei/install/app/bin/gaussdb -D /topsoft/huawei/install/data/dn
或
[omm@opendb01 ~]$ gs_ctl query -D /topsoft/huawei/install/data/dn
[2024-01-28 07:40:02.099][9092][][gs_ctl]: gs_ctl query ,datadir is /topsoft/huawei/install/data/dn
 HA state:
	local_role                     : Normal
	static_connections             : 0
	db_state                       : Normal
	detail_information             : Normal

 Senders info:
No information
 Receiver info:
No information

本地连接数据库

gsql是openGauss提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何使用gsql连接数据库,关于gsql使用方法的更多信息请参考《工具与命令参考》中“客户端工具 > gsql”章节。

缺省情况下,客户端连接数据库后处于空闲状态时会根据参数session_timeout的默认值自动断开连接。如果要关闭超时设置,设置参数session_timeout为0即可。默认为0表示关闭超时设置

以操作系统用户omm登录数据库主节点。

su - omm
法一:
gsql -d postgres -p 15400

参数说明:
-d 连接的数据库名称,
-p 数据库主节点的端口号

法二:
gsql -d "host=127.0.0.1 port=15400 dbname=postgres user=omm password=Topnet@123"
--登录后如下:
[omm@localhost ~]$ gsql -d postgres -p 15400
gsql ((openGauss 5.0.1 build 33b035fd) compiled at 2023-12-15 20:19:06 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# \l+
                                                              List of databases
   Name    | Owner | Encoding |  Collate   |   Ctype    | Access privileges | Size  | Tablespace |
  Description
-----------+-------+----------+------------+------------+-------------------+-------+------------+--------------
------------------------------
 postgres  | omm   | UTF8     | en_US.utf8 | en_US.utf8 |                   | 13 MB | pg_default | default admin
istrative connection database
 template0 | omm   | UTF8     | en_US.utf8 | en_US.utf8 | =c/omm           +| 13 MB | pg_default | default templ
ate for new databases
           |       |          |            |            | omm=CTc/omm       |       |            |
 template1 | omm   | UTF8     | en_US.utf8 | en_US.utf8 | =c/omm           +| 13 MB | pg_default | unmodifiable
empty database
           |       |          |            |            | omm=CTc/omm       |       |            |
(3 rows)

--查看数据库状态
[omm@localhost ~]$ gs_om -t status
-----------------------------------------------------------------------

cluster_name    : dbCluster
cluster_state   : Normal   #“Normal”表示数据库可正常使用
redistributing  : No

--创建数据库  不能是en_US.utf8不然报错
openGauss=# create database test with encoding 'utf8' template = template0;
CREATE DATABASE

部署成功了。

以上是openGauss安装部署实践分享,欢迎大家一起交流学习。

  • 56
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gauss松鼠会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值