作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE OpenTenBase ACE 10年数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP,ITPUB认证专家 圈内拥有“总监”称号,非著 名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸 CSDN:胖头鱼的鱼缸(尹海文) 墨天轮:胖头鱼的鱼缸 ITPUB:yhw1809 IFClub:胖头鱼的鱼缸 除授权转载并标明出处外,均为“非法”抄袭
在《
数据库管理-第277期 YashanDB 23.2.7 YAC集群部署手册(20241229)》中,部署了YAC 23.2.7,在那一段时间关于YAC集群的文章,我也向崖山提出了关于VIP和SCAN的需求,崖山数据库的产品经理也给了非常正向的反馈,在内部建立了相应处理流程并承诺在未来版本中解决。一年快过去了,崖山数据库的新品发布也将到来,作为崖山数据库YVP也提前获得了内测邀请,可以深入体验即将发布的23.5.1版本,在这个版本中YAC集群已经实现了VIP与SCAN。
这里介绍的主要是崖山共享集群高可用方面的新特性:
本期主要对去年留下的执念VIP和SCAN进行探索。
YashanDB版本:
yashandb-23.5.1.100-linux-x86_64
主机信息:

共享磁盘信息:
已在yasdb-storage完成存储分配与iscsi配置,挂载后根据磁盘id使用udev进行处理至对应路径并给予对应权限,相关过程可查看《
数据库管理-第334期 Oracle Database 23ai测试版RAC部署文档(20250607)》,有类似处理过程,本文省略。

HOSTS信息:
10.10.10.111 yasdb01 10.10.10.112 yasdb02 10.10.10.113 yasdb01-vip 10.10.10.114 yasdb02-vip 10.10.10.115 yasdb-scan 20.20.20.111 yasdb01-priv 20.20.20.112 yasdb02-priv 30.30.30.111 yasdb01-san 30.30.30.112 yasdb02-san 30.30.30.110 yasdb-storage
其余操作系统配置仍然按照《 数据库管理-第277期 YashanDB 23.2.7 YAC集群部署手册(20241229)》中内容进行操作,本文省略。两个节点的yashan用户已配置SSH互信和sudo权限。
su - yashan mkdir /data/install mv yashandb-23.5.1.100-linux-x86_64.tar.gz /data/installcd /data/install tar -xvf yashandb-23.5.1.100-linux-x86_64.tar.gz

cd ./om ./bin/yasom --web --listen 10.10.10.111:9001

访问WEB部署页面:
http://10.10.10.111:9001



sys密码为YashanDB#123






VIP和SCANIP都已成功运行。
cd /data/yasdb/23.5.1.100/conf/ cat yashandb.bashrc >> ~/.bash_profile source ~/.bash_profile
yasql sys/YashanDB#123@10.10.10.115:1688
通过SCAN可以正常访问数据库。
通过SCAN可以正常路由到两个节点。
这里尝试关闭yasdb01节点,检查yasdb02网络:
yasdb01节点的VIP和SCAN都正常漂移到了yasdb02节点。
可以通过SCAN访问存活节点。
恢复yasdb01节点,检查网络配置情况:
yasdb01节点的VIP未恢复至对应节点,那么开始尝试解决这个问题。
# yasdb01执行或添加至环境变量 export YASCS_HOME=/data/yasdb/yasdb_data/ycs/ce-1-1 # yasdb02执行或添加至环境变量 export YASCS_HOME=/data/yasdb/yasdb_data/ycs/ce-1-2 # 任意节点检查 ycsctl show config

在检查官方文档的过程中发现安装后还需要添加自启动:
# yasdb01环境变量
export YASDB_HOME=/data/yasdb/23.5.1.100
export PATH=${YASDB_HOME}/bin:$PATH
export LD_LIBRARY_PATH=${YASDB_HOME}/lib
if command -v rlwrap >/dev/null 2>&1; then
alias yasql="rlwrap yasql"
fi
export YASDB_DATA=/data/yasdb/yasdb_data/ce-1-1
export YASCS_HOME=/data/yasdb/yasdb_data/ycs/ce-1-1
# yasdb02环境变量
export YASDB_HOME=/data/yasdb/23.5.1.100
export PATH=${YASDB_HOME}/bin:$PATH
export LD_LIBRARY_PATH=${YASDB_HOME}/lib
if command -v rlwrap >/dev/null 2>&1; then
alias yasql="rlwrap yasql"
fi
export YASDB_DATA=/data/yasdb/yasdb_data/ce-1-2
export YASCS_HOME=/data/yasdb/yasdb_data/ycs/ce-1-2
# yasdb01 root用户执行 cat > /usr/local/bin/yashan_monit.sh <<EOF #!/bin/bash MONIT_AUTOSTART="true" # 是否监控monit进程,true表示是,其他值表示否 YCSROOTAGENT_AUTOSTART="true" # 是否监控ycsrootagent进程,true表示是,其他值表示否 YASDB_USER=yashan # YashanDB的安装用户 YASDB_HOME=/data/yasdb/23.5.1.100 # YashanDB的HOME目录 YASCS_HOME=/data/yasdb/yasdb_data/ycs/ce-1-1 # ycsrootagent进程对应目录 INTERVAL=3 # 监控间隔,单位为秒,定期根据进程名监控对应进程是否正常,若否则重新启动 while true; do if "\$MONIT_AUTOSTART" = "true"; then if ! pgrep -a monit | grep "\$YASDB_HOME" > /dev/null; then echo "\$(date) monit abnormal, try restart..." su - \$YASDB_USER -c "source ~/.bash_profile && \$YASDB_HOME/om/bin/monit -c \$YASDB_HOME/om/monit/monitrc" & fi fi if "\$YCSROOTAGENT_AUTOSTART" = "true"; then if ! pgrep -a ycsrootagent | grep "\$YASCS_HOME" > /dev/null; then echo "\$(date) ycsrootagent abnormal, try restart..." export LD_LIBRARY_PATH=\$YASDB_HOME/lib # 官方文档中未使用export而是env,实测RHEL9.6无法生效 \$YASDB_HOME/bin/ycsrootagent start -H \$YASCS_HOME & fi fi sleep "\$INTERVAL" done EOF chmod +x /usr/local/bin/yashan_monit.sh cat > /etc/systemd/system/yashan_monit.service <<EOF [Unit] Description=Yashan Monitor After=network.target [Service] ExecStart=/usr/local/bin/yashan_monit.sh Type=simple Restart=always StandardOutput=syslog StandardError=syslog [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable yashan_monit systemctl start yashan_monit # yasdb02 root用户执行 cat > /usr/local/bin/yashan_monit.sh <<EOF #!/bin/bash MONIT_AUTOSTART="true" # 是否监控monit进程,true表示是,其他值表示否 YCSROOTAGENT_AUTOSTART="true" # 是否监控ycsrootagent进程,true表示是,其他值表示否 YASDB_USER=yashan # YashanDB的安装用户 YASDB_HOME=/data/yasdb/23.5.1.100 # YashanDB的HOME目录 YASCS_HOME=/data/yasdb/yasdb_data/ycs/ce-1-2 # ycsrootagent进程对应目录 INTERVAL=3 # 监控间隔,单位为秒,定期根据进程名监控对应进程是否正常,若否则重新启动 while true; do if "\$MONIT_AUTOSTART" = "true"; then if ! pgrep -a monit | grep "\$YASDB_HOME" > /dev/null; then echo "\$(date) monit abnormal, try restart..." su - \$YASDB_USER -c "source ~/.bash_profile && \$YASDB_HOME/om/bin/monit -c \$YASDB_HOME/om/monit/monitrc" & fi fi if "\$YCSROOTAGENT_AUTOSTART" = "true"; then if ! pgrep -a ycsrootagent | grep "\$YASCS_HOME" > /dev/null; then echo "\$(date) ycsrootagent abnormal, try restart..." export LD_LIBRARY_PATH=\$YASDB_HOME/lib \$YASDB_HOME/bin/ycsrootagent start -H \$YASCS_HOME & fi fi sleep "\$INTERVAL" done EOF chmod +x /usr/local/bin/yashan_monit.sh cat > /etc/systemd/system/yashan_monit.service <<EOF [Unit] Description=Yashan Monitor After=network.target [Service] ExecStart=/usr/local/bin/yashan_monit.sh Type=simple Restart=always StandardOutput=syslog StandardError=syslog [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable yashan_monit systemctl start yashan_monit

yasdb01节点的VIP已正常恢复至对应节点。测试yasdb02关闭并启动,VIP和SCAN也能正常漂移。
去年的简单吐槽,让崖山数据库完成了VIP和SCAN的支持,那么在本次安装部署和简单使用中也有一些意见和建议:
在本文写好,反馈给官方的时候,崖山也给出了这三个问题的回答:
jdbc:yasdb:primary://192.168.1.2:1688,192.168.1.3:1688/yashan?poolTimeout=180&failover=on&failoverType=session&failoverMethod=basic&failoverRetries=5&failoverDelay=1
经过近一年的发展,从23.2.7到23.5.1,崖山数据库共享集群带来如VIP和SCAN的重要功能更新。
老规矩,知道写了些啥。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31466763/viewspace-3103064/ ,如需转载,请注明出处,否则将追究法律责任。