SQLServer 数据库镜像+复制切换方案

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 原文:SQLServer 数据库镜像+复制切换方案目标:       主机做了Mirror和Replication,当主机出现问题时,Replication和Mirror实现自动的故障转移(Mirror 和Replication都切换到备机,而当主机        重新启动后,自动充当备机的角色)。
原文: SQLServer 数据库镜像+复制切换方案

目标:

      主机做了MirrorReplication,当主机出现问题时,ReplicationMirror实现自动的故障转移(Mirror Replication都切换到备机,而当主机

       重新启动后,自动充当备机的角色)。

 

环境:

          五台虚拟机,配置均为Windows2008 Enterprise + SQLServer2008R2 Enterprise

          08R201Mirror 见证机(WITNESS)           IP:192.168.56.101

          08R202:主机(Rep+Mirror                  IP:192.168.56.102

          08R203Rep分发机                               IP:192.168.56.103

          08R204Rep订阅机                               IP:192.168.56.104

          08R205:镜像机(Mirror                       IP:192.168.56.105

 

步骤:

配置有见证服务器的镜像

  1. 创建证书和Endpoint

     08R202(Master) 上运行下面的脚本:

 --主机执行:
    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456abc';
    CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' , 
    START_DATE = '11/08/2010',EXPIRY_DATE = '10/31/2099';

--主机执行:
    CREATE ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS 
    TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
    FOR 
    DATABASE_MIRRORING 
    ( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--主机执行:

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'D:\HOST_A_cert.cer';    

      08R205(Mirror) 上运行下面的脚本:

--备机执行:
    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456abc';
    CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate', 
    START_DATE = '11/08/2010',EXPIRY_DATE = '10/31/2099';

--备机执行:
    CREATE ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS 
    TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
    FOR 
    DATABASE_MIRRORING 
    ( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--备机执行:
    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\HOST_B_cert.cer';

      08R201(WITNESS) 上运行下面的脚本:

--见证机执行
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456abc';
CREATE CERTIFICATE HOST_W_cert WITH SUBJECT = 'HOST_W certificate', 
START_DATE = '11/08/2010',EXPIRY_DATE = '10/31/2099';

--见证机执行
CREATE ENDPOINT Endpoint_Mirroring 
STATE = STARTED 
AS 
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
FOR 
DATABASE_MIRRORING 
( AUTHENTICATION = CERTIFICATE HOST_W_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--见证机执行
BACKUP CERTIFICATE HOST_W_cert TO FILE = 'D:\HOST_W_cert.cer';
  1. 交换证书

     将HOST_B_cert.cerHOST_W_cert.cer拷贝到 08R202 机器的”D:\Cert目录;

     将HOST_A_cert.cerHOST_W_cert.cer拷贝到 08R205 机器的”D:\Cert目录;

     将HOST_A_cert.cerHOST_B_cert.cer拷贝到 08R201 机器的”D:\Cert目录;

 

     08R202(Master) 上运行下面的脚本:

--Master
CREATE LOGIN HOST_B_login WITH PASSWORD = '123abc!@#';
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\Cert\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
    
CREATE LOGIN HOST_W_login WITH PASSWORD = '123abc!@#';
CREATE USER HOST_W_user FOR LOGIN HOST_W_login;
CREATE CERTIFICATE HOST_W_cert AUTHORIZATION HOST_W_user FROM FILE = 'D:\Cert\HOST_W_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_W_login];

     08R205(Mirror) 上运行下面的脚本:

--Mirror
CREATE LOGIN HOST_A_login WITH PASSWORD = '123abc!@#';
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\Cert\HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
    
CREATE LOGIN HOST_W_login WITH PASSWORD = '123abc!@#';
CREATE USER HOST_W_user FOR LOGIN HOST_W_login;
CREATE CERTIFICATE HOST_W_cert AUTHORIZATION HOST_W_user FROM FILE = 'D:\Cert\HOST_W_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_W_login];

     08R201(WITNESS) 上运行下面的脚本:

--WITNESS
CREATE LOGIN HOST_A_login WITH PASSWORD = '123abc!@#';
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\Cert\HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
    
CREATE LOGIN HOST_B_login WITH PASSWORD = '123abc!@#';
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\Cert\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
  1. 备份还原数据库

     08R202(Master) 上备份数据库:

  BACKUP DATABASE RepTest TO DISK='D:\temp\RepTest.bak'
  BACKUP LOG RepTest TO DISK='D:\temp\RepTest.trn'

     将备份文件拷贝到 08R205(Mirror) 上做还原(最好以SA帐号登录,使得数据库所有者为”SA“):

  --RESTORE 
RESTORE DATABASE RepTest FROM  DISK = N'D:\RepTest.bak' 
WITH  FILE = 1,  
MOVE N'RepTest' TO N'D:\Data\RepTest.mdf',  
MOVE N'RepTest_log' TO N'D:\Data\RepTest_log.ldf',   
NORECOVERY,  NOUNLOAD,  STATS = 10
GO

RESTORE LOG RepTest FROM DISK ='D:\RepTest.trn' WITH NORECOVERY
  1. 建立镜像

      在08R205(Mirror) 上执行:

--Mirror
ALTER DATABASE RepTest SET PARTNER = 'TCP://192.168.56.102:5022';

     在 08R202(Master)上执行:

ALTER DATABASE RepTest SET PARTNER = 'TCP://192.168.56.105:5022';

ALTER DATABASE RepTest SET WITNESS = 'TCP://192.168.56.101:5022';

ALTER DATABASE RepTest SET SAFETY FULL 

     到此,镜像已经建立完成。

 

配置Replication(事务型复制)

     Replicaiton不做具体的搭建过程,只做几点说明:

     1.  08R20208R205都需要搭建到08R203Distribution

      

     2.  08R20208R205上的发布库的所有者必须为“SA,否则切换会出现如下错误:The process could not execute 'sp_replcmds' on 'WIN-08R205'.

     3.  08R203分发机上配置文件需要做如下修改(配置故障转移Partner):

    --配置复制故障转移参数
    --查看代理配置,在分发服务器运行
    exec sp_help_agent_profile
    --Agent_Type含义
    --1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 
    --4 = Merge Agent; 9 = Queue Reader Agent.
    --对于事务复制,需查看Agent_Type=1,2的Profile_id
    
    --对于事务复制,需要配置快照代理(Snapshot Agent)和日志读取代理(Log Reader Agent)
    exec sp_add_agent_parameter @profile_id = 1, 
    @parameter_name = N'-PublisherFailoverPartner', 
    @parameter_value = N'WIN-08R205'--镜像服务器名称
    
    exec sp_add_agent_parameter @profile_id = 2, 
    @parameter_name = N'-PublisherFailoverPartner', 
    @parameter_value = N'WIN-08R205'--镜像服务器名称

       修改完成后,记得重启Agent服务,使之生效。

      4.  08R202创建到08R204的同步链。

 

模拟故障转移并观察结果

     1.  暂停08R202SQLServer服务;

     2.  到08R205上观察镜像和同步链是否转移过去了;

      

      3.  如果同步链正常,修改某个表中的数据,看是否能同步到08R204上;

      4.  重新启动08R202SQLServer服务,看其是否成为了镜像机;

      

       5.  如果一起都正常,那恭喜啦,我们的测试成功。

 

 

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
2月前
|
SQL 关系型数据库 数据库
【YashanDB知识库】OM仲裁节点故障后手工切换方案和yasom仲裁重新部署后重新纳管数据库集群方案
本文介绍了主备数据库集群的部署、OM仲裁故障切换及重新纳管的全过程。首先通过解压软件包并调整安装参数完成数据库集群部署,接着说明了在OM仲裁故障时的手动切换方案,包括关闭自动切换开关、登录备节点执行切换命令。最后详细描述了搭建新的yasom仲裁节点以重新纳管数据库集群的步骤,如生成配置文件、初始化进程、执行托管命令等,确保新旧系统无缝衔接,保障数据服务稳定性。
|
2月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
65 16
|
2月前
|
消息中间件 缓存 NoSQL
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
|
2月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
3月前
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
116 9
|
3月前
|
SQL 数据库
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
|
3月前
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
124 9
|
3月前
|
SQL 关系型数据库 数据库
【YashanDB 知识库】OM 仲裁节点故障后手工切换方案和 yasom 仲裁重新部署后重新纳管数据库集群方案
本文介绍了一主一备数据库集群的部署步骤。首先在OM节点上传并解压软件包至指定路径,随后通过调整安装参数、执行安装和集群部署完成数据库设置。接着,在主备节点分别配置环境变量,并查看数据库状态以确认安装成功。最后,针对OM仲裁故障提供了手动切换方案,包括构造故障场景、关闭自动切换开关及使用SQL命令进行主备切换,确保系统高可用性。
|
4月前
|
数据库 Windows
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。

热门文章

最新文章