首页 > 其他分享 >Far Sync容灾部署及测试

Far Sync容灾部署及测试

时间:2024-02-28 16:15:16浏览次数:35  
标签:pocdbdg tns Far Sync DEST pocdbfs1 容灾 pocdb

前言

Far Sync都已经出现很多年了,虽然知道这个东西,但一直没有亲自测试过,最近有个项目可能要上这个玩意,于是先在测试环境练练手。

一、      环境信息

部署Far Sync ADG环境,需要提前准备好主、备库环境以及至少一套Far Sync用的环境(单机或RAC)。

1.      Far Sync HA架构

此次文档使用Far Sync HA架构。

Far Sync HA架构,也即有两个Far Sync节点,避免Far Sync出现单点故障。

2.      测试环境说明

本次测试,环境信息如下所示:

 

DB_UNIQUE_NAME

DB_NAME

SID

TNS alias

IP

主库

pocdb

pocdb

pocdb

pocdb_tns

192.168.56.141

备库

pocdbdg

pocdb

pocdb

pocdbdg_tns

192.168.56.144

FarSync1

pocdbfs1

pocdb

pocdbfs1

pocdbfs1_tns

192.168.56.142

FarSync2

pocdbfs2

pocdb

pocdbfs2

pocdbfs2_tns

192.168.56.143

 

二、      配置容灾

1.      配置ADG环境

具体配置过程省略。

ADG配置完成后,环境信息如下所示。

SQL> select * from v$dataguard_config;

DB_UNIQUE_NAME     PARENT_DBUN    DEST_ROLE         CURRENT_SCN     CON_ID

------------------ -------------- ----------------- ----------- ----------

pocdb              NONE           PRIMARY DATABASE       409942          0

pocdbdg            pocdb          PHYSICAL STANDBY       409944          0

SQL>

2.      RMAN配置Far Sync1

1)      配置Far Sync1的服务名称

Far Sync1库所有节点需配置数据库服务名

# su - oracle

$ vi $ORACLE_HOME/network/admin/tnsnames.ora

pocdb_tns =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.141)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pocdb)

    )

  )

 

pocdbfs1_tns =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.142)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pocdbfs1)

    )

  )

 

pocdbfs2_tns =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.143)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pocdbfs2)

    )

  ) 

 

pocdbdg_tns =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.144)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pocdbdg)

    )

  )

2)      注册Far Sync1的静态监听

Far Sync1库所有节点需配置静态监听

添加静态注册监听,用于DG BROKER:名称:db_nuique_name_dgmgrl

# su - grid

$ vi $ORACLE_HOME/network/admin/listener.ora

#备库配置

SID_LIST_LISTENER =

(SID_LIST =

  (SID_DESC =

    (GLOBAL_DBNAME = pocdbfs1_DGMGRL)

    (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)

    (SID_NAME = pocdbfs1)

  )

  (SID_DESC =

    (GLOBAL_DBNAME = pocdbfs1)

    (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)

    (SID_NAME = pocdbfs1)

  )

)

# reload监听使参数生效

$ lsnrctl reload

$ lsnrctl status

3)      将主库的pfile文件拷贝至Far Sync1

--主库:

$ scp pfile.ora 192.168.56.142:/u01/app/oracle/product/19.0.0/dbhome_1/dbs

--备库:

$ mv pfile.ora initpocdbfs1.ora

4)      将主库的密码文件拷贝至Far Sync1

--主库:

$ scp orapwpocdb 192.168.56.142:/u01/app/oracle/product/19.0.0/dbhome_1/dbs

--备库:

$ mv orapwpocdb orapwpocdbfs1

 

5)      修改Far Sync1库的pfile文件

$ mv pfile.ora initpocdbfs1.ora

修改后的内容如下:

[oracle@db02 dbs]$ cat initpocdbfs1.ora

*.audit_file_dest='/u01/app/oracle/admin/pocdbfs1/adump'

*.audit_trail='db'

*.compatible='19.0.0'

*.control_files='/u01/app/oracle/oradata/pocdbfs1/control01.ctl','/u01/app/oracle/oradata/pocdbfs1/control02.ctl'

*.db_block_size=8192

*.db_file_name_convert='/u01/app/oracle/oradata/pocdb','/u01/app/oracle/oradata/pocdbfs1'

*.db_name='pocdb'

*.db_unique_name='pocdbfs1'

*.diagnostic_dest='/u01/app/oracle'

*.fal_server='pocdb_tns'

*.log_archive_config='dg_config=(pocdb,pocdbfs1,pocdbdg)'

*.log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/pocdbfs1/archive'

*.log_archive_dest_2='SERVICE=pocdbdg_tns ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=pocdbdg'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_format='%t_%s_%r.arc'

*.log_file_name_convert='/u01/app/oracle/oradata/pocdb','/u01/app/oracle/oradata/pocdbfs1'

*.memory_target=1515m

*.nls_language='AMERICAN'

*.nls_territory='AMERICA'

*.open_cursors=300

*.processes=500

*.remote_login_passwordfile='EXCLUSIVE'

*.standby_file_management='AUTO'

*.undo_tablespace='UNDOTBS1'

6)      登陆Far Sync1库,添加相关目录

$ mkdir -p  /u01/app/oracle/admin/pocdbfs1/adump

$ mkdir -p /u01/app/oracle/oradata/pocdbfs1/archive

7)      登陆Far Sync1库,nomont启动实例

$ sqlplus / as sysdba

SQL> startup nomount

SQL> create spfile from pfile;

8)      测试主、备、Far Sync1库的TNS连通性

sqlplus sys/welcome1@pocdb_tns as sysdba

sqlplus sys/welcome1@pocdbdg_tns as sysdba

sqlplus sys/welcome1@pocdbfs1_tns as sysdba

主库、备库以及Far Sync1库都需要测试成功。

 

9)      登陆主库,通过rman恢复Far Sync1

#在主库操作:

1).创建farsync1.rman脚本,内容如下所示:

run {

allocate channel prmy1 type disk;

allocate channel prmy2 type disk;

allocate channel prmy3 type disk;

allocate channel prmy4 type disk;

allocate auxiliary channel stby1 type disk;

allocate auxiliary channel stby2 type disk;

allocate auxiliary channel stby3 type disk;

allocate auxiliary channel stby4 type disk;

duplicate target database for FARSYNC from active database nofilenamecheck;

}

 

2).创建farsync1.sh脚本,后期放入后台执行。

rman target sys/welcome1@pocdb_tns auxiliary sys/welcome1@pocdbfs1_tns cmdfile farsync1.rman log rman.log

 

3).执行farsync1.sh脚本:

nohup ./farsync1.sh &

 

备注:rman 分别使用简易连接连接主库和far sync,也可以直接使用TNS配置名称连接。

10)  确认farsync1状态

SQL>  select open_mode,protection_mode,protection_level,switchover#,database_role,switchover_status from v$database;

11)  修改主库参数

alter system set log_archive_config='DG_CONFIG=(pocdb,pocdbfs1,pocdbdg)' scope=both sid='*';

利用Group 和 Priority的配置,控制日志传输的优先级和方向

alter system set LOG_ARCHIVE_DEST_2='SERVICE=pocdbfs1_tns SYNC AFFIRM   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=1 DB_UNIQUE_NAME=pocdbfs1' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_3='SERVICE=pocdbdg_tns ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=8 DB_UNIQUE_NAME=pocdbdg' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE scope=both sid='*';

 

alter system set fal_server='pocdbdg_tns' scope=both sid='*';

 

12)  修改备库参数

alter system set log_archive_config='DG_CONFIG=(pocdb,pocdbfs1,pocdbdg)' scope=both sid='*';

 

利用Group 和 Priority的配置,控制日志传输的优先级和方向

alter system set LOG_ARCHIVE_DEST_2='SERVICE=pocdb_tns ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=2 PRIORITY=1 DB_UNIQUE_NAME=pocdb' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both sid='*';

alter system set fal_server='pocdb_tns,pocdbfs1_tns,pocdbfs2_tns' scope=both sid='*';

 

13)  修改Far Sync1库参数

alter system set log_archive_config='DG_CONFIG=(pocdb,pocdbfs1,pocdbdg)' scope=both sid='*';

 

alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/pocdbfs1/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pocdbfs1' scope=both sid='*';

alter system set log_archive_dest_2='SERVICE=pocdbdg_tns ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=pocdbdg' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both sid='*';

 

alter system set fal_server='pocdb_tns' scope=both sid='*';

14)      确认配置完成

SQL> select * from v$dataguard_config;

DB_UNIQUE_NAME   PARENT_DBUN    DEST_ROLE         CURRENT_SCN     CON_ID

---------------- -------------- ----------------- ----------- ----------

pocdb            NONE           PRIMARY DATABASE       422700          0

pocdbfs1         pocdb          FAR SYNC INSTANCE      422552          0

pocdbdg          pocdbfs1       PHYSICAL STANDBY       422552          0

SQL>

SQL> select dest_name,status,type,destination,error from v$archive_dest_status where dest_id<=4;

DEST_NAME                                STATUS    TYPE             DESTINATION             ERROR

--------------------- --------- ---------------- --------------------------------------- -----------

LOG_ARCHIVE_DEST_1    VALID     LOCAL            /u01/app/oracle/oradata/pocdb/archive  

LOG_ARCHIVE_DEST_2    VALID     FAR SYNC         pocdbfs1_tns                           

LOG_ARCHIVE_DEST_3    ALTERNATE PHYSICAL         pocdbdg_tns                            

LOG_ARCHIVE_DEST_4    INACTIVE  LOCAL

3.      配置Far Sync2

配置Far Sync2的步骤与配置Far Sync1基本一致,也可以考虑使用手动方式来配置Far Sync2。如果使用手动方式配置Far Sync2,则必须先在主库生成Far Sync格式的控制文件,然后在Far Sync2实例中添加standby logfile。

配置完Far Sync2后,主要是需要修改整个DG环境中的相关参数。具体如下所示。

1)      修改主库参数

alter system set log_archive_config='DG_CONFIG=(pocdb,pocdbfs1,pocdbfs2,pocdbdg)' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_2='SERVICE=pocdbfs1_tns SYNC AFFIRM   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=1 DB_UNIQUE_NAME=pocdbfs1' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_3='SERVICE=pocdbfs2_tns SYNC AFFIRM   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=1 DB_UNIQUE_NAME=pocdbfs2' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_4='SERVICE=pocdbdg_tns ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=8 DB_UNIQUE_NAME=pocdbdg' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_4=ENABLE scope=both sid='*';

alter system set fal_server='pocdbdg_tns' scope=both sid='*';

 

2)      修改备库参数

alter system set log_archive_config='DG_CONFIG=(pocdb,pocdbfs1,pocdbfs2,pocdbdg)' scope=both sid='*';

alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/pocdb/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pocdbdg' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_2='SERVICE=pocdb_tns ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=2 PRIORITY=1 DB_UNIQUE_NAME=pocdb' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both sid='*';

alter system set fal_server='pocdb_tns,pocdbfs1_tns,pocdbfs2_tns' scope=both sid='*';

14)  修改Far Sync1库参数

alter system set log_archive_config='DG_CONFIG=(pocdb,pocdbfs1,pocdbfs2,pocdbdg)' scope=both sid='*';

alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/pocdbfs1/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pocdbfs1' scope=both sid='*';

alter system set log_archive_dest_2='SERVICE=pocdbdg_tns ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=pocdbdg' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both sid='*';

alter system set fal_server='pocdb_tns' scope=both sid='*';

15)  修改Far Sync2库参数

alter system set log_archive_config='DG_CONFIG=(pocdb,pocdbfs1,pocdbfs2,pocdbdg)' scope=both sid='*';

alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/pocdbfs2/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pocdbfs2' scope=both sid='*';

alter system set log_archive_dest_2='SERVICE=pocdbdg_tns ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=pocdbdg' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both sid='*';

alter system set fal_server='pocdb_tns' scope=both sid='*';

16)  确认配置完成

SQL> select * from v$dataguard_config;

 

DB_UNIQUE_NAME                 PARENT_DBUN                    DEST_ROLE         CURRENT_SCN     CON_ID

------------------------------ ------------------------------ ----------------- ----------- ----------

POCDB                          NONE                           PRIMARY DATABASE       802346          0

pocdbfs1                       POCDB                          FAR SYNC INSTANCE      802267          0

pocdbdg                        pocdbfs1                       PHYSICAL STANDBY       802267          0

pocdbfs2                       UNKNOWN                        UNKNOWN                     0          0

SQL>

 

SQL> select dest_name,status,type,destination,error from v$archive_dest_status where dest_id<=4;

DEST_NAME            STATUS    TYPE       DESTINATION                              ERROR

-------------------- --------- ---------- ---------------------------------------- -----------

LOG_ARCHIVE_DEST_1   VALID     LOCAL      /u01/app/oracle/oradata/pocdb/archive

LOG_ARCHIVE_DEST_2   ALTERNATE FAR SYNC   pocdbfs1_tns                             ORA-03113:

LOG_ARCHIVE_DEST_3   VALID     FAR SYNC   pocdbfs2_tns

LOG_ARCHIVE_DEST_4   ALTERNATE UNKNOWN    pocdbdg_tns

 

DGMGRL> show configuration

Configuration - config1

  Protection Mode: MaxPerformance

  Members:

  pocdb    - Primary database

    pocdbdg  - Physical standby database

    pocdbfs1 - Far sync instance

    pocdbfs2 - Far sync instance

Fast-Start Failover:  Disabled

Configuration Status:

SUCCESS   (status updated 28 seconds ago)

DGMGRL>

三、      Far Sync高可用测试

1.      当前状态

SQL> select dest_name,status,type,destination,error from v$archive_dest_status where dest_id<=4;

DEST_NAME              STATUS    TYPE        DESTINATION                             ERROR

---------------------- --------- ----------- --------------------------------------- -------

LOG_ARCHIVE_DEST_1     VALID     LOCAL       /u01/app/oracle/oradata/pocdb/archive

LOG_ARCHIVE_DEST_2     ALTERNATE PHYSICAL    pocdbdg_tns

LOG_ARCHIVE_DEST_3     VALID     FAR SYNC    pocdbfs1_tns

LOG_ARCHIVE_DEST_4     ALTERNATE FAR SYNC    pocdbfs2_tns

SQL>

 

DGMGRL> show configuration

Configuration - config1

  Protection Mode: MaxPerformance

  Members:

  pocdb    - Primary database

    pocdbfs1 - Far sync instance

      pocdbdg  - Physical standby database

  Members Not Receiving Redo:

  pocdbfs2 - Far sync instance (alternate of pocdbfs1)

Fast-Start Failover:  Disabled

Configuration Status:

SUCCESS   (status updated 11 seconds ago)

DGMGRL>

Far Sync1工作,Far Sync2备用。

 

2.      停止Far Sync1

SQL>

--停止Far Sync1实例:

SQL> shutdown abort

ORACLE instance shut down.

SQL>

 

--查看归档链路

DEST_NAME            STATUS    TYPE        DESTINATION                             ERROR

-------------------- --------- ----------- --------------------------------------- ------------------------------------------------

LOG_ARCHIVE_DEST_1   VALID     LOCAL       /u01/app/oracle/oradata/pocdb/archive

LOG_ARCHIVE_DEST_2   ALTERNATE PHYSICAL    pocdbdg_tns

LOG_ARCHIVE_DEST_3   ALTERNATE FAR SYNC    pocdbfs1_tns                            ORA-03113: end-of-file on communication channel

LOG_ARCHIVE_DEST_4   VALID     FAR SYNC    pocdbfs2_tns

SQL>

DGMGRL> show configuration

 

Configuration - config1

 

  Protection Mode: MaxPerformance

  Members:

  pocdb    - Primary database

    pocdbfs2 - Far sync instance (alternate of pocdbfs1)

      pocdbdg  - Physical standby database

 

  Members Not Receiving Redo:

  pocdbfs1 - Far sync instance

 

Fast-Start Failover:  Disabled

 

Configuration Status:

SUCCESS   (status updated 57 seconds ago)

 

DGMGRL>

Far Sync1已经处于备用,而Far Sync2开始工作。

 

3.      停止Far Sync2

SQL>

--停止Far Sync2实例:

SQL> shutdown abort

ORACLE instance shut down.

SQL>

 

--查看归档链路

 

DEST_NAME             STATUS    TYPE       DESTINATION                             ERROR

--------------------- --------- ---------- --------------------------------------- ----------------------------------

LOG_ARCHIVE_DEST_1    VALID     LOCAL      /u01/app/oracle/oradata/pocdb/archive

LOG_ARCHIVE_DEST_2    ALTERNATE PHYSICAL   pocdbdg_tns

LOG_ARCHIVE_DEST_3    VALID     FAR SYNC   pocdbfs1_tns

LOG_ARCHIVE_DEST_4    ALTERNATE FAR SYNC   pocdbfs2_tns                            ORA-03135: connection lost contact

 

SQL>

DGMGRL> show configuration

Configuration - config1

  Protection Mode: MaxPerformance

  Members:

  pocdb    - Primary database

    pocdbfs1 - Far sync instance

      pocdbdg  - Physical standby database

  Members Not Receiving Redo:

  pocdbfs2 - Far sync instance (alternate of pocdbfs1)

Fast-Start Failover:  Disabled

Configuration Status:

SUCCESS   (status updated 52 seconds ago)

DGMGRL>

Far Sync2已经处于备用,而Far Sync1开始工作。

四、 Far Sync最佳实践

部署Far Sync时,尽量满足如下最佳实践。

1). 主库与Far Sync库之间的网络延迟足够低。

2). 主库与Far Sync库之间的网络带宽足够大。

3). 开启redo传输压缩。

4). 主库与Far Sync库之间的网络实现冗余链路。

5). Far Sync库的standby log file必须放在IOPS非常大的存储设备上。

 

标签:pocdbdg,tns,Far,Sync,DEST,pocdbfs1,容灾,pocdb
From: https://www.cnblogs.com/missyou-shiyh/p/18040722

相关文章

  • L-BFGS-B(Limited-memory Broyden–Fletcher–Goldfarb–Shanno )算法理解 —— 内存
    本文主要讲下个人对数值优化算法中几种常见算法的理解。什么是优化算法?给出函数f(X),现在要求minf(X)时的X值,这就是最优化问题。1.共轭梯度法方程:A*x=b,A矩阵为对称正定矩阵,b为向量,目标为求解出向量x。个人认为共轭梯度法并不能被当做是一个真正的优化算法,因为共轭梯度......
  • [USACO13MAR]Farm Painting S 题解
    看大家好多写的都用了四维偏序,给一个不用偏序的解法。简化一下题目,就是给你\(n\)个矩形,第\(i\)个矩形用\((x1_i,y1_i,x2_i,y2_i)\)表示,问你有多少个\(i\)满足:不存在另一个\(j\)使得\(x1_j\lex1_i\lex2_j\wedgey1_j\ley1_i\ley2_j\)。我们从左到右扫描每一个......
  • synchronized 原理 (偏向锁、轻量级锁、锁膨胀、自旋)
    synchronized原理Synchronized是Java中用于实现线程同步的关键字,它可以用于方法或代码块。当一个方法或代码块被synchronized修饰时,它将在任意时刻只允许一个线程访问,保证了多线程环境下的数据安全性。synchronized可用于修饰对象或方法:方法上的synchronizedclassTest......
  • java异步编排工具-asyncTool
    一、介绍一款开源工具AsyncTool:https://gitee.com/jd-platform-opensource/asyncTool是由京东零售的高级工程师编写的,提供了非常丰富的异步编排功能,并且经过了京东内部的测试,是对CompletableFuture的封装和补足二、引入1)、不推荐:maven引入,这个比较坑,客观原因经常会导致依赖下......
  • 使用defineAsyncComponent解决Vue3中的动态组件不显示问题
    参考:https://www.php.cn/faq/562208.html之前的写法<component:is='xxx'></component>异步加载组件<template><AsyncComponentv-if="item.data":key="item.data.comId"></AsyncComponent></template>&......
  • Go 100 mistakes - #71: Misusing sync.WaitGroup
       ......
  • Go语言精进之路读书笔记第35条——了解sync包的正确用法
    Go语言通过标准库的sync包提供了针对传统基于共享内存并发模型的基本同步原语。35.1sync包还是channel在下面一些场景下,我们依然需要sync包提供的低级同步原语(1)需要高性能的临界区同步机制场景(2)不想转移结构体对象所有权,但又要保证结构体内部状态数据的同步访问的场景......
  • Linux---rsync服务
    1.rsync简介rsync英文称为remotesynchronization,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以在本地主......
  • 使用注解@Async实现异步执行未生效的解决办法
    使用注解@Async实现异步执行未生效的解决办法1、第一种:未在启动类上标注开启异步执行的注解 启动类 @SpringBootApplication@EnableScheduling@EnableAsync@EnableRedisHttpSession(maxInactiveIntervalInSeconds=3600*4)@MapperScan("com.*")publicclassApplicati......
  • 高并发时为什么推荐ReentrantLock而不是synchronized
    目录1、最初的synchronized2、synchronized的优化3、但是,JAVA的最终答案JDK21LTS来了1、最初的synchronized它默认对临界资源添加重量级锁,即使可能并不存在竞争,只要走到临界区通通给你加锁。现在来回答问题:1)如果是低于JDK1.5,抱歉你没得选,只能先将就着用synchronize......