本文可以接力《【江月】yashandb单机部署》
崖山可以在初始安装时就装成一主备。
我这篇文档适用于主库已经有,新搭建备库的需求。
崖山的备库搭建和oracle一样(有duplicate方式也有rman方式),我这里用duplicate方式记录
依旧是脚本化文档,供大家参考
准备一个和主库一样的环境,最好配置目录一模一样
大致步骤为:
(1)在备库安装软件,默认会创建一个primary角色的db,删掉它变成空壳子集群
注意,如果顺手部署了monit,要关闭掉他才能顺利删库
(2)duplicate备库搭建
一、安装备库
#上传安装包
数据库包和插件包
yashandb-23.2.4.100-linux-x86_64.tar.gz
yashandb-plugins-all-23.2.4.100-linux-x86_64.tar.gz
#配置/etc/hosts
echo "192.168.100.142 zcloudos" >> /etc/hosts
#配置本地ssh
略
#开始部署
su - yashan
cd /yssoft
tar zxf yashandb-23.2.4.100-linux-x86_64.tar.gz
# 生成配置文件
./bin/yasboot package se gen --cluster lhqdg --recommend-param \
-u yashan -p 123456 --ip 192.168.100.142 --port 22 \
--install-path /yshome --data-path /ysdata \
--begin-port 1688
#会生成两个文件
#lhqdg.toml:数据库集群的配置文件。
#hosts.toml:服务器的配置文件。
#注意lhqdg.toml中的memory_limit参数的大小,虽然使用了--recommend-param自动推荐参数,还是建议根据实际情况改小一点,否则会出现安装失败
#我这里修改成8192m
#开始安装
/yssoft/bin/yasboot package install -t hosts.toml -i yashandb-23.2.4.100-linux-x86_64.tar.gz --plugin yashandb-plugins-all-23.2.4.100-linux-x86_64.tar.gz
#创建数据库
/yssoft/bin/yasboot cluster deploy -t /yssoft/lhqdg.toml
type | uuid | name | hostid | index | status | return_code | progress | cost
---------------------------------------------------------------------------------------------------------
task | 91641fd4a567a009 | DeployYasdbCluster | - | lhqdg | SUCCESS | 0 | 100 | 31
------+------------------+--------------------+--------+-------+---------+-------------+----------+------
task completed, status: SUCCESS
[root@yasdb:/monit]$ ps -eaf | grep yas
root 1027 1 0 17:21 ? 00:00:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-d2db79a9-163a-4833-add4-7d8d640db172-eth0.lease -pf /var/run/dhclient-eth0.pid -H yasdb eth0
yashan 25500 1 0 21:12 ? 00:00:00 /yshome/yashandb/23.2.4.100/bin/yasagent --init -c lhqdg -l 192.168.100.141:1676 --host-id host0001 -k -d
yashan 25530 1 0 21:12 ? 00:00:03 /yshome/yashandb/23.2.4.100/bin/yasom --init -c lhqdg -l 192.168.100.141:1675 -k -d
yashan 25973 1 7 21:15 ? 00:05:45 /yshome/yashandb/23.2.4.100/bin/yasdb nomount -D /ysdata/db-1-1
yashan 29172 1 0 22:13 ? 00:00:00 monit -c /yshome/yashandb/23.2.4.100/ext/monit/monitrc
root 30114 1349 0 22:29 pts/0 00:00:00 grep --color=auto yas
#配置环境变量
cd /yshome/yashandb/23.2.4.100/conf
# 如~/.bashrc中已存在YashanDB相关的环境变量,将其清除
cat lhqdg.bashrc >> ~/.bashrc
source ~/.bashrc
cat ~/.bashrc
#配置sys密码
[yashan@yasdb:/ysdata/db-1-1]$ yasboot cluster password set -n XXXXXXXX -c lhqdg
type | uuid | name | hostid | index | status | return_code | progress | cost
-------------------------------------------------------------------------------------------------------
task | 1153ee18c7ecd1ee | YasdbPasswordSet | - | lhqdg | SUCCESS | 0 | 100 | 2
------+------------------+------------------+--------+-------+---------+-------------+----------+------
task completed, status: SUCCESS
#检查安装结果
[yashan@yasdb:/ysdata/db-1-1]$ yasboot cluster status -c lhqdg -d
hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | data_path
-----------------------------------------------------------------------------------------------------------------------------------
host0001 | db | 1-1:1 | 25973 | open | normal | primary | 192.168.100.141:1688 | /ysdata/db-1-1
----------+-----------+--------+-------+-----------------+-----------------+---------------+----------------------+----------------
#登录数据库
yasql sys/XXXXXXXX@192.168.100.141:1688
或者
yasql / as sysdba
#启动monit
/yssoft/bin/yasboot monit start --cluster lhqdg
#开机自动启动数据库
which monit
ysmonit=`ps -eaf | grep moni | grep -v grep | awk -F '-c' '{print $2}'`
echo "su yashan -c '/usr/bin/monit -c ${ysmonit}'" |sudo tee -a /etc/rc.local
cat /etc/rc.local
sudo chmod +x /etc/rc.local
sudo chmod +x /etc/rc.d/rc.local
二、关闭monit(如果没有部署可以省略)
#如果配置了monit
要先停掉monit否则关闭数据库monit会自动拉起
如下
[2024-11-23T15:18:10+0000] info : 'lhqdg-db-1-1' process is running with pid 15285
[2024-11-23T15:19:46+0000] error : 'lhqdg-db-1-1' process is not running
[2024-11-23T15:19:46+0000] info : 'lhqdg-db-1-1' trying to restart
[2024-11-23T15:19:46+0000] info : 'lhqdg-db-1-1' start: '/yshome/yashandb/23.2.4.100/bin/yasboot process yasdb start -c lhqdg -n 1-1'
[2024-11-23T15:19:47+0000] info : 'lhqdg-db-1-1' monitor on user request
[2024-11-23T15:19:47+0000] info : Monit daemon with PID 15142 awakened
[2024-11-23T15:19:47+0000] info : Awakened by User defined signal 1
[2024-11-23T15:19:47+0000] info : 'lhqdg-db-1-1' monitor action done
[2024-11-23T15:19:47+0000] info : 'lhqdg-db-1-1' process is running with pid 15451
[yashan@zcloudos:/yshome/yashandb/23.2.4.100/log]$ /yssoft/bin/yasboot monit stop --cluster lhqdg
type | uuid | name | hostid | index | status | return_code | progress | cost
------------------------------------------------------------------------------------------------------
task | 12b03bf56fb328a5 | MonitParentStop | - | lhqdg | SUCCESS | 0 | 100 | 1
------+------------------+-----------------+--------+-------+---------+-------------+----------+------
task completed, status: SUCCESS
三、删除备库里默认创建的数据库
[yashan@zcloudos:/home/yashan]$ yasql / as sysdba
YashanDB SQL Enterprise Edition Release 23.2.4.100 x86_64
Connected to:
YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 - X86 64bit Linux
SQL> select open_mode from v$database;
OPEN_MODE
-----------------
READ_WRITE
1 row fetched.
SQL>
SQL> shutdown abort;
Succeed.
SQL> exit
[yashan@zcloudos:/yshome/yashandb/23.2.4.100/log]$ yasboot cluster start -c lhqdg -m nomount
type | uuid | name | hostid | index | status | return_code | progress | cost
--------------------------------------------------------------------------------------------------------
task | 39649e7628a2ab7e | StartYasdbCluster | - | lhqdg | SUCCESS | 0 | 100 | 2
------+------------------+-------------------+--------+-------+---------+-------------+----------+------
task completed, status: SUCCESS
[yashan@zcloudos:/yshome/yashandb/23.2.4.100/log]$ yasql / as sysdba
YashanDB SQL Enterprise Edition Release 23.2.4.100 x86_64
Connected to:
YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 - X86 64bit Linux
SQL> select open_mode from v$database;
YAS-02072 the database is not mounted
SQL>
SQL> drop database;
Succeed.
[yashan@zcloudos:/yshome/yashandb/23.2.4.100/log]$ yasboot cluster status -c lhqdg -d
hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | data_path
----------------------------------------------------------------------------------------------------------------------------------
host0001 | db | 1-1:1 | 1627 | started | - | - | 192.168.100.142:1688 | /ysdata/db-1-1
----------+-----------+--------+------+-----------------+-----------------+---------------+----------------------+----------------
四、主库开归档【如果已经是归档模式略过】
[yashan@yasdb:/home/yashan]$ yasboot cluster status -c lhqdb -d
hostid | node_type | nodeid | pid | instance_status | database_status | database_role | listen_address | data_path
----------------------------------------------------------------------------------------------------------------------------------
host0001 | db | 1-1:1 | 1475 | open | normal | primary | 192.168.100.141:1688 | /ysdata/db-1-1
----------+-----------+--------+------+-----------------+-----------------+---------------+----------------------+----------------
[yashan@yasdb:/home/yashan]$ yasql / as sysdba
YashanDB SQL Enterprise Edition Release 23.2.4.100 x86_64
Connected to:
YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 - X86 64bit Linux
SQL> SELECT database_name,log_mode,open_mode FROM V$DATABASE;
DATABASE_NAME LOG_MODE OPEN_MODE
---------------------------------------------------------------- ----------------- -----------------
lhqdb ARCHIVELOG READ_WRITE
1 row fetched.
SQL>
#####如果没有开启,则需要重启主库设置
yasboot cluster restart -c lhqdb -m mount
yasql / as sysdba
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
五、配置主备参数(主库需要重启才能生效,所以生产环境要窗口做)
5.1主库参数
#LISTEN_ADDR、REPLICATION_ADDR、ARCHIVE_DEST_1参数重启数据库后生效,其他立即生效
#ARCHIVE_DEST_XXX参数在REPLICATION_ADDR参数重启生效后再进行设置
ALTER SYSTEM SET LISTEN_ADDR=192.168.100.141:1688 scope=spfile;
ALTER SYSTEM SET REPLICATION_ADDR=192.168.100.141:1689 scope=spfile;
ALTER SYSTEM SET ARCHIVE_DEST_1='SERVICE=192.168.100.142:1689' scope=spfile;
#以下参数当主备库上路径完全一致时无须配置
#/home/yasdb/YASDB_DATA为主库路径,/home/db1/yashandb/yasdb_data为备库路径
ALTER SYSTEM SET DB_FILE_NAME_CONVERT=
'/home/db1/yashandb/yasdb_data','/home/yasdb/YASDB_DATA' scope=both;
ALTER SYSTEM SET REDO_FILE_NAME_CONVERT=
'/home/db1/yashandb/yasdb_data','/home/yasdb/YASDB_DATA' scope=both;
ALTER SYSTEM SET DB_BUCKET_NAME_CONVERT=
'/home/db1/yashandb/yasdb_data','/home/yasdb/YASDB_DATA' scope=both;
#重启主库
yasboot cluster restart -c lhqdb
#验证
yasql / as sysdba
show parameter LISTEN_ADDR;
show parameter REPLICATION_ADDR;
show parameter ARCHIVE_DEST_1;
5.2备库参数
#LISTEN_ADDR和REPLICATION_ADDR参数重启数据库后生效,其他立即生效,ARCHIVE_DEST_XXX参数在REPLICATION_ADDR参数重启生效后再进行设置
ALTER SYSTEM SET LISTEN_ADDR=192.168.100.142:1688 scope=spfile;
ALTER SYSTEM SET REPLICATION_ADDR=192.168.100.142:1689 scope=spfile;
ALTER SYSTEM SET ARCHIVE_DEST_1='SERVICE=192.168.100.141:1689' scope=spfile;
-- 以下参数当主备库上路径完全一致时无须配置
-- /home/yasdb/YASDB_DATA为主库路径,/home/db1/yashandb/yasdb_data为备库路径
ALTER SYSTEM SET DB_FILE_NAME_CONVERT=
'/home/yasdb/YASDB_DATA','/home/db1/yashandb/yasdb_data' scope=both;
ALTER SYSTEM SET REDO_FILE_NAME_CONVERT=
'/home/yasdb/YASDB_DATA','/home/db1/yashandb/yasdb_data' scope=both;
ALTER SYSTEM SET DB_BUCKET_NAME_CONVERT=
'/home/yasdb/YASDB_DATA','/home/db1/yashandb/yasdb_data' scope=both;
#重启备库
yasboot cluster restart -c lhqdg -m nomount
#验证
yasql / as sysdba
show parameter LISTEN_ADDR;
show parameter REPLICATION_ADDR;
show parameter ARCHIVE_DEST_1;
库参数
六、搭建备库
#搭建备库可以在主库执行命令,也可以在备库执行命令,我习惯沿用oracle的习惯,所以我这里只演示在备库操作
#先检查网络连通性,CONNECTION字段显示为CONNECTED则代表正常
SQL> SELECT CONNECTION,STATUS,PEER_ADDR,TRANSPORT_LAG,APPLY_LAG FROM V$REPLICATION_STATUS;
CONNECTION STATUS PEER_ADDR TRANSPORT_LAG APPLY_LAG
----------------- ----------------- ---------------------------------------------------------------- ------------- ------------
CONNECTED NORMAL 192.168.100.141:1689 0 0
1 row fetched.
#开始构建备库
SQL> BUILD DATABASE;
Succeed.
#检查状态
SQL> SELECT STATUS, OPEN_MODE, DATABASE_ROLE FROM V$DATABASE;
STATUS OPEN_MODE DATABASE_ROLE
--------------------------------- ----------------- -----------------
NORMAL READ_ONLY STANDBY
SQL> SELECT STATUS FROM V$INSTANCE;
STATUS
-------------
OPEN
1 row fetched.
#备库检查是否有延迟,如果transport_lag与apply_lag的值均为0,表示备库同步主库的日志和自身应用日志均无延时情况,同步正常;如果不为0,尝试切换一两个日志,再看是否为0,否则需要重新初始化备库。
SQL> SELECT connection, status, peer_mode, peer_addr, transport_lag, apply_lag FROM V$REPLICATION_STATUS;
CONNECTION STATUS PEER_MODE PEER_ADDR TRANSPORT_LAG APPLY_LAG
----------------- ----------------- ----------------- ---------------------------------------------------------------- ------------- ------------
CONNECTED NORMAL OPEN 192.168.100.141:1689 0 0
1 row fetched.
七、收尾
#主库切换日志
SQL> alter system switch logfile;
Succeed.
#主库日志显示:
2024-11-24 12:13:19.283 1748 [INFO] [REDO] instance: 0, switch redo target asn: 4294967295, current asn: 14
2024-11-24 12:13:19.285 1748 [INFO] [REDO] instance 0, switch redo file, type 1, point 0-14-186-15619
2024-11-24 12:13:19.287 1748 [INFO] [REDO] switch redo file, new asn 15
2024-11-24 12:13:19.303 1709 [INFO] [HA] scf sender 0 load scfMgr with lfn 15619 success
2024-11-24 12:13:19.771 1725 [INFO] [REDO] instance 0, switch redo file, type 8, point 0-15-1-15620
2024-11-24 12:13:20.142 1703 [INFO] [ARCH] instance: 0, itemCounts: 13, add archive file filename /ysdata/db-1-1/archive/arch_0_14.ARC, asn: 14, ctrlId: 13, used: 1
2024-11-24 12:13:20.143 1703 [INFO] [ARCH] add new archive file /ysdata/db-1-1/archive/arch_0_14.ARC
#备库日志显示:
2024-11-24 12:13:19.772 1806 [INFO] [HA] redo receiver receive message, type 69, length 312
2024-11-24 12:13:19.774 1806 [INFO] [REDO] switch redo file, new asn 15
2024-11-24 12:13:19.828 1837 [INFO] [ARCH] instance: 0, itemCounts: 0, add archive file filename /ysdata/db-1-1/archive/arch_0_14.ARC, asn: 14, ctrlId: 0, used: 1
2024-11-24 12:13:19.829 1837 [INFO] [ARCH] add new archive file /ysdata/db-1-1/archive/arch_0_14.ARC
日常排障
--在主库排查
SELECT dest_id,connection,status,database_mode,received_lfn,applied_lfn,synchronized FROM V$ARCHIVE_DEST_STATUS;
--在备库排查
#分析连通性和同步性
SELECT connection, status, peer_mode, peer_addr, transport_lag, apply_lag FROM V$REPLICATION_STATUS;
#分析同步性能,一般情况下,Remain Time应小于1秒。
SELECT item,units,value FROM V$RECOVERY_PROGRESS;
yasboot cluster status -c lhqdg -d
最后修改时间:2025-11-29 00:00:25
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




