数据库双机热备(代码实现)
sql server 2008提供3种高可用性方案: 分发/订阅方式;传送事务日志方式;镜像方式.
前者的主机(A服务器),和备机(B服务器)上的数据库可同时访问(当然B上的数据库会有一部分数据延迟),后两者的B服务器上数据库处于“正在还原”状态,不可读写(即不能分任务负载)。
分发/订阅方式: 粒度为表/存储过程/函数/视图...的级别。异步将A服务器上的对象变化/或事务/或快照,传到分发服务器,再传到N个订阅服务器。
事务传送日志方式:粒度为数据库级别。A服务器上备份数据库,放到B上去还原,然后A再定期备份事务日志(放共享目录下),B定期去(A服务器上的共享目录)拷贝备份的事务日志,再定期还原上去。 (可以有多个备份服务器, B1,B2,B3....)。缺点:主/备需手动切换,且切换过一次之后,所有配置要重新配一次。
镜像方式:粒度为数据库级别。A服务器上备份数据库和事务日志,放到B上去还原;然后A上每个事务,都同步/异步提交到B上去执行。(一个主机对应一个备机)。可自动切换或手动切换,配置一次即可。
一、本文档主要说明在设置sql server的镜像功能时,在主机,备机需要进行的操作步骤
二、需要环境:
1、 操作系统:window server 2008 r2
2、 数据库:sql server2008 r2开发者版
三、安装设置步骤:(假设数据库名称为Testbackup)
1、安装windows2008 r2
2、主备机均修改计算机DNS后缀 (该步骤也可跳过了)
在”我的电脑”---“属性”---“计算机名”tab---“更改”按钮---“其他”按钮---输入后缀,例如tomisoft.net等等,需要注意2点:一是主备机的dns后缀完全一样,二是不要和实际的域名无论外网或内网冲突;修改后重启计算机;重启后,注意修改windows\system32\drivers\etc\hosts文件,加入对方完全计算机名和IP对应关系。
3、 安装sql server2008 r2,采用混合验证模式
4、创建数据库,配置主机
建立一个需要做数据库镜像的主数据库
若要对此数据库进行数据库镜像,必须将它更改为使用完整恢复模式
在主机数据库执行脚本如下:
USE master;
ALTER DATABASE Testbackup
SET RECOVERY FULL;
5、 主机备份数据库
将主机数据库进行完全备份,可以通过图形界面完成,
6、 备机还原数据库:
首先在数据库中建立与目标数据库同名的空库,然后将主机通过全库备份完成的数据库备份文件拷贝到本机,可以通过脚本或者图形操作的方式进行还原,如果通过脚本,执行如下语句:
RESTORE DATABASE TestBackup FROM DISK='D:\TB.BAK' WITH NORECOVERY
如果通过图形界面进行,注意还原数据的时候需要使用选上“with non recover”。
如果执行成功数据库将会变成这个样子:
7、 主机进行事务日志备份
通过图形界面在主机对数据库进行事务日志备份
8、 备机还原事务日志备份:
将主机备份的事务日志文件拷贝到本机,然后在镜像服务器上通过图形界面还原数据库日志,还原事务日志时需在选项中选择“restore with norecovery
9 - 12步骤也可跳过了, 在SQL Server management studio里配置的时候,可以使用sql server账号密码做为验证方式。(图形界面配置方法:右键单击“主机上需镜像的数据库”,选择“属性”菜单,再选择“镜像”页签)
9、创建证书:(主备份别执行)
实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。注意:实现“主备数据库实例互通”的操作只需要做一次,例如为了将两个SQL Server 2008的实例中的个数据库建成镜像关系,则只需要做一次以下操作就可以了;或者这样理解:每一对主备实例(不是数据库)做一次互通。
打开”SQL Server management studio”, 新建查询,执行脚本:
主机:
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'tomisoft';
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' ,
START_DATE = '01/01/2009';
备机:
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'tomisoft';
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate',
START_DATE = '01/01/2009';
10、创建连接的端点:(主备机分别执行)
主机:
CREATE ENDPOINT dbmirrep
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
备机:
CREATE ENDPOINT dbmirrep
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
11、备份证书以备建立互联:(主备机分别执行)
主机:
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'D:\database \HOST_A_cert.cer'
备机:
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\database\HOST_B_cert.cer';
此处注意相关目录要存在
12、互换证书,将对方证书拷贝到本地,即主机的拷贝到备机,备机的拷贝到主机
主机执行:
CREATE LOGIN HOST_B_login WITH PASSWORD = 'tomisoft';
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\SQLBackup\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT:: dbmirrep TO [HOST_B_login];
备机执行:
CREATE LOGIN HOST_A_login WITH PASSWORD = 'tomisoft';
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\database\HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::dbmirrep TO [HOST_A_login];
13、 主机建立镜像:
在A主机的目标数据库属性中,选择镜像,单击‘配置安全性…’进行配置的时候,主机和镜像机机器名需要设置为,形如:tomisoft201.tomisoft.tomi 否则镜像关系将执行不成功 (不一定非要这种方式,也可以直接用: ip地址+端口, 或者 主机名+端口, 后者需要配hosts文件。 这样的话,设置服务账户的时候,会报错,但不影响.)
备机等待主机执行数据库镜像完成后,镜像数据库会变成如下模式,如果没有,可以通过刷新即可:
(四)镜像故障的切换
1、 主机当机后的处理:
如果主机当机后(数据库显示:【主体,已断开】,备机数据库会变成如下模式:
,此时在备机执行如下脚本,将镜像库变为主体可用库,即可进行读写:
alter database Testbackup set partner force_service_allow_data_loss
注:测试中发现主体数据库的sql服务必须启动,否则备份数据库执行完上述语句后仍然处于‘正在恢复‘状态,依然不可用。切换后的正确状态如图,表示备机已经成为当前的主体,而之前的主体已经挂起。
2、 主机恢复后的处理:
如果主机恢复,执行如下脚本即可将主机重新设置为主机,当前镜像仍然恢复镜像模式:
首先主机要执行脚本:
USE master;
ALTER DATABASE TestBackup SET PARTNER SAFETY FULL; --事务安全,同步模式
备机执行脚本:
USE master;
ALTER DATABASE Testbackup SET PARTNER RESUME
注:成功执行后结果如图
成功后再执行:
ALTER DATABASE Testbackup SET PARTNER FAILOVER
注:执行后备机数据库如图,至此原来的主体数据库彻底恢复主体角色。
3、 其他说明:
如果主机无法恢复,希望以当前镜像机为主机,需要重新建立镜像
正常情况下,如果希望进行主备切换,即将主机人为停掉,将镜像作为主机,则可以在主机执行脚本进行主备互换:
USE master;
ALTER DATABASE <DatabaseName> SET PARTNER FAILOVER
主机当机后恢复的情况,默认情况下,事务安全级别的设置为 FULL,即同步运行模式,而且SQL Server 2005 标准版只支持同步模式。
在主机中执行:
USE master;
ALTER DATABASE <DatabaseName> SET PARTNER SAFETY FULL --事务安全,同步模式, (测试过程中发现,备份机执行切换主备脚本的时候,如果主机不先执行此脚本,备机会执行失败)
下面的异步模式一般不推荐使用:
ALTER DATABASE <DatabaseName> SET PARTNER SAFETY OFF; --事务不安全,异步模式
数据库双机热备(代码实现)相关推荐
- mysql双机热备数据库_MySQL 数据库双机热备方案
标签: 转载:http://www.microcolor.cn/solutions/80.html 本手册主要介绍通过使用 MicroColor ServHAMirror/Cluster 软件在Win ...
- mysql数据库双机热备
一.Mysql双机热备要求: 数据库版本要高于5.1 从数据库版本要大于或者等于主数据库版本 工具:navicat 二.Mysql双机热备步骤: 主服务器ip:192.168.1.55(mysql5. ...
- 数据库双机热备实战总结
一.准备工作 1. 准备两台服务器(电脑),接入局域网中,使互相ping得通对方 2. 两台服务器都安装mysql-server-5.6,必须保证mysql的版本一致 3. 假设,服务器A:192 ...
- linux mysql 双机热备_ORACLE 数据库双机热备方案(Linux)
用户可按需安装非RAC模式的oracle程序及实例,按需配置监听器,只需确保所有服务器与oracle相关的参数完全一致即可. 将Oracle应用配置成高可用模式需要记录下列参数,您可以自行整理这些参数 ...
- Oracle数据库双机热备方案
http://blog.chinaunix.net/uid-25806228-id-2141469.html 1.方案综述 Oracle Fail Safe 是架构在 Microsoft Cluste ...
- 关于双机热备,你该知道那些问题?
2019独角兽企业重金招聘Python工程师标准>>> 双机热备这一概念包括了广义与狭义两种意义. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台 ...
- 双机热备_什么是双机热备?
说到双机热备也许很多人都不是很了解,但是对于技术管理人员来说这是十分常见的.当业务系统非常重要,不允许出现中断或故障,往往就需要用到双机热备.以添添呼呼叫中心系统为例,我们为了保障客户在使用系统的时候 ...
- 双机热备的缺点_弱电工程中的双机热备是什么?带你了解服务器双机热备
双机热备知多少? 问:能解释一下什么是双机热备吗?答:所谓双机热备,就是将中心服务器安装成互为备份的两台服务器,并且在同一时间内只有一台服务器运行.当其中运行着的一台服务器出现故障无法启动时,另一台备 ...
- 高可用性HA(High Availability)双机热备
对于日益承担企事业单位核心业务的NT网络来说,数据的高可用性和系统的连续运转能力极其重要,服务器是企事业单位存放数据的重要设备,如果一旦因为服务器的故障而无法正常运转,就会造成业务停顿,导致不可挽回的 ...
最新文章
- node实现爬取当前页面链接实现
- 好用的侧边栏菜单/面板jQuery插件
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机...
- python多维数据分析_Python 数据分析:numpy 多维数组 ndarray
- 微软云Azure训练营 | 八城联动,全球盛会
- linux嵌入式面试题合集,嵌入式linux面试题解析(一)——ARM部分二
- java lambda map循环停止_Map 使用 Lambda 的 forEach 实现跳出循环操作
- flink 异步io mysql 缓存_Flink用于外部数据访问的异步I/O
- python可以写前端吗_哪种ide能同时写java和前端代码?
- javascript下载_免费JavaScript下载
- [工业互联-8]:PLD编程快速概览、PLD五种编程语言与七款常见的PLC编程软件
- win10 电脑没声音 控制面板 realtek高清晰音频管理器没有解决方案
- win10:无法加载文件 C:\Users\LENOVO\AppData\Roaming\npm\babel-node.ps1,因为在此 系统上禁止运行脚本
- 智能防盗报警系统前端报警设备的选择
- 连云港师范专科学校计算机老师,喜报:我校学生在2021年中国大学生计算机设计比赛江苏省赛中获一等奖...
- Android项目之利用手机传感器做惯性导航
- Oracle 数据库访问故障(TNS-12535、TNS-00505)解决思路
- 基于JAVA的网上图书商城参考【数据库设计、源码、开题报告】
- A - DZY Loves Sequences
- windows画图常用函数