官方教程来啦!上手体验YashanDB主备部署、同步延迟和自动切换能力

news2024/5/19 22:49:51

在上一篇深度干货 | 如何兼顾性能与可靠性?一文解析YashanDB主备高可用技术中,我们深入探讨了YashanDB高可用的架构设计原理和关键技术,本文将聚焦于实践操作,快速体验YashanDB的主备高可用能力。

概要

YashanDB提供了不同部署形态下故障自动切换的能力:一主一备环境中,可以基于外部仲裁OM实现主备自动切换;一主多备配置中,可以基于Raft协议实现主备自动切换。当主机异常时,触发超时时间后,备机可以快速完成角色切换,继续执行业务,业务中断时间在秒级水平。

本文将进行一主一备安装部署、体验YashanDB的备机同步延迟和两种自动切换能力。整体操作简单易上手,大家可前往YashanDB官网(download.yashandb.com)下载最新的个人版进行体验。

安装前准备

1 前提条件

  • 获取YashanDB的安装包
  • 准备三台服务器(有条件的可以准备四台服务器,OM部署到单独的服务器)
  • 开启SSH服务
  • 创建yashan用户及用户组
  • 创建HOME目录和DATA目录
  • 检查YashanDB所需端口是否被占用
  • 准备测试工具:benchmarksql-5.0
  • 时钟同步,确保测试结果的正确性

2 测试环境

服务器配置情况:
在这里插入图片描述
环境信息:
在这里插入图片描述
3 创建用户yashan

# useradd -d /home/yashan -m yashan
# passwd yashan

4 创建安装目录

HOME目录和DATA目录均规划在/data/yashan下,yashan用户需要对该目录拥有全部权限,可执行如下命令授权:

# cd /
# mkdir yashan_data
# mkdir yashan_home
# chmod -R 770 /data/yashan/yashan_data
# chmod -R 770 /data/yashan/yashan_hom

5 下载安装包并解压

从YashanDB的官网(download.yashandb.com)下载最新的个人版安装包并解压。

安装一主一备

1.生成安装配置文件:hosts.toml和yashandb.toml


[yashan@ob1 install]$ yasboot package se gen --cluster yashandb -u yashan -p yashan --ip 192.168.7.10,192.168.7.11 --port 22  --install-path /data1/yashan/yasdb_home  --data-path /data1/yashan/yasdb_data --begin-port 1688 --node 2
 hostid   | group | node_type | node_name | listen_addr       | replication_addr  | data_path                
-------------------------------------------------------------------------------------------------------------
 host0001 | dbg1  | db        | 1-1       | 192.168.7.10:1688 | 192.168.7.10:1689 | /data1/yashan/yasdb_data 
----------+-------+-----------+-----------+-------------------+-------------------+--------------------------
 host0002 | dbg1  | db        | 1-2       | 192.168.7.11:1688 | 192.168.7.11:1689 | /data1/yashan/yasdb_data 
----------+-------+-----------+-----------+-------------------+-------------------+--------------------------

Generate config success

2.调整配置文件:根据实际需要调整yashandb.toml配置文件中的安装参数,可在group级别设置YashanDB的所有建库参数,可在node级别设置YashanDB的所有配置参数。为了保证本次测试的稳定,redo文件、数据文件以及归档文件需要单独使用一块磁盘,需要调整文件的创建路径

[group.config]
  REDO_FILE_NUM = 10
  REDO_FILE_SIZE = "10G"
  REDO_FILE_PATH = '/data2/yashan/redo'

[group.node.config]
  ARCHIVE_LOCAL_DEST = '/home/yashan/archive'

3.执行安装:安装YashanDB的运行程序到其他服务器,并且启动运维服务进程yasom和yasagent

[yashan@ob1 install]$ yasboot package install -t hosts.toml -i yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
checking install package...
install version: yashandb 23.1.1.100
host0001 100% [====================================================================]    3s
host0002 100% [====================================================================]    3s
update host to yasom...

4.部署集群

[yashan@ob1 install]$ yasboot cluster deploy -t yashandb.toml
 type | uuid             | name               | hostid | index    | status  | return_code | progress | cost 
------------------------------------------------------------------------------------------------------------
 task | e3205df3e98645ed | DeployYasdbCluster | -      | yashandb | SUCCESS | 0           | 100      | 174   
------+------------------+--------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS

5.设置sys用户密码:设置为yashandb_123

[yashan@ob1 install]$ yasboot cluster password set --new-password yashandb_123 --cluster yashandb
 type | uuid             | name             | hostid | index    | status  | return_code | progress | cost 
----------------------------------------------------------------------------------------------------------
 task | 4e11fb328e1695ac | YasdbPasswordSet | -      | yashandb | SUCCESS | 0           | 100      | 3    
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS

6.安装后检查

检查整个集群的状态:

[yashan@ob1 install]$ yasboot cluster status --cluster yashandb --detail
 hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address    | data_path                       
-------------------------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | 69010 | open            | normal          | primary       | 192.168.7.10:1688 | /data1/yashan/yasdb_data/db-1-1 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0002 | db        | 1-2:2  | 86135 | open            | normal          | standby       | 192.168.7.11:1688 | /data1/yashan/yasdb_data/db-1-2 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------

检查主备的链接状态:

SQL> select DEST_ID, CONNECTION, PEER_ADDR, STATUS, DATABASE_MODE from v$archive_dest_status;

DEST_ID CONNECTION        PEER_ADDR                                                        STATUS            DATABASE_MODE     
------- ----------------- ---------------------------------------------------------------- ----------------- ----------------- 
      1 CONNECTED         192.168.7.11:1689                                                NORMAL            OPEN             

1 row fetched.

检测主备的同步情况:做一些简单的业务测试

7.配置参数调优

根据服务器的负载生成推荐参数

SQL> EXEC DBMS_PARAM.OPTIMIZE(NULL, NULL, 90, 90);

PL/SQL Succeed.

查看参数推荐报告

SQL> SELECT DBMS_PARAM.SHOW_RECOMMEND() FROM DUAL;

DBMS_PARAM.SHOW_RECO                                             
---------------------------------------------------------------- 
********** Recommended Settings For HEAP Table ***********
+--------------------------------+-------------+-------------+---------+
|            name                |  current    |  recommend  | restart |
+--------------------------------+-------------+-------------+---------+
| DATA_BUFFER_SIZE               |        64M  |     272785M |  True   |
| VM_BUFFER_SIZE                 |        32M  |      34823M |  True   |
| WORK_AREA_STACK_SIZE           |      1024K  |          2M |  True   |
| WORK_AREA_POOL_SIZE            |        16M  |        128M |  True   |
| WORK_AREA_HEAP_SIZE            |       512K  |        512K |  True   |
| SHARE_POOL_SIZE                |       256M  |      34823M |  True   |
| LARGE_POOL_SIZE                |       128M  |       2048M |  True   |
| MAX_PARALLEL_WORKERS           |         32  |         372 |  True   |
| SCOL_DATA_BUFFER_SIZE          |       128M  |        128M |  True   |
| SCOL_DATA_PRELOADERS           |          2  |           2 |  True   |
| COLUMNAR_WORK_AREA_HEAP_SIZE   |        64M  |         32M |  True   |
| COLUMNAR_VM_BUFFER_SIZE        |         2G  |        128M |  True   |
| COLUMNAR_BULK_SIZE             |       1024  |        1024 |  True   |
| COMPRESSION                    |        LZ4  |         LZ4 |  True   |
| PQ_POOL_SIZE                   |       128M  |        128M |  True   |
| MAX_SESSIONS                   |       1024  |        1024 |  True   |
| MAX_WORKERS                    |          0  |           0 |  True   |
| TAB_QUEUE_WINDOW_SIZE          |          4  |           4 |  True   |
| BLOOM_FILTER_FACTOR            |         .3  |          .3 |  True   |
| DEGREE_OF_PARALLEL             |          1  |           1 |  True   |
| MMS_DATA_LOADERS               |          4  |           8 |  True   |
| CHECKPOINT_INTERVAL            |     100000  |        256M |  False  |
| CHECKPOINT_TIMEOUT             |        300  |          60 |  False  |
| REDOFILE_IO_MODE               |      DSYNC  |       DSYNC |  True   |
| DATAFILE_IO_MODE               |    DEFAULT  |     DEFAULT |  True   |
| COMMIT_LOGGING                 |  IMMEDIATE  |   IMMEDIATE |  False  |
| RECOVERY_PARALLELISM           |         16  |          64 |  True   |
| REDO_BUFFER_SIZE               |        64M  |         64M |  True   |
+--------------------------------+-------------+-------------+---------+
| total memory                   |                             346760M |
+--------------------------------+-------------+-------------+---------+
Note: You can execute 'DBMS_PARAM.APPLY_RECOMMEND()' to apply the recommend parameters.
      After applying the parameters, you need to restart the database.

1 row fetched.

将参数写入配置文件

SQL> EXEC DBMS_PARAM.APPLY_RECOMMEND();

PL/SQL Succeed.

配置参数是实例级别,需要每个节点都执行该操作。

8.开启自动切换:设置FailoverThreshold为5,并且开启自动切换

[yashan@ob1 install]$ yasboot election config set -k FailoverThreshold -v 5 --cluster yashandb
group 1 execute Succeed 
[yashan@ob1 install]$ yasboot election enable on -c yashandb
group 1 execute Succeed 
[yashan@ob1 install]$ yasboot election config show --cluster yashandb
group 1
  Protection Mode: MAXIMUM PROTECTION
  Members:
    [1-1:1] - Primary database
      [1-2:2] - Physical standby database
                  Transport Lag: 0 seconds
                  Apply Lag:     0 seconds
                  Apply Rate:    2.73 MByte/s

  Properties:
    FailoverThreshold      = 5
    FailoverAutoReinstate  = false
    ZeroDataLossMode       = true

Automatic Failover: Enabled in Zero Data Loss Mode

测试备机同步延迟8ms

1 测试方案

  • 主机创建一张表:create table ha_test(time_col timestamp),往该表插入一条数据。
  • 获取本地时间戳,用本地时间戳update该表的数据,并提交。持续执行该操作。
  • 在备机上查询该表的数据,通过执行查询该表的时间戳与查询到表中的数据的时间戳做差值,这个时间差就是主备同步的延迟。(表中只有一条数据,所以执行update和select操作的时间可以忽略不计)

2 测试步骤

1.首先准备TPC-C压力测试(如何使用TPC-C压力测试可以参考YashanDB的官网,有详细的介绍)。

2.TPC-C配置为300仓128并发,在该配置下可以达到百万级别tpmC的压力测试,在这种压力业务场景下执行测试验证。

3.分别在主机和备机上执行测试脚本(总共做100次测试)。

4.根据脚本统计的数据,计算主备业务的时间差。

测试脚本:

#!/bin/bash
#主机执行update业务操作
# 修改100次
for ((i=1; i<=100; i++))
do
    # 获取当前时间并格式化为数据库可接受的格式
    current_time=$(date +'%Y-%m-%d %H:%M:%S.%3N')

    echo "Current time is: $current_time"
    # 修改表ha_test的数据
    yasql ha_test/123@192.168.7.10:1688 -c "UPDATE ha_test SET time_col='$current_time';"
    sleep 0.1
done
#!/bin/bash

# 备机执行查询操作
while true
do
    # 获取当前时间
    current_time=$(date +'%Y-%m-%d %H:%M:%S.%3N')
    echo "Current time is: $current_time"

    #查询表ha_test的时间列数据
    yasql ha_test/123@192.168.7.11:1688 -c "select time_col from ha_test;"
done

3 测试结果

  • 测试时的redo刷盘速度(查询V$REDOSTAT获知):235MB/s
  • 备机查询延迟的平均值:8ms

从100次测试中选取5次数据如下:
在这里插入图片描述

测试仲裁自动切换,RTO<8S

RTO的计算方式:旧主机业务中断时间同新主机执行业务成功的时间差。

1 测试步骤

1.继续构造压力测试场景(使用TPC-C的压力测试),执行10分钟左右的压力业务。

2.检测主机业务的中断时间和新主机成功执行业务的时间。

3.分别在主机和备机上执行检测脚本。

4.kill主机进程,使主机的业务中断。

测试脚本:

#!/bin/bash
# 无限循环
while true
do
    # 获取当前时间并格式化为数据库可接受的格式
    current_time=$(date +'%Y-%m-%d %H:%M:%S.%3N')
    # 打印当前时间
    echo "Current time is: $current_time"
    # 执行写操作
    yasql ha_test/123@192.168.7.10:1688 -c "UPDATE ha_test SET time_col='$current_time';"
done

2 测试结果

执行测试前集群的状态:

[yashan@ob1 install]$ yasboot cluster status --cluster yashandb --detail
 hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address    | data_path                       
-------------------------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | 69010 | open            | normal          | primary       | 192.168.7.10:1688 | /data1/yashan/yasdb_data/db-1-1 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0002 | db        | 1-2:2  | 86135 | open            | normal          | standby       | 192.168.7.11:1688 | /data1/yashan/yasdb_data/db-1-2 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------

kill主机之后,集群的状态(备机已经变成了主机)

[yashan@ob1 sync_test]$ yasboot cluster status --cluster yashandb --detail
 hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address    | data_path                       
-------------------------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | off   | -               | -               | -             | 192.168.7.10:1688 | /data1/yashan/yasdb_data/db-1-1 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0002 | db        | 1-2:2  | 86135 | open            | normal          | primary       | 192.168.7.11:1688 | /data1/yashan/yasdb_data/db-1-2 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------

旧主机业务中断的时间戳:

Current time is: 2024-03-19 15:45:38.464
SQL> UPDATE ha_test SET time_col='2024-03-19 15:45:38.464';

1 row affected.

Current time is: 2024-03-19 15:45:38.476
SQL> UPDATE ha_test SET time_col='2024-03-19 15:45:38.476';

YAS-00406 connection is closed

新主机执行业务成功的时间:


Current time is: 2024-03-19 15:45:46.204
SQL> UPDATE ha_test SET time_col='2024-03-19 15:45:46.204';

YAS-06010 the database is not in readwrite mode

Current time is: 2024-03-19 15:45:46.211
SQL> UPDATE ha_test SET time_col='2024-03-19 15:45:46.211';

1 row affected.

3 测试总结

  • 心跳间隔配置:1s
  • 检查超时时间配置:5s
  • 当前的redo刷盘速度:237MB/s
  • 业务中断时间:7.745s
  • 故障转移时间:小于3s

部署一主两备,在线增加备机

1.恢复环境并关闭仲裁自动切换,仲裁自动切换仅使用于一主一备的环境配置


[yashan@ob1 yasdb_home]$ yasboot election enable off -c yashandb
group 1 execute Succeed 
[yashan@ob1 yasdb_home]$ yasboot election config show --cluster yashandb
group 1
  Protection Mode: MAXIMUM PROTECTION
  Members:
    [1-2:2] - Primary database
      [1-1:1] - Physical standby database
                  Transport Lag: 0 seconds
                  Apply Lag:     0 seconds
                  Apply Rate:    391.00 MByte/s

  Properties:
    FailoverThreshold      = 5
    FailoverAutoReinstate  = false
    ZeroDataLossMode       = true

Automatic Failover: DISABLED
[yashan@ob1 yasdb_home]$ yasboot cluster status --cluster yashandb --detail
 hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address    | data_path                       
-------------------------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | 14818 | open            | normal          | primary       | 192.168.7.10:1688 | /data1/yashan/yasdb_data/db-1-1 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0002 | db        | 1-2:2  | 86135 | open            | normal          | standby       | 192.168.7.11:1688 | /data1/yashan/yasdb_data/db-1-2 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------

2.生成配置文件:hosts_add.toml和yashandb_add.toml


[yashan@ob1 install]$ yasboot config node gen -c yashandb -u yashan -p yashan --ip 192.168.7.12 --port 22 --data-path /data1/yashan/yasdb_data --install-path /data1/yashan/yasdb_home -g 1 --node 1
 hostid   | group | node_type | node_name | listen_addr       | replication_addr  | data_path                
-------------------------------------------------------------------------------------------------------------
 host0003 | dbg1  | db        | 1-3       | 192.168.7.12:1688 | 192.168.7.12:1689 | /data1/yashan/yasdb_data 
----------+-------+-----------+-----------+-------------------+-------------------+--------------------------

Generate config success

3.执行安装:安装YashanDB的运行程序到新增节点的服务器,并且启动服务进程yasagent

[yashan@ob1 install]$ yasboot host add -c yashandb -i yashandb-personal-23.1.1.100-linux-x86_64.tar.gz -t hosts_add.toml
 type | uuid             | name    | hostid | index    | status  | return_code | progress | cost 
-------------------------------------------------------------------------------------------------
 task | 63112e698b5689a0 | HostAdd | -      | yashandb | SUCCESS | 0           | 100      | 8    
------+------------------+---------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS

4.增加备机:任务显示成功并不代表着扩容任务成功,因为仍有后台任务在完成数据的同步等操作


[yashan@ob1 install]$ yasboot node add -c yashandb -t yashandb_add.toml
 type | uuid             | name    | hostid | index    | status  | return_code | progress | cost 
-------------------------------------------------------------------------------------------------
 task | 4618495ddc9c012c | NodeAdd | -      | yashandb | SUCCESS | 0           | 100      | 10   
------+------------------+---------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS

5.等待扩容任务完成


[yashan@ob1 install]$ yasboot task list -c yashandb --search type=NodeAdd
 uuid             | name                        | type    | index        | hostid   | status  | ret_code | progress | created_at          | cost 
-------------------------------------------------------------------------------------------------------------------------------------------------
 ecff3c2c4b452ce1 | AddDBAlterHA                | NodeAdd | yashandb     | -        | SUCCESS | 0        | 100      | 2024-03-19 16:04:36 | 1    
------------------+-----------------------------+---------+--------------+----------+---------+----------+----------+---------------------+------
 8d8146ab5fff3423 | BuildDatabaseToMultiAddress | NodeAdd | yashandb.1-1 | host0001 | SUCCESS | 0        | 100      | 2024-03-19 16:04:36 | 760    
------------------+-----------------------------+---------+--------------+----------+---------+----------+----------+---------------------+------
 4618495ddc9c012c | NodeAdd                     | NodeAdd | yashandb     | -        | SUCCESS | 0        | 100      | 2024-03-19 16:04:36 | 10   
------------------+-----------------------------+---------+--------------+----------+---------+----------+----------+---------------------+------

6.安装后检查:

检测集群的状态

[yashan@ob1 install]$ yasboot cluster status --cluster yashandb --detail
 hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address    | data_path                       
-------------------------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | 14818 | open            | normal          | primary       | 192.168.7.10:1688 | /data1/yashan/yasdb_data/db-1-1 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0002 | db        | 1-2:2  | 86135 | open            | normal          | standby       | 192.168.7.11:1688 | /data1/yashan/yasdb_data/db-1-2 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0003 | db        | 1-3:3  | 14944 | open            | normal          | standby       | 192.168.7.12:1688 | /data1/yashan/yasdb_data/db-1-3 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------

主备连接状态检查


SQL> select DEST_ID, CONNECTION, PEER_ADDR, STATUS, DATABASE_MODE from v$archive_dest_status;

DEST_ID CONNECTION        PEER_ADDR                                                        STATUS            DATABASE_MODE     
------- ----------------- ---------------------------------------------------------------- ----------------- ----------------- 
      1 CONNECTED         192.168.7.11:1689                                                NORMAL            OPEN             
      2 CONNECTED         192.168.7.12:1689                                                NORMAL            OPEN             

2 rows fetched.

7.开启Raft自动切换


[yashan@ob1 install]$ yasboot cluster config set -c yashandb -k HA_ELECTION_ENABLED -v true
 type | uuid             | name                 | hostid | index    | status  | return_code | progress | cost 
--------------------------------------------------------------------------------------------------------------
 task | cc2a1364200f86e8 | YasdbConfigSetParent | -      | yashandb | SUCCESS | 0           | 100      | 1    
------+------------------+----------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS

可关注YashanDB视频号观看教程

测试Raft的自动切换,RTO<8S

1 测试步骤

测试步骤跟仲裁切换是一致的,这里不再介绍。

2 测试结果

执行测试前集群的状态:


[yashan@ob1 install]$ yasboot cluster status --cluster yashandb --detail
 hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address    | data_path                       
-------------------------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | 14818 | open            | normal          | primary       | 192.168.7.10:1688 | /data1/yashan/yasdb_data/db-1-1 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0002 | db        | 1-2:2  | 86135 | open            | normal          | standby       | 192.168.7.11:1688 | /data1/yashan/yasdb_data/db-1-2 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0003 | db        | 1-3:3  | 14944 | open            | normal          | standby       | 192.168.7.12:1688 | /data1/yashan/yasdb_data/db-1-3 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------

kill主机之后,集群的状态(备机已经变成了主机)


[yashan@ob1 install]$ yasboot cluster status --cluster yashandb --detail
 hostid   | node_type | nodeid | pid   | instance_status | database_status | database_role | listen_address    | data_path                       
-------------------------------------------------------------------------------------------------------------------------------------------------
 host0001 | db        | 1-1:1  | off   | -               | -               | -             | 192.168.7.10:1688 | /data1/yashan/yasdb_data/db-1-1 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0002 | db        | 1-2:2  | 86135 | open            | normal          | primary       | 192.168.7.11:1688 | /data1/yashan/yasdb_data/db-1-2 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------
 host0003 | db        | 1-3:3  | 14944 | open            | normal          | standby       | 192.168.7.12:1688 | /data1/yashan/yasdb_data/db-1-3 
----------+-----------+--------+-------+-----------------+-----------------+---------------+-------------------+---------------------------------

旧主机业务中断的时间戳:


Current time is: 2024-03-19 16:31:45.309
SQL> UPDATE ha_test SET time_col='2024-03-19 16:31:45.309';

1 row affected.

Current time is: 2024-03-19 16:31:45.322
SQL> UPDATE ha_test SET time_col='2024-03-19 16:31:45.322';

YAS-00406 connection is closed

新主机执行业务成功的时间:

Current time is: 2024-03-19 16:31:53.250
SQL> UPDATE ha_test SET time_col='2024-03-19 16:31:53.250';

YAS-06010 the database is not in readwrite mode

Current time is: 2024-03-19 16:31:53.257
SQL> UPDATE ha_test SET time_col='2024-03-19 16:31:53.257';

1 row affected.

3 测试总结

  • 心跳间隔配置:1s

  • 检查超时时间配置:5s

  • 当前的redo刷盘速度:237MB/s

  • 业务中断时间:7.935s

  • 故障转移时间:小于3s

总结

本文向大家演示了YashanDB主备高可用部署以及两种自动切换的部署实施过程。可以看到,YashanDB在备机同步延迟、自动切换等方面展现了显著的优势,也欢迎大家前往官网下载体验(YashanDB官网) , 如果大家在实施过程中遇到任何的问题,欢迎加入YashanDB技术交流群反馈,我们的技术专家将为您提供解答与支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1649407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++程序设计教案

文章目录&#xff1a; 一&#xff1a;软件安装环境 第一种&#xff1a;vc2012 第二种&#xff1a;Dev-C 第三种&#xff1a;小熊猫C 二&#xff1a;语法基础 1.相关 1.1 注释 1.2 换行符 1.3 规范 1.4 关键字 1.5 ASCll码表 1.6 转义字符 2.基本框架 2.1 第一种&…

如果insightface/instantID安装失败怎么办(关于InsightFaceLoader_Zho节点的报错)

可能性有很多&#xff0c;但是今天帮朋友解决问题的时候又收集了一种新的思路。 首先&#xff0c;可以先按照这篇文章里边提到的方法去安装&#xff1a; 【全网最详细】ComfyUI下&#xff0c;Insightface安装指南-聚梦小课堂_insightface如何安装-CSDN博客 其次&#xff0c;…

解决Python中的 `ModuleNotFoundError: No module named ‘fcmeans‘` 错误

ModuleNotFoundError: No module named fcmeans 解决Python中的 ModuleNotFoundError: No module named fcmeans 错误如何解决这个错误fcmeans 库简介应用实例 解决Python中的 ModuleNotFoundError: No module named fcmeans 错误 在进行数据科学或机器学习项目时&#xff0c;…

Linux内核之获取文件系统超级块:sget用法实例(六十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

大眼橙C1 Air投影仪:千元预算内的明智之选

在科技日新月异的今天&#xff0c;投影仪已经不再是会议室或教室的专属&#xff0c;而是越来越多地走入了寻常百姓家。家庭影院的概念越来越流行&#xff0c;尤其在都市人之间逐渐成为一股风尚。市场上投影仪非常多&#xff0c;如何选到一台合适的投影仪也成为困扰广大用户的一…

了解TMS运输管理系统,实现物流高效运转

TMS运输管理系统&#xff08;Transportation Management System&#xff09;是一种集成物流和信息技术的解决方案&#xff0c;通过优化运输流程、实时跟踪货物信息和自动化管理操作&#xff0c;提高物流效率&#xff0c;降低运营成本&#xff0c;实现高效运输。 TMS运输管理系…

软件设计师-重点的构造型设计模式

一、桥接模式&#xff08;Bridge&#xff09;&#xff1a; 意图&#xff1a; 将抽象部分与其实现部分分离&#xff0c;使它们都可以独立地变化。 结构&#xff1a; 适用性&#xff1a; 不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如&#xff0c;这种情况可能是…

探索大模型能力--prompt工程

1 prompt工程是什么 1.1 什么是Prompt&#xff1f; LLM大语言模型终究也只是一个工具&#xff0c;我们不可能每个人都去训一个大模型&#xff0c;但是我们可以思考如何利用好大模型&#xff0c;让他提升我们的工作效率。就像计算器工具一样&#xff0c;要你算10的10倍&#x…

【计算机网络】计算机网络的性能指标

计算机网络的性能指标被用来从不同方面度量计算机网络的性能。常用的八个计算机网络性能指标&#xff1a;速率、带宽、吞吐量、时延、时延带宽积、往返时间、利用率、丢包率。 一.速率 (1) 数据量 比特&#xff08;bit&#xff0c;记为小写b&#xff09;是计算机中数据量的基…

JavaWEB 框架安全:Spring 漏洞序列.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型&#xff0c;可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入&#xff08;Dependency Injection&#xff09;、面向切面编程&#xff08;Aspect-Or…

c++ 线程交叉场景试验

1.需求 1.处理一个列表的数据&#xff0c;要求按照列表的数据处理10个数据 2.可以使用多线程处理&#xff0c;但是针对每个线程&#xff0c;1~10的处理顺序不能变。 3.每个数据的处理必须原子&#xff0c;即只有一个线程可以针对某个数据进行处理&#xff0c;但是10个数据是可…

2024年CSC公派联合培养博士项目申报即将开始~

一、选派计划 联合培养博士研究生面向全国各博士学位授予单位选拔。 联合培养博士研究生的留学期限、资助期限为6-24个月。留学期限应根据拟留学单位学制、外方录取通知&#xff08;或正式邀请信&#xff09;中列明的留学时间确定。个人申报的资助期限应不超过留学期限&#…

79、贪心-跳跃游戏II

思路&#xff1a; 首先理解题意&#xff1a;从首位置跳最少多少次到达末尾。 第一种&#xff1a;使用递归&#xff0c;将所有跳转路径都获取到进行求出最小值。 第二种&#xff1a;使用动态规划&#xff0c;下一次最优取决上一次的最优解 第三针&#xff1a;贪心&#xff…

python数据分析常用基础语法

Python语言基础——语法基础 前言一、变量的介绍与使用变量的介绍变量命名规则变量的使用拓展 二、标识符标识符命名命名规则注意事项 三、数据类型数据类型的介绍数据类型的查看示例 四、输入与输出输入和输出的介绍format格式化输出占位符 五、代码缩进与注释代码缩进 前言 …

Spring Cloud 整合Sentinel

1、引入依赖 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 父pom <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>Sentinel应用直接引用starter <…

0508_IO2

练习&#xff1a; 将一张图片修改为德国国旗 1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 #include <sys/types.h>5 #include <unistd.h>6 #include <sys/stat.h>7 #include <fcntl.h>8 #include <pthrea…

Codigger:Web应用赋能的分布式操作系统让用户卓越体验

Codigger&#xff0c;作为一个分布式操作系统&#xff0c;其独特之处在于其采用的浏览器/服务器&#xff08;Browser/Server&#xff0c;简称B/S&#xff09;架构。这种架构的核心思想是&#xff0c;通过浏览器来进入工作界面&#xff0c;页面交互部分事务逻辑在前端&#xff0…

1-1ARM开发环境搭建(GD32)

1:安装MDK最好是5.27以及以上版本&#xff0c;避免后续学习中出现相关错误 2&#xff1a;安装芯片支持包 双击安装即可&#xff0c;也可以是默认路径&#xff0c;也可以自己更改路径 3&#xff1a;安装jlink下载器驱动&#xff08;下载调试器&#xff09; 具体安装步骤如下所示…

Mac虚拟机软件哪个好用 mac虚拟机parallels desktop有什么用 Mac装虚拟机的利与弊 mac装虚拟机对电脑有损害吗

随着多系统使用需求的升温&#xff0c;虚拟机的使用也变得越来越普遍。虚拟机可以用于创建各种不同的系统&#xff0c;并按照要求设定所需的系统环境。另外&#xff0c;虚拟机在Mac电脑的跨系统使用以及测试软件系统兼容性等领域应用也越来越广泛。 一、Mac系统和虚拟机的区别 …

v-for中的key是什么作用

在使用v-for进行列表渲染时&#xff0c;我们通常会给元素或者组件绑定一个key属性。 这个key属性有什么作用呢?我们先来看一下官方的解释&#xff1a; key属性主要用在Vue的虚拟DOM算法&#xff0c;在新Inodes对比时辨识VNodes&#xff1b; 如果不使用key&#xff0c;Vue会使用…