YashanDB Installation and Upgrade

环境配置

硬件环境检查

检查项 命令示例 核心关注点
操作系统版本 cat /etc/os-release 操作系统版本
CPU 信息 lscpu Architecture (架构)、 CPU (s)(核心数)、Model name (型号主频)
内存状态 free -h available (实际可用物理内存)
磁盘空间 df -h Size/Avail (总容量与可用容量)
磁盘属性 lsblk -o NAME,SIZE,ROTA,FSTYPE ROTA (1 为机械硬盘,0 为固态硬盘)
网络连通性 ping -c 4 <目标 IP> packet loss (丢包率)、avg RTT (平均延迟)
网络带宽 服务端: iperf3 -s 客户端: iperf3 -c <服务端 IP> Bandwidth (吞吐量)、Retr (重传次数)

服务器规划示例

单机单库部署

服务器名称 服务器 IP 角色
host0001 192.168.1.2

单机主备部署

服务器名称 服务器 IP 角色
host0001 192.168.1.2
host0002 192.168.1.3
host0003 192.168.1.4

第一部分:安装前准备(使用 root 用户)

1.1 检查依赖项

# 检查库文件是否存在
ldconfig -p | grep -E "libssl.so|liblz4.so|libz.so|libzstd.so"
# 缺失时执行安装
yum install openssl-devel lz4 zlib libzstd -y

1.2 关闭防火墙

# 临时停止防火墙服务
systemctl stop firewalld
# 禁止防火墙开机自启
systemctl disable firewalld

1.3 创建安装用户

/usr/sbin/groupadd -g 701 yashan
/usr/sbin/groupadd -g 702 YASDBA
/usr/sbin/useradd -u 701 -g yashan -G YASDBA -m yashan -s /bin/bash
echo 'Asdf123.'|passwd yashan --stdin
chmod +w /etc/sudoers
echo "yashan ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
chmod -w /etc/sudoers

1.4 创建安装目录

mkdir -p /data/yashan/{yasdb_home,yasdb_data,log}
chown -R yashan:yashan /data/yashan/

1.5 调整系统内核参数

cat > /etc/sysctl.d/yashandb.conf << 'EOF'
vm.swappiness = 0
net.ipv4.ip_local_port_range=32768 60999
vm.max_map_count=2000000
net.core.somaxconn=32768
kernel.shmall = 6029312
kernel.shmmni = 4096
kernel.shmmax = 24696061952
fs.aio-max-nr = 6194304
vm.dirty_ratio=20
vm.dirty_background_ratio=3
vm.dirty_writeback_centisecs=100
vm.dirty_expire_centisecs=500
vm.min_free_kbytes=524288
net.core.netdev_max_backlog = 30000
net.core.netdev_budget = 600
vm.oom-kill = 0
vm.overcommit_memory = 2
EOF

sysctl -p

1.6 调整用户资源限制值

cat >> /etc/security/limits.conf << 'EOF'
yashan soft nofile 1048576
yashan hard nofile 1048576
yashan soft nproc 1048576
yashan hard nproc 1048576
yashan soft rss unlimited
yashan hard rss unlimited
yashan soft stack 8192
yashan hard stack 8192
yashan soft core unlimited
yashan hard core unlimited
yashan soft memlock -1
yashan hard memlock -1
EOF

1.7 调整时区

# 建议所有服务器(包括数据库服务器和应用服务器)使用相同的时区。
timedatectl set-timezone "Asia/Shanghai"

1.8 内核启动参数配置

#transparent_hugepage=never:禁用透明大页,避免透明大页带来的性能抖动
#elevator=deadline:设置IO调度器为deadline,适合数据库这种随机IO场景
#LANG=en_US.UTF-8:设置系统语言环境,确保字符编码正确
grubby --update-kernel=ALL --args="transparent_hugepage=never elevator=deadline LANG=en_US.UTF-8"
#修改后需要重启系统生效
reboot

第二部分:安装部署(使用安装用户)

完成以上系统层面的准备工作后,服务器环境已满足 YashanDB 的安装要求。接下来使用安装用户(yashan)登录服务器,执行数据库软件的解压、配置和部署,最终目标是获得一个状态正常、可连接的数据库实例。

2.1 下载并解压软件包

以 yashan 用户登录安装服务器:

su - yashan
mkdir -p /home/yashan/install
sudo tar -zxf /soft/yashandb-23.4.6.100-linux-x86_64.tar.gz -C /home/yashan/install

2.2 生成配置文件

2.2.1 生成默认配置文件

./bin/yasboot package se gen --cluster yashandb --recommend-param \
-u yashan -p Asdf123. --ip 192.168.3.191 --port 22 \
--install-path /data/yashan/yasdb_home \
--data-path /data/yashan/yasdb_data \
--log-path /data/yashan/log \
--begin-port 1688 \
--node 1

2.2.2 修改配置文件(redo 和字符集)

  • 生成的数据库配置文件 yashandb.toml 中,常需要调整的参数包括:
    • REDO_FILE_SIZE
    • CHARACTER_SET:建议与源端数据库字符集保持一致,以下为常见对应关系:
      • Oracle ZHS16GBK→ Yashan GB18030
      • Oracle AL32UTF8→ Yashan UTF8
  • 修改 redo 大小为 4G:

找到 [group.config] 区域,修改以下参数:

[group.config]
REDO_FILE_SIZE = "4G"
  • 修改字符集(示例:源端为 GBK 字符集):
[group.config]
CHARACTER_SET = "GBK"

可选字符集:UTF8(默认)、GBKGB18030ASCIIISO88591

2.3 执行安装

# 安装软件包
/home/yashan/install/bin/yasboot package install -t hosts.toml

2.4 部署数据库

# 部署数据库(密码需包含数字、字母、特殊字符,8-64位)
/home/yashan/install/bin/yasboot cluster deploy -t yashandb.toml -p yasdb_123

返回以下信息表示成功:

task completed, status: SUCCESS

2.5 配置环境变量

# 进入环境变量目录(版本号以实际为准)
cd /data/yashan/yasdb_home/{version_number}/conf

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

2.6 检查安装结果

2.6.1 查看数据库状态

yasboot cluster status -c yashandb -d

预期输出:

| hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address    | data_path                      |
| host0001 | db | 1-1:1 | 25283 | open | normal | primary | 192.168.1.2:1688 | /data/yashan/yasdb_data/db-1-1 |

2.6.2 连接数据库验证

# 使用sys用户连接
yasql sys/yasdb_123

# 执行测试SQL
SQL> SELECT STATUS FROM V$INSTANCE;

第三部分:数据库基本操作

3.1 实例启动与停止

场景一:当因服务器因维护、故障或其他特殊原因需要关机时,应提前按以下顺序关闭数据库,避免数据损坏:

  1. 停止数据库
#停止数据库实例
yasboot cluster stop -c yashandb
#停止yasagent进程
yasboot process yasagent stop -c yashandb
#停止yasom进程
yasboot process yasom stop -c yashandb
#检查数据库相关进程已关闭
ps -ef|grep yas
  1. 服务器重启后,按以下顺序恢复数据库服务。
#启动yasom和yasagent进程
yasboot process yasom start -c yashandb
yasboot process yasagent start -c yashandb
#待yasom和yasagent进程启动后,才能启动数据库
yasboot cluster start -c yashandb
#检查数据库集群已开启
yasboot cluster status -c yashandb -d

** 场景二:** 在某些情况下可能需要重启数据库,例如进行数据迁移时,若需调整数据库参数(如 WORK_AREA_POOL_SIZE),通常需要重启数据库以使参数生效。

yasboot cluster restart -c yashandb
#检查数据库集群状态
yasboot cluster status -c yashandb -d

3.2 表空间管理

--查看表空间使用情况信息
SELECT TABLESPACE_NAME,ALLOCATION_TYPE,USER_BYTES,TOTAL_BYTES,(1-USER_BYTES/TOTAL_BYTES)*100 useage from dba_tablespaces;

--创建自动扩展表空间
--根据源端表空间的使用情况,设置目标端表空间的大小,此处的1G仅为示例。
CREATE TABLESPACE mytbs DATAFILE 'mytbs01' SIZE 1G AUTOEXTEND ON MAXSIZE UNLIMITED;

--如果源端表空间大小恰好等于或者接近512G的倍数,则需要额外增加数据文件,避免空间用满
ALTER TABLESPACE mytbs ADD DATAFILE 'mytbs02' SIZE 100G AUTOEXTEND ON MAXSIZE UNLIMITED;

3.3 用户管理

-- 创建用户 (指定表空间)
CREATE USER testuser IDENTIFIED BY "P@ss1234" DEFAULT TABLESPACE mytbs;
-- 修改用户密码
ALTER USER testuser IDENTIFIED BY "New_P@ss1234";
-- 授予角色权限 (DBA)
GRANT DBA TO testuser;
-- 删除用户 (级联删除对象)
DROP USER testuser CASCADE;

3.4 Redo 日志管理

--查询目标端数据库当前的redo信息,关注status字段
select * from v$logfile;
--先添加新的大文件redo日志
ALTER DATABASE ADD LOGFILE ('redo5' SIZE 8G, 'redo6' SIZE 8G, 'redo7' SIZE 8G);
--多次切换日志,使原有的文件变为INACTIVE状态
ALTER SYSTEM SWITCH LOGFILE;
--检查文件状态
--SELECT id, name, status FROM v$logfile;
如果原文件不是INACTIVE状态,继续切换
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM CHECKPOINT;
--删除旧的redo日志文件(确认状态为INACTIVE后才能删除)
ALTER DATABASE DROP LOGFILE 'redo1';
ALTER DATABASE DROP LOGFILE 'redo2';
ALTER DATABASE DROP LOGFILE 'redo3';
ALTER DATABASE DROP LOGFILE 'redo4';
--确认最终配置
SELECT id, name, block_count*block_size/1024/1024 AS size_mb, status FROM v$logfile;

YashanDB 离线升级实操手册

一、升级前准备

1.1 环境检查

确认数据库实例状态为 open。

yasboot cluster status -c yashandb -d

【主备架构】 需确认所有节点(主库与备库)的实例状态均为 open。

1.2 检查 hosts.toml 文件

hosts.toml 文件的默认路径为 /home/yashan/install/hosts.toml

检查 yasom 信息

yasboot process yasom status -c yashandb

确认 hosts.toml 中 OM 的 LISTEN_ADDR 与主 yasom 的 local_yasom_addr 一致。

检查服务器信息

如果升级前执行过新增服务器的扩容操作,需确保新增服务器的信息已追加到 hosts.toml 文件中。

1.3 终止守护进程

yasboot monit stop -c yashandb

1.4 确认备份路径容量

  • 离线升级时会自动进行数据库备份,备份范围包括当前数据库的控制文件、redo 文件、SYSTEM 表空间文件、SYSAUX 表空间文件以及 UNDO 表空间文件。

  • 需要确认确认默认备份路径所在父目录 ${新版本的YASDB_HOME} 具备足够的容量。

  • 备份所需总容量 = 备份刚需容量 + 额外预留容量(默认 5G,可通过 --backup-reserved-space 参数自定义)。

  • 备份刚需容量的估算方式如下。

    方式一:通过 SQL 查询各文件大小并汇总。

SELECT (SELECT SUM(BYTES) FROM V$CONTROLFILE)
+ (SELECT SUM(USED_BLOCKS * BLOCK_SIZE) FROM V$LOGFILE)
+ (SELECT SUM(BYTES) FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME IN ('SYSTEM', 'SYSAUX', 'UNDO'))
AS total_capacity
FROM DUAL;

​ 方式二:根据各服务器中 $YASDB_DATA/dbfiles 路径的总容量估算。

【主备架构】 需分别检查每台服务器的备份路径容量是否满足要求。

1.5 准备安装包

在临时目录中解压新版本安装包。建议以版本号或操作日期命名目录,便于管理与区分。

mkdir -p /home/yashan/tmp_upgrade20260407
cd /home/yashan/tmp_upgrade20260407
tar zxf yashandb-{新版本号}-linux-x86_64.tar.gz

1.7 数据备份

执行全量 checkpoint 后进行全量备份。

ALTER SYSTEM CHECKPOINT;
BACKUP DATABASE FULL FORMAT '/home/yashan/full_backup' TAG 'full';

【主备架构】 备份前需确保主库 redo 已全部同步至备库。通过以下语句确认 transport_lagapply_lag 均为 0:

SELECT connection, status, peer_addr, transport_lag, apply_lag
FROM V$REPLICATION_STATUS;

确认同步完成后,在所有主备库上分别执行 ALTER SYSTEM CHECKPOINT;,以加快后续升级速度。

1.8 关闭 yasom 仲裁选主

【一主一备架构专属步骤】 若为一主一备架构,且已开启仲裁选主,需在升级前关闭,避免升级过程中触发非预期的主备切换。单机环境可跳过此步骤。

yasboot election enable off -c yashandb

二、执行升级

步骤 1:升级 yasom 与 yasagent

# 查看当前版本
ps -ef | grep -E "yasom|yasagent" | grep -v grep

# 执行升级
cd /home/yashan/tmp_upgrade20260407
./bin/yasboot package upgrade -t /home/yashan/install/hosts.toml

# 验证升级后版本
ps -ef | grep -E "yasom|yasagent" | grep -v grep

步骤 2:升级数据库

# 查看升级前数据库版本
yasql / as sysdba
SELECT version FROM V$INSTANCE;

# 执行数据库升级
cd /home/yashan/tmp_upgrade20260407
./bin/yasboot cluster upgrade -c yashandb

# 验证集群状态
./bin/yasboot cluster status -c yashandb -d

# 查看升级后数据库版本
yasql / as sysdba
SELECT version FROM V$INSTANCE;

三、升级后操作

若为顺利执行升级操作而临时调整过某些配置,在升级完成后应按需还原。

例如,开启仲裁选主(一主一备场景)、打开守护进程。

【一主一备架构】 若在 1.6 中关闭了仲裁选主,升级完成后需重新开启:

yasboot election enable on -c yashandb

YashanDB 卸载

卸载数据库

yasboot cluster clean --cluster yashandb --purge

此操作需谨慎,数据库卸载之后,数据将完全被清理。

卸载 yasmon 和 yasagent

yasboot package uninstall --cluster yashandb

清理环境变量

vi ~/.bashrc