1、配置主备机sql
一、 服务器基本信息数据库
主机名称为:HOST_A,IP地址为:192.168.1.155安全
备机名称为:HOST_B,IP地址为:192.168.1.156服务器
2、主备实例互通tcp
实现互通可使用域或证书来实现,考虑实现的简单,如下选取证书的方式实现。注意:实现“主备数据库实例互通”的操做只须要作一次,例如为了将两个SQL Server 2008的实例中的5个数据库建成镜像关系,则只须要作一次如下操做就能够了;或者这样理解:每一对主备实例(不是数据库)作一次互通。大数据
一、建立证书(主备可并行执行)spa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
--主机执行:
USE master;
CREATE
MASTER
KEY
ENCRYPTION
BY
PASSWORD
=
'123456'
;
CREATE
CERTIFICATE HOST_A_cert
WITH
SUBJECT =
'HOST_A certificate'
,
START_DATE =
'2012-08-02'
,
EXPIRY_DATE =
'2099-08-02'
;
--备机执行:
USE master;
CREATE
MASTER
KEY
ENCRYPTION
BY
PASSWORD
=
'123456'
;
CREATE
CERTIFICATE HOST_B_cert
WITH
SUBJECT =
'HOST_B certificate'
,
START_DATE =
'2012-08-02'
,
EXPIRY_DATE =
'2099-08-02'
;
|
二、建立链接的端点(主备可并行执行).net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
--主机执行:
CREATE
ENDPOINT Endpoint_Mirroring
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 Endpoint_Mirroring
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022 , LISTENER_IP =
ALL
)
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE =
ALL
);
|
三、备份证书以备创建互联(主备可并行执行)命令行
1
2
3
4
5
6
7
8
|
--主机执行:
BACKUP CERTIFICATE HOST_A_cert
TO
FILE =
'C:\SQLBackup\HOST_A_cert.cer'
;
--备机执行:
BACKUP CERTIFICATE HOST_B_cert
TO
FILE =
'C:\SQLBackup\HOST_B_cert.cer'
;
|
四、互换证书日志
将备份到C:\SQLBackup\的证书进行互换,即HOST_A_cert.cer复制到备机的C:\SQLBackup\。HOST_B_cert.cer复制到主机的C:\SQLBackup\。
五、添加登录名、用户(主备可并行执行)
如下操做只能经过命令行运行,经过图形界面没法完成。(截至SQL Server2005的补丁号为SP2)
1
2
3
4
5
6
7
8
9
10
11
|
--主机执行:
CREATE
LOGIN HOST_B_login
WITH
PASSWORD
=
'123456'
;
CREATE
USER
HOST_B_user
FOR
LOGIN HOST_B_login;
CREATE
CERTIFICATE HOST_B_cert
AUTHORIZATION
HOST_B_user
FROM
FILE =
'C:\SQLBackup\HOST_B_cert.cer'
;
GRANT
CONNECT
ON
ENDPOINT::Endpoint_Mirroring
TO
[HOST_B_login];
--备机执行:
CREATE
LOGIN HOST_A_login
WITH
PASSWORD
=
'123456'
;
CREATE
USER
HOST_A_user
FOR
LOGIN HOST_A_login;
CREATE
CERTIFICATE HOST_A_cert
AUTHORIZATION
HOST_A_user
FROM
FILE =
'C:\SQLBackup\HOST_A_cert.cer'
;
GRANT
CONNECT
ON
ENDPOINT::Endpoint_Mirroring
TO
[HOST_A_login];
|
3、创建镜像关系
如下步骤是针对每一个数据库进行的,例如:现有主机中有5个数据库如下过程就要执行5次。
一、 手工同步登陆名和密码
在上文中提到数据库镜像的缺点之一是没法维护登陆名,因此须要咱们手工维护登陆。
一般来讲数据库都将会有若干个用户做为访问数据库的用户,而且数据库会有相应的登陆名,可是在备机中缺乏与之相对应的登陆名,例如某业务系统使用'myuser'做为登陆名访问数据库,可是在备机中没有'myuser'这个登陆名,所以一旦主备切换,业务系统就没法登陆数据库了,这种状况称为"孤立用户"。在主机和备机数据库上创建相同用户名及密码便可。
二、 准备备机数据库(主机备份及镜像还原)
在主机上备份数据库,先作完整备份,再作日志事务备份。
一、主数据必须设置成完整模式进行备份,以下图:
上图中将“恢复模式”选成“完整模式”。
二、备份数据库,以下图:
备份时将“备份类型”选成“完整”。
三、备份事务日志,以下图:
将“备份类型”选成“事务日志”且备份目录与备份数据库的目录一致。
将备份文件在备机上使用主机的全备文件进行还原,在还原数据的时候须要使用选上“with non recover”。如图所示:
若是执行成功数据库将会变成这个样子:
三、 创建镜像
1
2
3
4
5
6
7
8
9
|
--在备机中执行以下语句:
说明:shishan为数据库名,须要根据实际进行修改。192.168.1.155为主机IP地址,需根据实际进行修改。
--主机执行:
|
说明:shishan为数据库名,须要根据实际进行修改。192.168.1.156为备机IP地址,需根据实际进行修改。
执行成功后:
到此,SQL镜像热备配置完成。
4、常见命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
--切换主备
use master;
alter
database
testdb
set
partner failover;
-- 备机强制切换
use master;
alter
database
testdb
set
partner force_service_allow_data_loss;
--恢复镜像
use master;
alter
database
testdb
set
partner resume;
--取消见证服务器
ALTER
DATABASE
testdb
SET
WITNESS
OFF
;
--取消镜像
ALTER
DATABASE
testdb
SET
PARTNER
OFF
;
--设置镜像数据库还原为正常
RESTORE
DATABASE
testdb
WITH
RECOVERY;
|
备份主数据库出现:Backup a database on a HDD with a different sector size,能够执行如下语句备份:
BACKUP DATABASE MyDB TO DISK = N'D:\MyDB.bak' WITH INIT , NOUNLOAD , NAME = N'MyDB backup', STATS = 10, FORMAT
总结
要进行以上sql server的镜像设置必定要使用sql server 的配置管理器开启TCP/IP协议,以下图
若是没有启用TCP/IP协议则只能在同一个网段内的机器配置镜像,前面的配置步骤里面所用到的IP地址要换成对应的实例名。同一个网段配置并使用镜像的时实性、传输速率更高,适用于大数据量的同步,跨网段或者跨公网的sql server 镜像通常适用于数据量小,时实性要求不高的数据同步,并且数据库在公网上同步也不安全。