SQL SERVER 2008 Log Shipping怎么主备库切换

SQL SERVER 2008 Log Shipping怎么主备库切换,第1张

Step1,在Primary server的master数据库中打开一个新的查询窗口,运行下面的sql语句以完成对LogShipping的日志备份且with NORECOVERY。

Backup log LogShipping to disk = 'E:\backup\LogShippingLogbak' with NORECOVERY

Step2, 手动运行Secondary server上的复制文件agent及还原agent,以完成从备份共享文件夹的文件复制及在Secondary server上的还原。

Step3, 将警报agent、Primary server上的备份agent、Secondary server上的复制文件agent及还原agent都禁用掉。

Step4,在Secondary server上使用step1中创建的日志备份还原LogShipping_secondary数据库,且with RECOVERY。

Restore log LogShipping_secondary from disk ='E:\backup\LogShippingLogbak' with RECOVERY

Step5, 重新配置现在的Primary server(原Secondary server)对应的Logshipping选项,还是用以前的配置即可,只是将原来的Primary server 设定成了现在的Secondary server(standby mode)

Step6,启用当前Primary server(原Secondary server)上的备份agent,启用当前Secondary server(原Primary server)上的复制文件agent及还原agent。

>

Oracle Goldengate目前支持主被动式的双向配置,换而言之OGG可以将来自于激活的主库的数据变化完全复制到从库中,从库在不断同步数据的同时已经为计划内的和计划外的outages做好了故障切换的准备,也就是我们说的Live Standby。这里我们重点介绍一下配置Oracle Goldengate Live Standby系统的步骤,和具体的故障切换过程。

如果自己搞不定可以找ASKMACLEAN专业ORACLE数据库修复团队成员帮您恢复!

SQL> conn clinic/clinic

Connected

SQL> drop table tv;

create table tv (t1 int primary key,t2 int,t3 varchar2(30));

Table dropped

SQL> 

Table created

SQL> drop sequence seqt1;

create sequence seqt1 start with 1 increment by 1;

Sequence dropped

SQL> SQL>

Sequence created

declare

  rnd number(9,2);

begin

   for i in 1100000 loop

     insert into tv values(seqt1nextval,idbms_randomvalue,'MACLEAN IS TESTING');

     commit;

   end loop;

end;

/

/ 以上脚本在primary主库的某个应用账户下创建了测试用的数据,

    接着我们可以使用各种工具将数据初始化到从库中,如果在这个过程中

    希望实时在线数据迁移的话,可以参考《Goldengate实现在线数据迁移》

/

/ 注意我们在Live Standby的环境中往往需要复制sequence序列,以保证切换到备库时业务可以正常进行  /

/ 初始化备库数据后,确保已与主库完全一致 /

primary :

SQL> select sum(t2) from tv;

   SUM(T2)

----------

2498624495

SQL> select last_number from user_sequences;

LAST_NUMBER

-----------

     100001

standby:

SQL> select sum(t2) from tv;

   SUM(T2)

----------

2498624495

SQL> select last_number from user_sequences;

LAST_NUMBER

-----------

     100001

以上完成准备工作后,我们可以进入到正式配置Goldengate live stanby的阶段,包括以下步骤:

配置由主库到备库的extract、replicat、data pump,该步骤同普通的单向复制没有太大的区别

配置由备库到主库的extract、replicat、data pump

启动由主库到备库的extract、replicat、data pump

接下来我们会实践整个配置过程:

1

创建由主库到备库的extract、data pump、replicat

GGSCI (rh2oraclecom) 10> dblogin userid maclean

Password: 

Successfully logged into database

GGSCI (rh2oraclecom) 11> add trandata clinic

Logging of supplemental redo data enabled for table CLINICTV

GGSCI (rh2oraclecom) 4> add extract extstd1,tranlog,begin now

EXTRACT added

GGSCI (rh2oraclecom) 5> add exttrail /d01/ext/cl,megabytes 100,extract extstd1

EXTTRAIL added

GGSCI (rh2oraclecom) 7> view params extstd1

-- Identify the Extract group:

EXTRACT extstd1

-- Specify database login information as needed for the database:

userid maclean, password maclean

-- Specify the local trail that this Extract writes to:

EXTTRAIL /d01/ext/cl

-- Specify sequences to be captured:

SEQUENCE clinicseqt1;

-- Specify tables to be captured:

TABLE clinic;

-- Exclude specific tables from capture if needed:

-- TABLEEXCLUDE 

GGSCI (rh2oraclecom) 17> add extract pumpstd1,exttrailsource /d01/ext/cl,begin now

EXTRACT added

GGSCI (rh2oraclecom) 98> add rmttrail /d01/rmt/cl,megabytes 100,extract pumpstd1

RMTTRAIL added

GGSCI (rh2oraclecom) 129> view params pumpstd1

-- Identify the data pump group:

EXTRACT pumpstd1

userid maclean, password maclean

-- Specify database login information as needed for the database:

userid maclean, password maclean

RMTHOST rh3oraclecom, MGRPORT 7809

-- Specify the remote trail on the standby system:

RMTTRAIL /d01/rmt/cl

-- Pass data through without mapping, filtering, conversion:

PASSTHRU

sequence clinicseqt1;

Table clinic;

在备库上配置由主库到备库的replicat:

GGSCI (rh3oraclecom) 4> add replicat repstd1,exttrail /d01/rmt/cl,begin now

REPLICAT added

GGSCI (rh3oraclecom) 49> view params repstd1

-- Identify the Replicat group:

REPLICAT repstd1

-- State that source and target definitions are identical:

ASSUMETARGETDEFS

-- Specify database login information as needed for the database:

userid maclean, password maclean

-- Specify tables for delivery:

MAP clinic, TARGET clinic;

-- Exclude specific tables from delivery if needed:

-- MAPEXCLUDE 

2

创建由备库到主库的extract、data pump、replicat

GGSCI (rh3oraclecom) 51> dblogin userid maclean

Password: 

Successfully logged into database

GGSCI (rh3oraclecom) 52> add trandata clinic

Logging of supplemental redo data enabled for table CLINICTV

/ 不要忘记在备库端的相关表加上追加日志 /

GGSCI (rh3oraclecom) 53> add extract extstd2,tranlog,begin now

EXTRACT added

GGSCI (rh3oraclecom) 54> add exttrail /d01/ext/cl,megabytes 100,extract extstd2

EXTTRAIL added

GGSCI (rh3oraclecom) 58> view params extstd2

-- Identify the Extract group:

EXTRACT extstd2

-- Specify database login information as needed for the database:

userid maclean, password maclean

-- Specify the local trail that this Extract writes to:

EXTTRAIL /d01/ext/cl

-- Specify sequences to be captured:

SEQUENCE clinicseqt1;

-- Specify tables to be captured:

TABLE clinic;

-- Exclude specific tables from capture if needed:

-- TABLEEXCLUDE 

GGSCI (rh3oraclecom) 59> add extract pumpstd2,exttrailsource /d01/ext/cl,begin now

EXTRACT added

GGSCI (rh3oraclecom) 60> add rmttrail /d01/rmt/cl,megabytes 100,extract pumpstd2

RMTTRAIL added

GGSCI (rh3oraclecom) 63> view params pumpstd2

-- Identify the data pump group:

EXTRACT pumpstd2

userid maclean, password maclean

-- Specify database login information as needed for the database:

userid maclean, password maclean

RMTHOST rh2oraclecom, MGRPORT 7809

-- Specify the remote trail on the standby system:

RMTTRAIL /d01/rmt/cl

-- Pass data through without mapping, filtering, conversion:

PASSTHRU

sequence clinicseqt1;

Table clinic;

在主库上配置replicat:

GGSCI (rh2oraclecom) 136> add replicat repstd2,exttrail /d01/rmt/cl,begin now,checkpointtable macleanck

REPLICAT added

GGSCI (rh2oraclecom) 138> view params repstd2

-- Identify the Replicat group:

REPLICAT repstd2

-- State that source and target definitions are identical:

ASSUMETARGETDEFS

-- Specify database login information as needed for the database:

userid maclean, password maclean

-- Specify tables for delivery:

MAP clinic, TARGET clinic;

-- Exclude specific tables from delivery if needed:

-- MAPEXCLUDE 

3

完成以上OGG配置后,可以启动主库到备库的extract、pump、以及replicat:

GGSCI (rh2oraclecom) 141> start extstd1

Sending START request to MANAGER 

EXTRACT EXTSTD1 starting

GGSCI (rh2oraclecom) 142> start pumpstd1

Sending START request to MANAGER 

EXTRACT PUMPSTD1 starting

GGSCI (rh3oraclecom) 70> start repstd1

Sending START request to MANAGER 

REPLICAT REPSTD1 starting

/ 如果你是在offline状态下配置的话,那么此时可以启用应用了/

接下来我们尝试做有计划的主备库切换演练:

1

首先停止一切在主库上的应用,这一点和DataGuard Switchover一样。在保证没有活动事务的情况下,才能切换干净。

2

在主库端使用LAG等命令了解extract的延迟,若返回如"At EOF, no more records to process"的信息,则说明所有事务均已被抽取。

GGSCI (rh2oraclecom) 144> lag extstd1

Sending GETLAG request to EXTRACT EXTSTD1 

Last record lag: 0 seconds

At EOF, no more records to process

在EOF的前提下关闭extract:

GGSCI (rh2oraclecom) 146> stop extstd1 

Sending STOP request to EXTRACT EXTSTD1 

Request processed

3

同样对pump使用LAG命令,若返回如"At EOF, no more records to process"的信息,则说明已抽取的数据都被发送到备库了。

GGSCI (rh2oraclecom) 147> lag pumpstd1

Sending GETLAG request to EXTRACT PUMPSTD1 

Last record lag: 3 seconds

At EOF, no more records to process

在EOF的前提下,关闭data pump

GGSCI (rh2oraclecom) 148> stop pumpstd1

Sending STOP request to EXTRACT PUMPSTD1 

Request processed

3

检查备库端replicat的同步情况,如返回"At EOF, no more records to process",则说明所有记录均被复制。

GGSCI (rh3oraclecom) 71> lag repstd1

Sending GETLAG request to REPLICAT REPSTD1 

Last record lag: 5 seconds

At EOF, no more records to process

在EOF的前提下关闭replicat

GGSCI (rh3oraclecom) 72> stop repstd1

Sending STOP request to REPLICAT REPSTD1 

Request processed

4

紧接着我们可以在备库上为业务应用用户赋予必要的insert、update、delete权限,启用各种触发器trigger及cascade delete约束等;

以上手段在主库上对应的 *** 作是收回应用业务的权限,disable掉各种触发器及cascade delete约束,

之所以这样做是为了保证在任何时候扮演备库角色的数据库均不应当接受任何除了OGG外的手动的或者应用驱动的业务数据变更,

以保证主备库间的数据一致。

5

修改原备库上的extract的启动时间到现在,已保证它不去抽取那些之前的重做日志

GGSCI (rh3oraclecom) 75> alter extstd2 ,begin now

EXTRACT altered

GGSCI (rh3oraclecom) 76> start extstd2

Sending START request to MANAGER 

EXTRACT EXTSTD2 starting

若之前没有启动由备库到主库的pump和replicat的话可以在此时启动:

GGSCI (rh3oraclecom) 78> start pumpstd2

Sending START request to MANAGER 

EXTRACT PUMPSTD2 starting

GGSCI (rh2oraclecom) 161> start repstd2

Sending START request to MANAGER 

REPLICAT REPSTD2 starting

6此时我们可以正式启动在原备库现在的主库上的应用了

接下来我们尝试回切到原主库上:

1前提步骤与之前的切换相似,首先停止在原备库上的任何应用,

之后使用LAG命令确认extract和replicat的进度,在确认后关闭extract和replicat。

完成在主库上的维护工作:包括赋予权限,启用触发器等等。

2修改原主库上的extract的开始时间为当前,保证它不去处理之前的重做日志:

GGSCI (rh2oraclecom) 165> alter extract extstd1,begin now

EXTRACT altered

3此时我们已经可以启动在原主库现在的主库上的应用了

4启动最早配置的由主库到备库的extract、pump、replicat:

GGSCI (rh2oraclecom) 166> start extstd1

Sending START request to MANAGER 

EXTRACT EXTSTD1 starting

GGSCI (rh2oraclecom) 171> start pumpstd1

Sending START request to MANAGER 

EXTRACT PUMPSTD1 starting

GGSCI (rh3oraclecom) 86> start repstd1

Sending START request to MANAGER 

REPLICAT REPSTD1 starting

以上完成了OGG的Live Standby中主备库之间的计划内的切换Switchover,That's Great!

data guard简称DG,是一个主库(包括instance和数据库文件),多个备库(多个instance、多套数据库文件):

主库和备库之间都是独立的数据库;

主库和备库的数据完全相同,DG通过复制、重演redo log,把主库的数据复制到备库中,所以备库的数据会有一点时间延迟;

DG的作用,当主库down机后,可以用备库顶上;或者主机负责数据写入、备库给外界提供数据读取,实现读写分离;

RAC,全称Realtime Application Cluster,多个instance,一套数据文件:

多个instance之间有自己独立的物理内容,但是共享内存数据,协同工作;

多个instance之间共享一套数据文件;

RAC作用,提供instance级别的HA,High Availability,即高可用,一个instance down掉了,另一个instance自动顶上;其次,在应用分离的情况下,可以提供SQL性能;

区别:个人认为,RAC提供了instance级别的HA,而DG提供了数据库文件的HA,所以大部分的oracle 724解决方案都是RAC+DG。

首先,你所用的数据库是什么数据库?备份库可以建立N多,比如oracle数据库,你可以用exp命令整库导出成dmp文件。如果你是acces数据库,直接复制文件另存到别的地方就是备份了。

以上就是关于SQL SERVER 2008 Log Shipping怎么主备库切换全部的内容,包括:SQL SERVER 2008 Log Shipping怎么主备库切换、数据库读写分离如何保证主从一致性、Oracle goldengate ogg要怎么实现主备库切换啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9685947.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存