首页 > 数据库 >SQL Server 2012 镜像数据库搭建

SQL Server 2012 镜像数据库搭建

时间:2022-09-29 12:02:02浏览次数:77  
标签:USE ebap 数据库 Server master 服务器 SQL 镜像 2012


SQL Server镜像

“数据库镜像”是一种提高 SQL Server 数据库的可用性的解决方案。 镜像基于每个数据库实现,并且只适用于使用​​完整恢复模式​​的数据库。类似于Oracle的DG,也有几种运行模式,根据性能/安全的不同要求,选择相应的运行模式。下面会有详细说明:

注意:这种高可用架构,目前微软官方已经不推荐使用了。并且会在未来某个版本中将其移除,不再支持。所以对于新环境来说,推荐使用AlwaysOn。

具有下列优点:

  • 提高数据库的可用性。
    发生灾难时,在具有自动故障转移功能的高安全性模式下,自动故障转移可快速使数据库的备用副本联机(而不会丢失数据)。 在其他运行模式下,数据库管理员可以选择强制服务(可能丢失数据),以替代数据库的备用副本。 有关详细信息,请参阅本主题后面的角色切换。
  • 增强数据保护功能。
    数据库镜像提供完整或接近完整的数据冗余,具体取决于运行模式是高安全性还是高性能。 有关详细信息,请参阅本主题后面的运行模式。
    在 SQL Server 2008 Enterprise 或更高版本上运行的数据库镜像伙伴会自动尝试解决某些阻止读取数据页的错误。 无法读取页的伙伴会向其他伙伴请求新副本。 如果此请求成功,则将以新副本替换不可读的页,这通常会解决该错误。有关详细信息,请参阅​​自动页修复(可用性组/数据库镜像)​​。
  • 提高生产数据库在升级期间的可用性。
    为了尽量减少镜像服务器的停机时间,您可以按顺序升级承载故障转移伙伴的 SQL Server 实例。 这样只会导致一个故障转移的停机时间。 这种形式的升级称为“滚动升级”。有关详细信息,请参阅​​在系统上安装 Service Pack 并且尽量缩短镜像数据库停机时间​​。

前提条件:

  • 相同版本的数据库
  • 数据库必须使用​​完整恢复模式​
  • 如有可能,镜像数据库的路径(包括驱动器号)应该与主体数据库的路径相同。
  • 镜像会话中的所有服务器实例都应该使用相同的主代码页和排序规则。

缺点/限制:

  • 只能镜像用户数据库。 不能镜像mastermsdbtempdbmodel数据库。
  • 镜像的数据库在数据库镜像会话过程中不能重命名。
  • 数据库镜像不支持 FILESTREAM。 不能在主体服务器上创建 FILESTREAM 文件组。 不能为包含 FILESTREAM 文件组的数据库配置数据库镜像。
  • 在 32 位系统上,由于受每个数据库镜像会话所占用的工作线程数限制,对于每个服务器实例,数据库镜像最多支持 10 个数据库。
  • 跨数据库事务和分布式事务均不支持数据库镜像。 有关详细信息,请参阅​​数据库镜像或 AlwaysOn 可用性组不支持跨数据库事务 (SQL Server)​​。

镜像运行模式

  • 高性能模式 (High-performance mode)
    数据库镜像会话异步运行并仅使用主体服务器和镜像服务器。 唯一的角色切换形式是强制服务(可能造成数据丢失)。
  • 高安全性模式 (High-safety mode)
    数据库镜像会话同步运行并可以选择使用见证服务器、主体服务器和镜像服务器。
  • 事务安全 (Transaction safety)
    一种镜像特定的数据库属性,用于确定数据库镜像会话是同步运行还是异步运行。 有两种安全级别:FULL 和 OFF。
  • 见证服务器 (Witness)
    仅用于高安全性模式,SQL Server 的一个可选实例,它能使镜像服务器识别是否要启动自动故障转移。 与这两个故障转移伙伴不同的是,见证服务器并不能用于数据库。 见证服务器的唯一角色是支持自动故障转移。

搭建镜像数据库

1.数据库安装

这个安装过程就不赘述了,测试环境一直下一步就行了!

2.配置主数据库和镜像数据库的身份验证

有两种身份验证方式:

  • 使用 Windows 身份验证
  • 使用证书

绝大部分情况下,都是使用证书来验证身份,下面演示如果通过​​证书​​来验证身份

2.1主数据库出站配置

  • 创建主密钥
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Admin@123';
GO
  • 创建加密证书
USE master;
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = '主库用于镜像', START_DATE = '19990101', EXPIRY_DATE = '99991231';

查看证书信息

USE master;
SELECT * FROM sys.certificates;
  • 创建镜像断点
CREATE ENDPOINT EDP_Mirror
STATE = STARTED
AS TCP(
LISTENER_PORT = 5022, -- 镜像端点使用的通信端口
LISTENER_IP = ALL) -- 侦听的IP地址
FOR DATABASE_MIRRORING(
AUTHENTICATION = CERTIFICATE HOST_A_cert, -- 证书身份验证,和上面的证书名保持一致
ENCRYPTION = DISABLED, -- 不对传输的数据加密,如果需要加密,可以配置为 SUPPORTED 或 REQUIRED, 并可选择加密算法
ROLE = ALL)
  • 备份证书
    目的是拷贝到镜像服务器上,备库可以通过这个证书登录主数据库,然后将备份的证书复制到镜像服务器上。
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';

SQL Server 2012 镜像数据库搭建_服务器

2.2镜像数据库出战配置

步骤和主库配置一样,重复以上步骤即可。

  • 创建主密钥
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Admin@123';
GO
  • 创建加密证书
USE master;
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = '用于镜像', START_DATE = '19990101', EXPIRY_DATE = '99991231';

查看证书信息

USE master;
SELECT * FROM sys.certificates;
  • 创建镜像断点
CREATE ENDPOINT EDP_Mirror
STATE = STARTED
AS TCP(
LISTENER_PORT = 5022, -- 镜像端点使用的通信端口
LISTENER_IP = ALL) -- 侦听的IP地址
FOR DATABASE_MIRRORING(
AUTHENTICATION = CERTIFICATE HOST_B_cert, -- 证书身份验证,和上面的证书名保持一致
ENCRYPTION = DISABLED, -- 不对传输的数据加密,如果需要加密,可以配置为 SUPPORTED 或 REQUIRED, 并可选择加密算法
ROLE = ALL)
  • 备份证书
    目的是拷贝到镜像服务器上,备库可以通过这个证书登录主数据库,然后将备份的证书复制到镜像服务器上。
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';

2.3主库入站配置

  • 创建登录名
USE master;
CREATE LOGIN mirroradmin WITH PASSWORD = 'Admin!@#';
  • 创建使用该登录名的用户
USE master;
CREATE USER mirror_user FOR LOGIN mirroradmin;
  • 将镜像库的证书和该用户关联
USE master;
CREATE CERTIFICATE mirror_cert
AUTHORIZATION mirror_user
FROM FILE = 'C:\HOST_B_cert.cer'
  • 授予对远程镜像端点的登录名的 CONNECT 权限。
    mirroradmin:登录名
    EDP_Mirror:是断点
USE master;
GRANT CONNECT ON ENDPOINT::EDP_Mirror TO [mirroradmin];

2.4 镜像库入站配置

  • 创建登录名
USE master;
CREATE LOGIN masteradmin WITH PASSWORD = 'Admin!@#';
  • 创建使用该登录名的用户
USE master;
CREATE USER master_user FOR LOGIN masteradmin;
  • 将镜像库的证书和该用户关联
USE master;
CREATE CERTIFICATE master_cert
AUTHORIZATION master_user
FROM FILE = 'C:\HOST_A_cert.cer'
  • 授予对远程镜像端点的登录名的 CONNECT 权限。
    masteradmin:登录名
    EDP_Mirror:是断点
USE master;
GRANT CONNECT ON ENDPOINT::EDP_Mirror TO [masteradmin];

3.镜像库的配置

设置镜像关系,并将主库数据恢复到镜像库。

3.1 配置新的镜像库

  • 将数据库设置为完全恢复模式
USE master;
GO
ALTER DATABASE ebap SET RECOVERY FULL;
  • 在主库上备份需要镜像的数据库
BACKUP DATABASE ebap 
TO DISK = 'C:\ebap.bak'
WITH
  • 将备份文件拷贝到镜像服务器上
  • 在镜像数据库上恢复数据
    如果和主数据库数据文件路径相同
RESTORE DATABASE ebap 
FROM DISK = 'C:\ebap.bak'
WITH

如果和主数据库数据文件路径不同:数据文件名要查看主库的文件名

RESTORE DATABASE ebap
FROM DISK='C:\ebap.bak'
WITH NORECOVERY,
MOVE 'ebap' TO
'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.MSSQL2012STANDBY\MSSQL\DATA\ebap.mdf',
MOVE 'ebap_log' TO
'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.MSSQL2012STANDBY\MSSQL\DATA\ebap_log.ldf';
  • 【必须】创建日志备份
BACKUP LOG ebap 
TO DISK = 'C:\ebap_log.bak'
  • 镜像服务器应用日志
RESTORE LOG ebap 
FROM DISK = 'C:\ebap_log.bak'
WITH FILE=1,

如果还有其他日志备份,则一次恢复即可,如:

RESTORE LOG ebap 
FROM DISK = 'C:\ebap.bak'
WITH FILE=2,

3.2镜像服务器的实例上,将主库设置为镜像关系

ALTER DATABASE ebap 
SET PARTNER = 'TCP://60.60.60.215:5022';

3.3在主服务器上启用镜像

默认为高安全性模式

ALTER DATABASE ebap 
SET PARTNER = 'TCP://60.60.60.94:5022';

至此基本上数据库镜像已配置完成

SQL Server 2012 镜像数据库搭建_服务器_02

附录

查看镜像数据库相关信息

select * from sys.database_mirroring

查看镜像会话连接信息

select * from sys.dm_db_mirroring_connections

查看见证服务器信息

sys.database_mirroring_witnesses


标签:USE,ebap,数据库,Server,master,服务器,SQL,镜像,2012
From: https://blog.51cto.com/u_12946336/5722442

相关文章

  • Docker部署SQL Server 2019 Always On集群
    Docker部署Alwayson集群SQLServer在2016年开始支持Linux。随着2017和2019版本的发布,它开始支持Linux和容器平台上的HA/DR、Kubernetes和大数据集群解决方案。在本文中,我们......
  • TCP Server
    TCP服务器(单客户端)1.获取本地主机的IP和端口号若本地主机有多个IP地址,则需要获取本地主机所有IP地址,指定某个IP地址用于创建服务器。 char**addresses=NULL; char......
  • mysql
    参考链接:https://blog.csdn.net/guoqi_666/article/details/122484535sql优化技巧:   1避免使用select*很多时候,我们写sql语句时,为了方便,喜欢直接使用select*,......
  • MYSQL小记,SQL查询,如果有更新时间则优先按更新时间倒序,没有则按创建时间倒序
    selectnow()fromdualORDERBYIFNULL(update_date,create_date)DESCIFNULL函数说明IFNULL(expr1,expr2)如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr......
  • MySQL--SQL基础语句--2022年9月28日
    第一节  数据库相关概念 第二节  MySQL安装及启动1、MySQL安装及启动自行查看文档,这里不多笔记2、关系型数据库是什么 3、数......
  • MySQL数据库-数据表(下)
    SELECT定义:SQL的SELECT语句可以实现对表的选择、投影及连接操作。即SELECT语句可以从一个或多个表中根据用户的需要从数据库中选出匹配的行和列,结果通常是生成一个......
  • CentOS7下安装MySQL5.7
    1、下载MySQL,地址:https://dev.mysql.com/downloads/mysql/5.7.html2、Linux服务器根目录下新建两个文件夹:1)、tool文件夹,存放软件安装包2)、xz文件夹,存放安装后的......
  • 【SQLServer】SQLServer执行计划运算符-第2部分
    1.【SQLServer】SQLServer执行计划概览2.【SQLServer】SQLServer执行计划的类型3.【SQLServer】如何分析图形化的SQL执行计划4.【SQLServer】SQLServer执行计划运算符-......
  • SQL通用语法和SQL分类
    SQL通用语法1.SQL语句可以单行或多行书写,以分号结尾2.可使用空格和缩进来增强语句的可读性3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写4.3种注释单......
  • MySQL目录结构和SQL的基本概念
    MySQL目录结构Data目录和my.ini文件有时并不放在MySQL的安装目录下,而是在配置文件中自己指定的目录下。一般情况下,C盘下的ProgramData目录是隐藏的,需要取消隐藏(1......