#存算一体分布式集群部署
执行安装部署前,请以安装用户(yashan)登录192.168.1.2服务器,并进入/home/yashan/install安装目录。
$ cd /home/yashan/install
# 步骤1:生成部署文件
根据需要部署的数据库规模不同,生成配置文件时需要指定的参数略有差异,常用参数如下表所示,参数全集请查阅yasboot package de gen命令。
本文将介绍几种相对典型的配置示例,实际安装时可选择相对接近的规模示例进行参考。
以使用3台服务器部署1个MN组(MN节点1主2备)、2个CN、1个DN组(DN节点1主1备)的规格为例。
- 执行yasboot package de gen命令生成配置文件。
$ ./bin/yasboot package de gen --cluster yashandb --recommend-param \
-u yashan -p yashan_password --ip 192.168.1.2,192.168.1.3,192.168.1.4 --port 22 \
--install-path /data/yashan/yasdb_home \
--data-path /data/yashan/yasdb_data \
--log-path /data/yashan/log \
--begin-port 1688 \
--mn 3 --cn 2 --dn 1-2
执行完毕后,当前目录下将生成{集群名称}.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
根据实际需要,手动修改配置文件中的相关参数:
Caution:
不建议删除文件中任何行,否则可能导致后续安装过程报错或所搭建的环境后续无法进行扩展配置。
# 示例内容为存算一体分布式集群部署(MN节点1主2备+DN节点1主1备)的yashandb.toml文件,具体信息以实际展示结果为准
cluster = "yashandb" # 安装后修改也不会生效,除非重新安装
create_simple_schema = false # 为true部署完会执行示例的SQL,若改为true需要在deploy时指定sys-password参数
deploy_mode = "NORMAL" # 分布式的部署模式
recommend_param = true # 开启推荐参数
scale_factor = 100 # 数据规模
scene = "NORMAL" # 参数调优场景
table_type = "LSC" # 主要的业务表类型
uuid = "64f1568f4f6b033e58a015a833f0ad9e" # 系统自动生成,不建议修改
yas_type = "DE" # 部署模式,安装后修改也不会生效,除非重新安装
[[group]]
group_type = "mn" # 节点组类型,安装后修改也不会生效,除非重新安装
name = "mng1" # 节点组名称,安装后修改也不会生效,除非重新安装
[group.config] # 可配置所有建库参数,不配置时采用默认值
CHARACTER_SET = "utf8"
ISARCHIVELOG = true
REDO_FILE_NUM = 4
REDO_FILE_SIZE = "128M"
[[group.node]] # 节点配置
cpu_limit = 8 # 节点可使用CPU核数上限
data_path = "/data/yashan/yasdb_data" # DATA目录,安装后修改也不会生效,除非重新安装
hostid = "host0001" # 节点所在服务器标识,安装后修改也不会生效,除非重新安装
memory_limit = "1536M" # 节点可使用内存上限,跟使用的服务器内存有关
role = 1 # 数据库主备角色,安装后修改也不会生效,除非重新安装
[group.node.config] # 可配置所有数据库参数,不配置时采用默认值,安装后修改也不会生效,除非重新安装
DATA_BUFFER_SIZE = "256M"
DB_BLOCK_SIZE = "8K"
DDL_LOCK_TIMEOUT = 60
DEFAULT_TABLE_TYPE = "LSC"
DICTIONARY_CACHE_SIZE = 20
DIN_ADDR = "192.168.1.2:1679"
DSTB_POOL_SIZE = 10
LARGE_POOL_SIZE = "32M"
LISTEN_ADDR = "192.168.1.2:1678"
MAX_SESSIONS = 1024
OPEN_CURSORS = 310
REDO_BUFFER_SIZE = "8M"
REPLICATION_ADDR = "192.168.1.2:1680"
RUN_LOG_FILE_PATH = "/data/yashan/log"
RUN_LOG_LEVEL = "DEBUG"
SHARE_POOL_SIZE = "256M"
SLOW_LOG_FILE_PATH = "/data/yashan/log"
SQL_POOL_SIZE = 45
TRANSACTION_LOCK_TIMEOUT = 300
UNDO_RETENTION = 300
[[group.node]]
cpu_limit = 8
data_path = "/data/yashan/yasdb_data"
hostid = "host0002"
memory_limit = "1536M"
role = 2
[group.node.config]
DATA_BUFFER_SIZE = "256M"
DB_BLOCK_SIZE = "8K"
DDL_LOCK_TIMEOUT = 60
DEFAULT_TABLE_TYPE = "LSC"
DICTIONARY_CACHE_SIZE = 20
DIN_ADDR = "192.168.1.3:1679"
DSTB_POOL_SIZE = 10
LARGE_POOL_SIZE = "32M"
LISTEN_ADDR = "192.168.1.3:1678"
MAX_SESSIONS = 1024
OPEN_CURSORS = 310
REDO_BUFFER_SIZE = "8M"
REPLICATION_ADDR = "192.168.1.3:1680"
RUN_LOG_FILE_PATH = "/data/yashan/log"
RUN_LOG_LEVEL = "DEBUG"
SHARE_POOL_SIZE = "256M"
SLOW_LOG_FILE_PATH = "/data/yashan/log"
SQL_POOL_SIZE = 45
TRANSACTION_LOCK_TIMEOUT = 300
UNDO_RETENTION = 300
[[group.node]]
cpu_limit = 8
data_path = "/data/yashan/yasdb_data"
hostid = "host0003"
memory_limit = "1536M"
role = 2
[group.node.config]
DATA_BUFFER_SIZE = "256M"
DB_BLOCK_SIZE = "8K"
DDL_LOCK_TIMEOUT = 60
DEFAULT_TABLE_TYPE = "LSC"
DICTIONARY_CACHE_SIZE = 20
DIN_ADDR = "192.168.1.4:1679"
DSTB_POOL_SIZE = 10
LARGE_POOL_SIZE = "32M"
LISTEN_ADDR = "192.168.1.4:1678"
MAX_SESSIONS = 1024
OPEN_CURSORS = 310
REDO_BUFFER_SIZE = "8M"
REPLICATION_ADDR = "192.168.1.4:1680"
RUN_LOG_FILE_PATH = "/data/yashan/log"
RUN_LOG_LEVEL = "DEBUG"
SHARE_POOL_SIZE = "256M"
SLOW_LOG_FILE_PATH = "/data/yashan/log"
SQL_POOL_SIZE = 45
TRANSACTION_LOCK_TIMEOUT = 300
UNDO_RETENTION = 300
[[group]]
group_type = "cn"
name = "cng1"
[group.config]
CHARACTER_SET = "utf8"
ISARCHIVELOG = true
REDO_FILE_NUM = 4
REDO_FILE_SIZE = "128M"
[[group.node]]
cpu_limit = 8
data_path = "/data/yashan/yasdb_data"
hostid = "host0002"
memory_limit = "3500M"
role = 1
[group.node.config]
DATA_BUFFER_SIZE = "256M"
DB_BLOCK_SIZE = "8K"
DDL_LOCK_TIMEOUT = 60
DEFAULT_TABLE_TYPE = "LSC"
DICTIONARY_CACHE_SIZE = 20
DIN_ADDR = "192.168.1.3:1689"
DSTB_POOL_SIZE = 10
LARGE_POOL_SIZE = "32M"
LISTEN_ADDR = "192.168.1.3:1688"
MAX_PARALLEL_WORKERS = 128
MAX_REACTOR_CHANNELS = 1
MAX_SESSIONS = 1024
OPEN_CURSORS = 310
REDO_BUFFER_SIZE = "8M"
REPLICATION_ADDR = "192.168.1.3:1690"
RUN_LOG_FILE_PATH = "/data/yashan/log"
RUN_LOG_LEVEL = "DEBUG"
SHARE_POOL_SIZE = "256M"
SLOW_LOG_FILE_PATH = "/data/yashan/log"
SQL_POOL_SIZE = 45
TRANSACTION_LOCK_TIMEOUT = 300
UNDO_RETENTION = 300
WORK_AREA_HEAP_SIZE = "2M"
WORK_AREA_POOL_SIZE = "128M"
[[group.node]]
cpu_limit = 8
data_path = "/data/yashan/yasdb_data"
hostid = "host0003"
memory_limit = "3500M"
role = 1
[group.node.config]
DATA_BUFFER_SIZE = "256M"
DB_BLOCK_SIZE = "8K"
DDL_LOCK_TIMEOUT = 60
DEFAULT_TABLE_TYPE = "LSC"
DICTIONARY_CACHE_SIZE = 20
DIN_ADDR = "192.168.1.4:1689"
DSTB_POOL_SIZE = 10
LARGE_POOL_SIZE = "32M"
LISTEN_ADDR = "192.168.1.4:1688"
MAX_PARALLEL_WORKERS = 128
MAX_REACTOR_CHANNELS = 1
MAX_SESSIONS = 1024
OPEN_CURSORS = 310
REDO_BUFFER_SIZE = "8M"
REPLICATION_ADDR = "192.168.1.4:1690"
RUN_LOG_FILE_PATH = "/data/yashan/log"
RUN_LOG_LEVEL = "DEBUG"
SHARE_POOL_SIZE = "256M"
SLOW_LOG_FILE_PATH = "/data/yashan/log"
SQL_POOL_SIZE = 45
TRANSACTION_LOCK_TIMEOUT = 300
UNDO_RETENTION = 300
WORK_AREA_HEAP_SIZE = "2M"
WORK_AREA_POOL_SIZE = "128M"
[[group]]
group_type = "dn"
name = "dng1"
[group.config]
CHARACTER_SET = "utf8"
ISARCHIVELOG = true
REDO_FILE_NUM = 4
REDO_FILE_SIZE = "128M"
[[group.node]]
cpu_limit = 8
data_path = "/data/yashan/yasdb_data"
hostid = "host0003"
memory_limit = "7000M"
role = 1
[group.node.config]
DATA_BUFFER_SIZE = "256M"
DB_BLOCK_SIZE = "8K"
DDL_LOCK_TIMEOUT = 60
DEFAULT_TABLE_TYPE = "LSC"
DICTIONARY_CACHE_SIZE = 20
DIN_ADDR = "192.168.1.4:1699"
DSTB_POOL_SIZE = 10
LARGE_POOL_SIZE = "32M"
LISTEN_ADDR = "192.168.1.4:1698"
MAX_PARALLEL_WORKERS = 512
MAX_SESSIONS = 1024
OPEN_CURSORS = 310
REDO_BUFFER_SIZE = "8M"
REPLICATION_ADDR = "192.168.1.4:1700"
RUN_LOG_FILE_PATH = "/data/yashan/log"
RUN_LOG_LEVEL = "DEBUG"
SHARE_POOL_SIZE = "256M"
SLOW_LOG_FILE_PATH = "/data/yashan/log"
SQL_POOL_SIZE = 45
TRANSACTION_LOCK_TIMEOUT = 300
UNDO_RETENTION = 300
WORK_AREA_HEAP_SIZE = "2M"
WORK_AREA_POOL_SIZE = "128M"
[[group.node]]
cpu_limit = 8
data_path = "/data/yashan/yasdb_data"
hostid = "host0001"
memory_limit = "7000M"
role = 2
[group.node.config]
DATA_BUFFER_SIZE = "256M"
DB_BLOCK_SIZE = "8K"
DDL_LOCK_TIMEOUT = 60
DEFAULT_TABLE_TYPE = "LSC"
DICTIONARY_CACHE_SIZE = 20
DIN_ADDR = "192.168.1.2:1699"
DSTB_POOL_SIZE = 10
LARGE_POOL_SIZE = "32M"
LISTEN_ADDR = "192.168.1.2:1698"
MAX_PARALLEL_WORKERS = 512
MAX_SESSIONS = 1024
OPEN_CURSORS = 310
REDO_BUFFER_SIZE = "8M"
REPLICATION_ADDR = "192.168.1.2:1700"
RUN_LOG_FILE_PATH = "/data/yashan/log"
RUN_LOG_LEVEL = "DEBUG"
SHARE_POOL_SIZE = "256M"
SLOW_LOG_FILE_PATH = "/data/yashan/log"
SQL_POOL_SIZE = 45
TRANSACTION_LOCK_TIMEOUT = 300
UNDO_RETENTION = 300
WORK_AREA_HEAP_SIZE = "2M"
WORK_AREA_POOL_SIZE = "128M"
# 步骤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/cn-2-1
具体的环境变量介绍请查阅安装后初始环境 > 环境变量。
# 步骤5:检查安装结果
若连接报错或执行SQL语句报错,请根据错误提示信息检查安装步骤,或咨询我们的技术支持。
执行如下命令,查看数据库状态。
$ 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 | mn | 1-1:1 | 56961 | open | normal | primary | 192.168.1.2:1678 | /data/yashan/yasdb_data/mn-1-1 | | +-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+ | | dn | 3-2:7 | 57029 | open | normal | standby | 192.168.1.2:1698 | /data/yashan/yasdb_data/dn-3-2 | +----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+ | host0002 | mn | 1-2:2 | 57024 | open | normal | standby | 192.168.1.3:1678 | /data/yashan/yasdb_data/mn-1-2 | | +-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+ | | cn | 2-1:4 | 57024 | open | normal | primary | 192.168.1.3:1688 | /data/yashan/yasdb_data/cn-2-1 | +----------+-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+ | host0003 | mn | 1-3:3 | 57021 | open | normal | standby | 192.168.1.4:1678 | /data/yashan/yasdb_data/mn-1-3 | | +-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+ | | cn | 2-2:5 | 57021 | open | normal | primary | 192.168.1.4:1688 | /data/yashan/yasdb_data/cn-2-2 | | +-----------+--------+-------+-----------------+-----------------+---------------+------------------+----------------------------------+ | | dn | 3-1:6 | 57021 | open | normal | primary | 192.168.1.4:1698 | /data/yashan/yasdb_data/dn-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
- (可选)创建数据库用户并赋权,更多操作请查阅用户管理。
CREATE USER sales IDENTIFIED BY sales;
GRANT CONNECT TO SALES;
exit
# 步骤6:启动守护进程
执行如下命令,启动守护进程。
$ yasboot monit start --cluster yashandb
Note:
后续使用中服务器重启开机后需手动启动守护进程,守护进程会自动拉起数据库相关进程,从而启动数据库。为简化运维,可将守护进程配置为开机自启动间接实现数据库开机自启动,具体操作请查阅配置开机自启动。
# 步骤7(可选):开启仲裁选主
当DN组内节点采用1主1备部署时,如需实现DN组内节点的主备自动切换,需开启基于yasom的仲裁选主。

