#单机(主备)部署

执行安装部署前,请以安装用户(yashan)登录192.168.1.2服务器,并进入/home/yashan/install安装目录。

$ cd /home/yashan/install

# 交互式部署

交互式部署支持部署yashan模式的单库或主备环境,如需搭建mysql模式的数据库或yashan模式的级联备环境或双复制组主备部署只能通过手动部署

Note:

在执行交互式部署的过程中,输入相应配置后均需按Enter提交信息(步骤中将不再重复赘述),对于已设置默认值(形如(default: xxx))且无需自定义调整的配置,直接按Enter进入下一步即可。

如需在过程中退出程序,按Ctrl+C即可。

# 步骤1:配置部署信息

  1. 执行如下命令,进入交互式部署程序。

    $ ./bin/yasboot init 
     __   __           _                    ____   ____  
     \ \ / /__ _  ___ | |__    __ _  _ __  |  _ \ | __ ) 
      \ V // _` |/ __|| '_ \  / _` || '_ \ | | | ||  _ \ 
       | || (_| |\__ \| | | || (_| || | | || |_| || |_) |
       |_| \__,_||___/|_| |_| \__,_||_| |_||____/ |____/ 
    
    Welcome to use YashanDB, this script will guide you to deploy YashanDB.
    
  2. 在出现如下信息时,按需输入对应数字选择部署模式。

    • 1:表示采用1台服务器(single-host)部署单库环境,且默认在当前服务器上部署,无需重复输入安装用户名和密码。

    • 2:表示采用多台服务器(multi-host)部署主备环境,要求当前服务器必须是多台服务器之一,且要求所有服务器的安装用户(yashan)具备SSH权限且SSH的用户名、密码以及端口相互一致。

    which installation mode for this deployment:
    1) single-host: install locally, should not use SSH.
    2) multi-host: install YashanDB to multiple hosts, SSH user & password required.
    (default: 1)
    please select > 2
    
  3. 在出现如下信息时,按需输入对应数据选择部署形态。

    • 1:表示单机部署(SE)。

    • 2:表示共享集群部署(CE)。

    which type of YashanDB do you want to deploy:
    1) SE: Standalone Deployment.
    2) CE: YAC Deployment.
    (default: 1)
    please select > 1
    
  4. 输入规划用于部署数据库的服务器IP地址。

    which ip address of the YashanDB Operation Manage, such as '192.168.1.2,192.168.1.3' or '192.168.1.[2-4]'
    please enter ip address > 192.168.1.2,192.168.1.3,192.168.1.4
    
  5. (可选)若为多服务器部署(multi-host),需根据提示输入安装用户信息:

    1. )输入用户名,所有服务器的安装用户的用户名需要一致。

      what is an SSH username used to install YashanDB
      (default: yashan)
      please enter ssh username > 
      
    2. )输入密码,所有服务器的安装用户的密码需要一致,如果配置了免密则直接置空。

      which SSH password
      please enter ssh password > ******
      
    3. )输入SSH端口号,所有服务器的SSH端口号需要一致。

      which SSH port
      (default: 22)
      please enter ssh port > 
      
  6. 校验服务器连接信息。

    出现如下信息,表示服务器连接成功。

    checking SSH connection status...
    +----------------------------------------------+
    | ip            | message              | check |
    +----------------------------------------------+
    | 192.168.1.2   | connect successfully | OK    |
    +---------------+----------------------+-------+
    | 192.168.1.3   | connect successfully | OK    |
    +---------------+----------------------+-------+
    | 192.168.1.4   | connect successfully | OK    |
    +---------------+----------------------+-------+
    

    如果连接失败,则需要重新输入服务器信息。

# 步骤2:校验部署环境

在环境校验过程中,如无问题程序会自动进入下一步,无需手动操作。若某一项检验与数据库所需环境不符,将返回相应提示ignore it and continue, [y/n] >并需手动输入y/n进行确认:

  • n:表示不忽略环境情况,此时会退出程序,可以根据提示执行相关命令。
  • y:表示忽略,程序继续进入下一步,但最终可能会部署失败或功能受损。
  1. 检查操作系统相关配置。

    checking system os...
    +-----------------------------------------------------------------------------------+
    | ip          | hostname    | cpu | memory  | firewalld | hugepage | YASDBA | check |
    +-----------------------------------------------------------------------------------+
    | 192.168.1.2 | host0001    | 8   | 31.26GB | inactive  | always   | joined | OK    |
    +-------------+-------------+-----+---------+-----------+----------+--------+-------+
    | 192.168.1.3 | host0002    | 8   | 31.26GB | inactive  | always   | joined | OK    |
    +-------------+-------------+-----+---------+-----------+----------+--------+-------+
    | 192.168.1.4 | host0003    | 4   | 15.51GB | inactive  | always   | joined | OK    |
    +-------------+-------------+-----+---------+-----------+----------+--------+-------+
    
  2. 检查系统内核相关配置。

    checking system sysctl...
    +------------------------------------------------------------------------+
    | ip          | swappiness | ip_local_port_range | max_map_count | check |
    +------------------------------------------------------------------------+
    | 192.168.1.2 | 0          | 102465535           | 2000000       | OK    |
    +-------------+------------+---------------------+---------------+-------+
    | 192.168.1.3 | 0          | 3276860999          | 2000000       | OK    |
    +-------------+------------+---------------------+---------------+-------+
    | 192.168.1.4 | 30         | 3276860999          | 65530         | OK    |
    +-------------+------------+---------------------+---------------+-------+
    
  3. 检查限制系统资源相关配置。

    checking system ulimit...
    +--------------------------------------------------------------------------------------+
    | ip          | open files | max user processes | max memory size | stack size | check |
    +--------------------------------------------------------------------------------------+
    | 192.168.1.2 | 1048576    | 65535              | unlimited       | 8192       | FAIL  |
    +-------------+------------+--------------------+-----------------+------------+-------+
    | 192.168.1.3 | 1048576    | 65535              | unlimited       | 8192       | FAIL  |
    +-------------+------------+--------------------+-----------------+------------+-------+
    | 192.168.1.4 | 1048576    | 65535              | unlimited       | 8192       | FAIL  |
    +-------------+------------+--------------------+-----------------+------------+-------+
    
    this system deployment environment, some ulimit configure seems bad.
    please update with ulimit under root user, such as:
    echo "* soft nproc 1048576">> /etc/security/limits.conf
    echo "* hard nproc 1048576">> /etc/security/limits.conf
    
    if configure failed, please resolved by yourself, maybe need to reboot system.
    you can also ignore it and continue, but it is not friendly to the YashanDB and may affect performance or system stability
    ignore and continue [y/n] > 
    
  4. 检查依赖库。

    checking system libraries...
    +-------------------------------------------------------------------------------------------------------------------+
    | ip          | os     | libcrypto           | libssl           | liblz4          | libz          | libzstd | check |
    +-------------------------------------------------------------------------------------------------------------------+
    | 192.168.1.2 | centos | libcrypto.so.1.1.1k | libssl.so.1.1.1k | liblz4.so.1.8.3 | libz.so.1.2.7 | unknow  | FAIL  |
    +-------------+--------+---------------------+------------------+-----------------+---------------+---------+-------+
    | 192.168.1.3 | centos | libcrypto.so.1.1.1k | libssl.so.1.1.1k | liblz4.so.1.8.3 | libz.so.1.2.7 | unknow  | FAIL  |
    +-------------+--------+---------------------+------------------+-----------------+---------------+---------+-------+
    | 192.168.1.4 | centos | libcrypto.so.1.1.1k | libssl.so.1.1.1k | liblz4.so.10.7.5 | libz.so.1.2.7 | unknow  | FAIL  |
    +-------------+--------+---------------------+------------------+-----------------+---------------+---------+-------+
    
    this system deployment environment, some libraries unfound.
    please install them by yourself, such as:
    sudo yum install zlib lz4 libzstd
    
    if configure failed, please resolved by yourself, also you should confiure 'LD_LIBRARY_PATH' to resolved
    you can also ignore it and continue, but deployment maybe fail
    ignore and continue [y/n] > 
    

# 步骤3:配置数据库相关信息

  1. 输入数据库名称。

    what is the name of the YashanDB
    (default: yashandb)
    please enter cluster name(db name) > 
    
  2. 设置主备规模,即输入主备库的总个数。

    若为单库部署则输入1,若为一主一备则输入2,以此类推。

    how many nodes are there in the YashanDB
    (default: 3)
    please enter the number of nodes > 
    
  3. 选择需要安装的插件,指定多个值时使用逗号,隔开。

    选项 说明
    1/none 不安装插件
    2/all 安装所有插件,默认值
    3/gis 安装用于内置GIS函数的插件
    4/dblink 安装用于DBLink相关功能的插件
    5/udf 安装用于自定义函数相关功能的插件
    6/s3 安装用于S3 bucket相关功能的插件
    7/listagg 安装用于内置LSFA_LISTAGG函数的插件
    8/xml 安装用于内置XML函数的插件
    what plugins do you want to intall for the YashanDB
    1) none: do not install any plugins.
    2) all: install all plugins below.
    3) gis
    4) dblink
    5) udf
    6) s3
    7) listagg
    8) xml
    you can input such as: 3,4,5,6 or gis,dblink,udf,s3
    (default: 2)
    please select > 
    
  4. 根据目录划分的相关规划,配置数据库所需目录:

    1. )HOME目录:
    which install-path of the YashanDB, YASDB_HOME will be: <install-path>/<version>
    (default: /home/yashan/install)
    please enter install-path > /data/yashan/yasdb_home
    YASDB_HOME will be: /data/yashan/yasdb_home/{version_number}
    
    1. )DATA目录:
    which data-path of the YashanDB, YASDB_DATA will be: <data-path>/db-<nodeid>
    (default: /data/yashan/yasdb_home/yasdb_data)
    please enter data-path > /data/yashan/yasdb_data
    
    1. )运行日志目录:
    which log-path of the YashanDB, run.log will be: <log-path>/db-<nodeid>/run/run.log
    (default: /data/yashan/yasdb_home/log)
    please enter log-path > /data/yashan/log
    
  5. 选择数据库监听IP。

    which ip you will be used to listen
    1) manage-ip: listen on 192.168.1.2,192.168.1.3,192.168.1.4
    2) 0.0.0.0: listen on 0.0.0.0
    (default: 1)
    please select > 
    
  6. 设置超级管理员sys用户的初始密码,配置要求如下:

    • 密码长度为8 - 64位。

    • 密码中不能包含对应的数据库用户名称。

    • 密码必须同时包含数字、字母和特殊字符。

    • OS命令相关的特殊字符(例如@/.!$'等)需进行转义。

    which sys password for YashanDB
    please enter sys password > ********
    checking sys password now, please wait...
    
  7. 配置数据库可使用的内存配额(即占对应服务器总内存的百分比)。

    若当前实际可用值低于配置值,可根据提示选择是否忽略(y/n),如果忽略(输入y)则自动进入下一步,但最终可能会部署失败。如果不忽略(输入n)则需要重新输入恰当的内存百分比。

    which percentage of host memory available for YashanDB, 0 is unlimited
    (default: 80)
    please enter memory limit > 80
    host 192.168.1.2 memory limit is 25609M, but host available memory is 21018M
    it may cause database deployment failure
    ignore and continue [y/n] > n
    
    [error] not ignore warning, input again
    please retry, or use Ctrl-C to exit.
    please enter memory limit > 
    
  8. 配置起始端口。

    部署YashanDB时将基于该值按照一定规则生成数据库所需的所有端口号。

    which port generate for YashanDB
    (default: 1688)
    please enter port > 
    

# 步骤4:部署数据库

根据提示选择是否部署YashanDB:

  • 1:仅配置(config-only),表示仅在当前目录生成基于上述配置值的部署文件,然后自动退出交互式程序,后续可基于配置文件进行数据库部署。后续部署时执行yasboot cluster deploy命令无需再指定--sys-password参数。
  • 2:立即部署(install-now),表示立即基于上述配置值部署YashanDB。
bootloader for parameter setting has been completed, please select:
1) config-only: only generate configuration, do not install now.
                you should update those configuration, such as: database building parameters.
                then install with those configuration by yourself.
2) install-now: generate configuration and install now
(default: 2)

# 步骤5:部署后操作

# 部署成功

返回如下信息,表示数据库部署成功。

generate configuration for host and YashanDB...
generate configuration succeed
install software...
install software succeed
initialize database...
initialize database succeed

数据库部署成功后,可按需执行如下配置:

  • 配置环境变量

    Do you want to append environment to ~/.bashrc on each machine?
    (default: yes)
    [y/n] > y
    
    append environment to ~/.bashrc successfully
    please source environment by yourself, such as:
    source ~/.bashrc
    
  • 配置monit守护进程以及开机自启动

    该操作与配置开机自启动中介绍的操作相同,择一执行即可。

    Do you want to enable the monit function?
    If this feature is enabled, when process crashes for various reasons, it will be pulled up .
    However, if you use yasql to shutdown database, yasdb process will not be pulled up.
    [y/n] > y
    
    enable the daemon function successfully
    
    Already generate scripts: yashandb_boot_start.sh in current directory
    If you want to set monit to start automatically at boot, you can execute it in each machine, such as: 
    sudo ./yashandb_boot_start.sh
    

# 部署失败

返回如下信息,表示数据库部署失败。可根据提示进行环境清理,清理后将退出交互式部署程序。如需重新部署,请重新执行上述全部操作。

generate configuration for host and YashanDB...
generate configuration succeed
install software...
install software succeed
initialize database...
initialize database failed

cluster deploy failed, stdout:database recommend parameter is enabled: 
node 1-1, type: db, percent of memory_limit: 99%(32011M), percent of cpu_limit: 100%(8 cores)

task completed, status: FAILED
retcode: 1
stdout: apply recommend param when start node nomount
stderr: wait node 1-1 process start failed: Starting instance nomount
YAS-00101 cannot allocate 31377653760 bytes for Global Area
Failed to start instance

, stderr:
Do you want to clean this failed database?
[y/n] > y

clean success

# 步骤6:检查安装结果

部署成功后,可根据本操作查看数据库相关信息。

  1. 执行如下命令,查看数据库状态。
$ yasboot cluster status -c yashandb -d -p sys_password
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address   | data_path                      |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| host0001 | db        | 1-1:1  | 54814 | open            | normal          | primary       | 192.168.1.2:1688 | /data/yashan/yasdb_data/db-1-1 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+--------------------------------+
| host0002 | db        | 1-2:2  | 49529 | open            | normal          | standby       | 192.168.1.3:1688 | /data/yashan/yasdb_data/db-1-2 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+--------------------------------+
| host0003 | db        | 1-3:3  | 49582 | open            | normal          | standby       | 192.168.1.4:1688 | /data/yashan/yasdb_data/db-1-3 |
+----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+--------------------------------+
  1. 使用yasql工具连接数据库,查看实例状态。
$ yasql sys/********@192.168.1.2:1688
SQL> SELECT STATUS FROM V$INSTANCE;

STATUS        
------------- 
OPEN        

SQL> SELECT database_name FROM v$database;

DATABASE_NAME                                                    
---------------------------------------------------------------- 
yashandb     
  1. (可选)创建数据库用户并赋权,更多操作请查阅用户管理
CREATE USER sales IDENTIFIED BY sales;

GRANT CONNECT TO SALES;

exit

# 手动部署

# 步骤1:生成配置文件

根据需要部署的数据库规模(例如单库、1主2备等)不同,生成配置文件时需要指定的参数略有差异,常用参数如下表所示,参数全集请查阅yasboot package se gen命令

本文将介绍几种相对典型的配置示例,实际安装时可选择相对接近的规模示例进行参考。

  1. 执行yasboot package se gen命令生成配置文件。部署为MySQL兼容模式时,必须配置--mode mysql参数。
$ ./bin/yasboot package se gen --cluster yashandb --recommend-param \
-u yashan -p yashan_password --ip 192.168.1.2 --port 22 \
--install-path /data/yashan/yasdb_home  \
--data-path /data/yashan/yasdb_data \
--log-path /data/yashan/log \
--begin-port 1688 \
# 需部署为mysql模式时,请添加如下命令选项
--mode mysql

执行完毕后,当前目录下将生成{集群名称}.toml和hosts.toml两个配置文件:

-rw-------. 1 yashan yashan       444 Aug 31 16:27 hosts.toml
-rw-------. 1 yashan yashan       708 Aug 31 16:27 yashandb.toml
  1. 根据实际需要,手动修改配置文件中的相关参数:

    Caution:

    不建议删除文件中任何行,否则可能导致后续安装过程报错或所搭建的环境后续无法进行扩展配置。

    • 服务器的配置文件hosts.toml:可以按需修改yasom与yasagent的监听端口、日志存放路径等信息。

    • 数据库集群的配置文件yashandb.toml:可在group级别设置YashanDB的所有建库参数,可在node级别设置YashanDB的所有配置参数

# 示例内容为mysql模式单库部署的yashandb.toml文件,具体信息以实际展示结果为准

cluster = "yashandb"    # 安装后修改也不会生效,除非重新安装
create_simple_schema = false # 为true部署完会执行示例的SQL,若改为true需要在deploy时指定sys-password参数
mode = "MYSQL"          # 数据库服务端语法模式
recommend_param = true  # 开启推荐参数
scale_factor = 100      # 数据规模
scene = "NORMAL"        # 参数调优场景
table_type = "HEAP"     # 主要的业务表类型,mysql模式仅支持HEAP表
uuid = "64f04f0e999c72db72bd565762e6a4ea" # 系统自动生成,不建议修改
yas_type = "SE"         # 部署形态,安装后修改也不会生效,除非重新安装

[[group]]
  group_type = "db"     # 安装后修改也不会生效,除非重新安装
  name = "dbg1"         # 安装后修改也不会生效,除非重新安装
  [group.config]        # 可配置所有建库参数,不配置时采用默认值
    CHARACTER_SET = "utf8"
    ISARCHIVELOG = true
    REDO_FILE_NUM = 4
    REDO_FILE_SIZE = "128M"
    TIME_ZONE = ""

  [[group.node]]
    data_path = "/data/yashan/yasdb_data" # DATA目录,安装后修改也不会生效,除非重新安装
    hostid = "host0001" # 安装后修改也不会生效,除非重新安装
    memory_limit = "-" # 节点可使用内存上限,跟使用的服务器内存有关
    mysql_addr = "192.168.1.2:1690" # MySQL协议的监听地址,仅mysql模式才有该参数
    role = 1    # 数据库主备角色,安装后修改也不会生效,除非重新安装
    [group.node.config] # 可配置所有数据库参数,不配置时采用默认值,安装后修改可以生效(只读参数不可修改)      
      ARCH_CLEAN_IGNORE_MODE = "BACKUP"
      CGROUP_ROOT_DIR = "/sys/fs/cgroup"
      EMPTY_STRING_AS_NULL = false  # 数据库服务端采用mysql模式时该参数会自动设置为FALSE,且不得手动修改
      LISTEN_ADDR = "192.168.1.2:1688"
      REPLICATION_ADDR = "192.168.1.2:1689"
      RUN_LOG_FILE_PATH = "/data/yashan/log"
      RUN_LOG_LEVEL = "INFO"
      SLOW_LOG_FILE_PATH = "/data/yashan/log"
    [group.node.mysql_config] # 部署语法模式为mysql的数据库时可配置所有支持以文件方式修改的mysql模式下的全局变量

# 步骤2:执行安装

执行如下命令,执行软件包安装。

$ ./bin/yasboot package install -t hosts.toml
参数 说明
-t, --toml 部署数据库集群的hosts.toml路径

# 步骤3:部署数据库

执行如下命令,部署数据库。

$ ./bin/yasboot cluster deploy -t yashandb.toml -p sys_password
参数 说明
-t, --toml 部署数据库集群的{集群名称}.toml文件路径
-p, --sys-password 设置数据库超级管理员sys用户的密码,配置要求如下:
* 密码长度为8 - 64位
* 密码中不能包含对应的数据库用户名称
* 密码必须同时包含数字、字母和特殊字符
* OS命令相关的特殊字符(例如@/.!$'等)需进行转义

Note:

还可以通过指定-d, --child参数展示任务以及子任务信息,以便了解部署进度。

返回如下信息表示已成功部署。

task completed, status: SUCCESS

# 步骤4:配置环境变量

部署成功后,--install-path(例如/data/yashan/yasdb_home)指定的目录下会生成子目录{version_number}/conf,该目录下会自动生成YashanDB相关的环境变量文件{集群名称}.bashrc,需将其应用于操作系统。

执行如下命令,生效环境变量。

# 进入环境变量文件所在目录,例如/data/yashan/yasdb_home/{version_number}/conf
$ cd /data/yashan/yasdb_home/{version_number}/conf

# 生效环境变量
$ cat yashandb.bashrc >> ~/.bashrc
$ source ~/.bashrc

# 校验环境变量是否生效(回显信息中的路径请以实际为准)
$ echo $YASDB_DATA
/data/yashan/yasdb_data/db-1-1

具体的环境变量介绍请查阅安装后初始环境 > 环境变量

# 步骤5:检查安装结果

若连接报错或执行SQL语句报错,请根据错误提示信息检查安装步骤,或咨询我们的技术支持。

  1. 执行如下命令,查看数据库状态。

    $ yasboot cluster status -c yashandb -d -p sys_password
    

    回显信息示例如下:

    +-------------------------------------------------------------------------------------------------------------------------------------------------+
    | hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address   | data_path                        |
    +-------------------------------------------------------------------------------------------------------------------------------------------------+
    | host0001 | db        | 1-1:1  | 54814 | open            | normal          | primary       | 192.168.1.2:1688 | /data/yashan/yasdb_data/db-1-1   |
    +----------+-----------+--------+-------+-----------------+-----------------+---------------+-----------------------------------------------------+
    
  2. 使用yasql工具连接数据库,查看实例状态。

    $ yasql sys/********@192.168.1.2:1688
    SQL> SELECT STATUS FROM V$INSTANCE;
    
    STATUS        
    ------------- 
    OPEN        
    
    SQL> SELECT database_name FROM v$database;
    
    DATABASE_NAME                                                    
    ---------------------------------------------------------------- 
    yashandb   
    
    # 在OPEN状态可以查看当前会话的语法模式
    SQL> SHOW PARAMETER COMPAT_VECTOR
    
    name                                                             value
    ---------------------------------------------------------------- ----------------------------------------------------------------
    COMPAT_VECTOR                                                    yashan
    
  3. (可选)创建数据库用户并赋权,更多操作请查阅用户管理

    SQL> CREATE USER sales IDENTIFIED BY sales;
    
    SQL> GRANT CONNECT TO SALES;
    
    SQL> exit
    

# 步骤6:启动守护进程

执行如下命令,启动守护进程。

$ yasboot monit start --cluster yashandb

Note:

后续使用中服务器重启开机后需手动启动守护进程,守护进程会自动拉起数据库相关进程,从而启动数据库。为简化运维,可将守护进程配置为开机自启动间接实现数据库开机自启动,具体操作请查阅配置开机自启动

edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流