数据库双机热备(代码实现)

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; --事务不安全,异步模式

数据库双机热备(代码实现),布布扣,bubuko.com

时间: 2024-12-29 04:04:05

数据库双机热备(代码实现)的相关文章

数据库双机热备

数据库镜像相对于日志传送,数据库镜像显然更高一级.在最简单的形式下,它其实与日志传送的工作原理相似,但是生产服务器发送事务到镜像服务器的频率要高得多,这意味着更新速度也要快很多.对于数据库镜像来说,故障转移功能也是需要手动完成.但是你可以添加第三个SQLServer,称为witness.Witness 可以作为一个普通的SQL Server,但是一直留意着其它两个镜像服务器.当主镜像发生故障,witness 可以让第二个镜像接管操作,类似一种自动的故障转移.在故障转移时,任何进行中的客户端事务都

Mysql 数据库双机热备的配置方法

Mysql 数据库双机热备的配置方法 mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中. 1.mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中.实现mysql数据库的热备份. 2.要想实现双机的热备首先要了解主从数据库服务器的版本的需求.要实现热备my

MySQL 数据库双机热备方案

转载:http://www.microcolor.cn/solutions/80.html 本手册主要介绍通过使用 MicroColor ServHAMirror/Cluster 软件在Windows操作系统下完成对Mysql应用双机高可用集群配置的思路和步骤.在使用本手册前需要先完成 <MicroColor ServHA Mirror for Windows前序配置手册>或<MicroColorServHA Cluster for Windows前序配置手册>的配置步骤. 目录

MySQL数据库双机热备的配置

1.mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中.实现mysql数据库的热备份. 2.要想实现双机的热备首先要了解主从数据库服务器的版本的需求.要实现热备mysql的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本. 3.设置主数据库服务器: a.首先查看主服务器的版本是否是支持热备的版本

SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库)

原文:SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库) 场景 公司最近的sharepoint的数据库服务器老是出问题,并且在一旦出现问题,就导致无法正常工作.最主要的是我们要加班还原以前的数据库,这是最头疼的.于是在网上查找资料,实现主备机的同步,对于sharepoint而言我们只需做到sharepoint的内容数据库同步即可.这种技术有个专业名词叫做双机热备. 双机热备原理 双机热备特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可

云数据库Redis版256M双机热备款

云数据库Redis版是兼容Redis协议标准的.提供持久化的缓存式数据库服务,基于高可靠双机热备架构:全新推出的256M小规格款,适用于高QPS.小数据量业务,并支持免费全量迁移,完美服务于个人开发者和初创企业. 云数据库Redis版256M双机热备款首发优惠购,只需99元/年. 活动地址: promotion.aliyun.com/ntms/act/redis256.html 性能参数: 内存容量:256M 连接数:10000 吞吐量:10M/s QPS:最高支持10万 云数据库Redis版2

MySQL数据库配置主从服务器实现双机热备

转自:http://www.cnblogs.com/cchun/p/3712637.html 一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168上分别进行如下操作,安装MySQL 5.5.22  二.配置MySQL主服务器(192.168.21.169) mysql -uroot -p #进入MySQL控制台 create database osyunweidb; #建立数据库osyunweidb insert into mysql.use

????双机热备数据库备份脚本 v2.1

Text /* THIS4.0 数据库备份脚本 [作者] Rulition QQ:7355157 [版本] v2.1 [修改] 2010年5月21日15:35:13 完成 2010年5月24日11:35:13 细节修改 2010年5月25日11:31:13 增加[完整备份]前的一致性检查 2010年5月27日10:31:13 检查差异备份的大小,避免过大文件影响差异备份. 2010年5月28日11:14:15 补备份时查看最近是否已做过完全备份. 2010年10月17日21:58:32 切换@备

CentOS系统MySQL双机热备配置

1  概述 在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux.Windows以及UNIX.其中Linux备受青睐的主要原因有两个: 首先,Linux作为自由软件有两个特点:一是它免费提供源码,二是爱好者可以按照自己的需要自由修改.复制和发布程序的源码,并公布在Internet上.这就吸引了世界各地的操作系统高手为Linux编写各种各样的驱动程序和应用软件,使得Linux成为一种不仅只是一个内核,而且包括系统管理工具.完整的开发环境和开发工具.应用软件在内,用户很