本案例是双机热备,只设置主体服务器(主)和镜像服务器(从),不设置见证服务器
设置镜像前先检查是否启用了 主从服务器数据库的 TCP/IP协议 和 RemoteDAC
(1)打开SQL Server配置管理器,选择“SQL Server网络配置”-“MSSQLSERVER的协议”,在右侧启用TCP/IP协议,打开TCP/IP属性把IP地址设置为本地服务器地址。
(2)在SQL Server Management Studio中右键服务器连接选择Facets, 方面选择“外围应用配置器”,将属性“RemoteDACEnabled”的值改为“True”。
一、SQL Server基于数据库镜像的主从同步
主服务器:SQLSVR1, 192.168.10.2 | 从服务器:SQLSVR2, 192.168.10.3 |
--如果已经执行过镜像,则需要删除已有的镜像端点、加密证书、登录用户。相关命令: --1、创建 master 数据库主密钥 --2、对服务器实例创建一个用于其数据库镜像出站连接的加密证书 --3、 使用主服务器实例的证书 SQLSVR1_cert 为主服务器 SQLSVR1 创建端点( Mirroring为默认的镜像端点) --如果已存在[镜像]导致创建端点失败 SELECT * FROM sys.endpoints; --删除端点再重新创建 DROP ENDPOINT [镜像]; --4、备份主体服务器 SQLSVR1 的加密证书 --5、将从服务器的证书备份SQLSVR2.CER拷贝到主服务器的证书备份目录 --6、在主服务器实例的 master 数据库中为镜像服务器创建一个登录名并设置密码 --7、为6中新创建的登录名创建一个用户 --8、将创建的用户与镜像服务器的证书相关联 --9、授予其7中登录用户名对数据库镜像端点的 CONNECT 权限( Mirroring为默认的镜像端点) --10、设置SQLSVR1中主库为完整恢复模式,并备份到从服务器SQLSVR2(这部分建议手动在SSMS操作) ALTER DATABASE db_name SET recovery full with no_wait; 注意: --11、(后做)设置镜像主从 | --如果已经执行过镜像,则需要删除已有的镜像端点、加密证书、登录用户。相关命令: --1、创建 master 数据库主密钥 --2、对服务器实例创建一个用于其数据库镜像出站连接的加密证书 --3、 使用从服务器实例的证书 SQLSVR2_cert 为从服务器 SQLSVR2 创建端点( Mirroring为默认的镜像端点) --如果已存在[镜像]导致创建端点失败 --删除端点再重新创建 DROP ENDPOINT [镜像]; --4、备份从服务器 SQLSVR2 的加密证书 --5、将主服务器的证书备份SQLSVR1.CER拷贝到从服务器的证书备份目录 --6、在从服务器实例的 master 数据库中为主服务器创建一个登录名并设置密码 --7、为6中新创建的登录名创建一个用户 --8、将创建的用户与主服务器的证书相关联 --9、授予其7中登录用户名对数据库镜像端点的 CONNECT 权限( Mirroring为默认的镜像端点) --10、还原SQLSVR1服务器上传过来的主数据库备份文件(这部分建议手动在SSMS操作) 注意: --11、(先做)设置镜像主从
|
注:以上命令全程都在系统数据库 master 创建的查询执行即可
二、SQL Server 数据库备份还原
1.备份数据库,备份两次。
(1)主服务器找到需要备份的数据库,右键 → 任务(Tasks) → 备份(Back up),备份类型选择 完整(Full),备份到磁盘 路径自定义 命名跟数据库一样,得到 .bak 备份文件。
(2)重复同上操作,但备份类型选择 事务日志(Transaction log),得到 .trn 备份文件或者追加到上一步的.bak文件中。
2.还原数据库,也是分两次还原,将备份文件 .bak .trn 拷贝到从服务器主机
(1)在SSMS连接数据库,右键数据库,选择 还原数据库(还原文件和文件组)都可以 → 目标数据库命名一样Test → 选择 源设备(From device),然后找到添加 .bak 文件然后确定 → (重要)选项 恢复状态 选择 不对数据库执行任何操作(RESTORE WITH NORECOVERY)→ 点击确定开始还原数据库。
(2)上一步成功后刷新即可看到Test数据库还原生成,继续重复同上操作,右键Test数据库,选择 任务 - 还原 - 事务日志,然后找到添加 .trn 文件 → (重要,否则执行镜像报错)选项 恢复状态 选择 不对数据库执行任何操作(RESTORE WITH NORECOVERY)→ 点击确定开始还原。
三、启动镜像
执行以上表格第11步命令开启镜像,注意先在从库执行再去主库执行。
在主服务器 SSMS 上设置数据库镜像,可能会出现报错
1.服务器ip端口号5022不能一样
2.开始镜像系统提示“服务器网络地址"TCP://XXX:5022"无法访问或不存在。请检查网络地址名称,并检查本地和远程端点的端口是否正常运行。(Microsoft SQLServer,错误:1418)”的错误信息,请去到该主机查看防火墙配置中的入站规则,是否允许了 5022 端口。
四、检查镜像结果
1、检查数据库状态
镜像成功后,主体数据库的状态会显示为“主体,已同步”,镜像数据库的状态会显示为“镜像,已同步/正在还原...”,如图所示:
2、监视镜像是否正常
转到主服务器库选择主体数据库,右键选择任务下的“启动数据库镜像监视器”,通过监视器,可以查看主体服务器和镜像服务器的镜像状态和见证服务器连接的信息,如图所示: