1. MSSQL容灾永不熄灭:尽早实现热备副本
在数据库运维工作中,数据可用性是至关重要的一环。在MSSQL数据库中,常用的容灾解决方案有数据库复制和数据库镜像。其中,数据库镜像是一种用于实现高可用性和容灾性的解决方案,可以帮助企业实时备份数据,防止因为意外情况导致的数据损失和系统宕机。对于一些关键业务系统,实时或准实时数据备份和恢复是必须的,这就需要尽早实现热备副本。
1.1 MSSQL数据库镜像简介
MSSQL数据库镜像是一种高可用性和容灾性解决方案,在数据库主库和备库中实现数据同步,备库可以实时备份主库数据并快速接管主库的任务。镜像技术可以提供实时保护,确保关键业务不会因为系统宕机或数据损失而出现中断,也可以提供快速数据恢复。
MSSQL数据库镜像是在多个数据库服务器之间维护数据的一种方法,其中至少包括一个主服务器和一个镜像服务器,在两个服务器之间使用网络协议实现数据同步。当主服务器出现故障时,镜像服务器可以立即开始负责处理和传输数据,确保数据保持最新和完整的状态。
1.2 MSSQL数据库镜像的部署
部署MSSQL数据库镜像分为三个步骤:配置主服务器、配置镜像服务器和运行镜像。其中配置主服务器包括创建主数据库、配置主服务器和创建数据库镜像端点;配置镜像服务器包括创建镜像数据库、配置镜像服务器和创建数据库端口;运行镜像包括开启镜像、数据库镜像验证和连接。
以下是MSSQL数据库镜像的部署流程示例:
--配置主服务器
USE master;
GO
CREATE DATABASE MirrorTest_Primary
ON (NAME = MirrorTest_Primary,
FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MirrorTest_Primary.mdf')
LOG ON (NAME = MirrorTest_Primary_log,
FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MirrorTest_Primary_log.ldf');
GO
ALTER DATABASE MirrorTest_Primary SET RECOVERY FULL;
GO
ALTER DATABASE MirrorTest_Primary SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
ALTER DATABASE MirrorTest_Primary SET HADR ON;
GO
CREATE ENDPOINT Endpoint_Mirroring
STATE=STARTED
AS TCP (LISTENER_PORT=5022)
FOR DATABASE_MIRRORING (
AUTHENTICATION = WINDOWS NEGOTIATE,
ENCRYPTION = SUPPORTED,
ROLE = ALL);
GO
--配置镜像服务器
CREATE DATABASE MirrorTest_Mirror
ON (NAME = MirrorTest_Mirror,
FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MirrorTest_Mirror.mdf')
LOG ON (NAME = MirrorTest_Mirror_log,
FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\MirrorTest_Mirror_log.ldf');
GO
ALTER DATABASE MirrorTest_Mirror SET RECOVERY FULL;
GO
ALTER DATABASE MirrorTest_Mirror SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
ALTER DATABASE MirrorTest_Mirror SET HADR ON;
GO
CREATE ENDPOINT Endpoint_Mirroring
STATE=STARTED
AS TCP (LISTENER_PORT=5022)
FOR DATABASE_MIRRORING (
AUTHENTICATION = WINDOWS NEGOTIATE,
ENCRYPTION = SUPPORTED,
ROLE = ALL);
GO
--运行镜像
--主服务器
ALTER DATABASE MirrorTest_Primary SET PARTNER =
'TCP://MirrorTest_Mirror.corp.contoso.com:5022';
--镜像服务器
ALTER DATABASE MirrorTest_Mirror SET PARTNER =
'TCP://MirrorTest_Primary.corp.contoso.com:5022';
--数据库镜像验证
ALTER DATABASE MirrorTest_Primary SET SAFETY OFF;
ALTER DATABASE MirrorTest_Primary SET SAFETY FULL;
GO
--连接
USE MirrorTest_Primary;
GO
CREATE TABLE TestTable
(ID int IDENTITY(1,1) PRIMARY KEY,
Column1 int);
GO
USE MirrorTest_Mirror;
GO
SELECT * FROM TestTable;
USE MirrorTest_Primary;
INSERT INTO TestTable(Column1) VALUES (1);
USE MirrorTest_Mirror;
SELECT * FROM TestTable;
USE MirrorTest_Primary;
INSERT INTO TestTable(Column1) VALUES (2);
USE MirrorTest_Mirror;
SELECT * FROM TestTable;
配置完成后,我们就可以使用MSSQL数据库镜像技术来进行实时备份和保护数据。
1.3 MSSQL数据库镜像的优缺点
MSSQL数据库镜像技术可以提供高可用性和容灾性,使企业能够快速进行数据恢复和快速接管主库任务。但是,MSSQL数据库镜像技术也有一些缺点。
优点:
热备份能力:主库和镜像库之间进行热备份,可以快速恢复数据。
实时保护能力:镜像库可以实时保护主库。
快速故障切换能力:镜像库可迅速接管主库的任务。
缺点:
对网络要求高:在使用镜像技术时,主库和镜像库之间的网络质量至关重要。
镜像服务器需要独立硬件支持:为了确保镜像服务器能够快速接管主库的任务,需要对其进行代表性硬件支持。
可能产生数据不一致:在某些情况下,数据同步可能会出现一些问题,这可能会导致数据不一致。
2. 总结
对于需要实现数据准实时备份和快速恢复的关键业务系统,MSSQL数据库镜像是一种非常实用的技术。相比于数据库复制,数据库镜像可以提供实时保护、快速故障切换等优点。但是,在使用数据镜像技术前,也需要对其进行深入了解,并注意其缺点和限制。