SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用
一、配置主备机
1、 服务器基本信息
主机名称为:host_a,ip地址为:192.168.1.155
备机名称为:host_b,ip地址为:192.168.1.156
二、主备实例互通
实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。注意:实现“主备数据库实例互通”的操作只需要做一次,例如为了将两个sql server 2008的实例中的5个数据库建成镜像关系,则只需要做一次以下操作就可以了;或者这样理解:每一对主备实例(不是数据库)做一次互通。
1、创建证书(主备可并行执行)
--主机执行: 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';
2、创建连接的端点(主备可并行执行)
--主机执行: 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 );
3、备份证书以备建立互联(主备可并行执行)
--主机执行: 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';
4、互换证书
将备份到c:\sqlbackup\的证书进行互换,即host_a_cert.cer复制到备机的c:\sqlbackup\。host_b_cert.cer复制到主机的c:\sqlbackup\。
5、添加登陆名、用户(主备可并行执行)
以下操作只能通过命令行运行,通过图形界面无法完成。(截至sql server2005的补丁号为sp2)
--主机执行: 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];
三、建立镜像关系
以下步骤是针对每个数据库进行的,例如:现有主机中有5个数据库以下过程就要执行5次。
1、 手工同步登录名和密码
在上文中提到数据库镜像的缺点之一是无法维护登录名,所以需要我们手工维护登录。
通常来说数据库都将会有若干个用户作为访问数据库的用户,并且数据库会有相应的登录名,但是在备机中缺少与之相对应的登录名,例如某业务系统使用'myuser'作为登录名访问数据库,但是在备机中没有'myuser'这个登录名,因此一旦主备切换,业务系统就无法登录数据库了,这种情况称为"孤立用户"。在主机和备机数据库上建立相同用户名及密码即可。
2、 准备备机数据库(主机备份及镜像还原)
在主机上备份数据库,先做完整备份,再做日志事务备份。
1、主数据必须设置成完整模式进行备份,如下图:
上图中将“恢复模式”选成“完整模式”。
2、备份数据库,如下图:
备份时将“备份类型”选成“完整”。
3、备份事务日志,如下图:
将“备份类型”选成“事务日志”且备份目录与备份数据库的目录一致。
将备份文件在备机上使用主机的全备文件进行还原,在还原数据的时候需要使用选上“with non recover”。如图所示:
如果执行成功数据库将会变成这个样子:
3、 建立镜像
--在备机中执行如下语句: alter database shishan set partner = 'tcp://192.168.1.155:5022'; 说明:shishan为数据库名,需要根据实际进行修改。192.168.1.155为主机ip地址,需根据实际进行修改。 --主机执行: alter database shishan set partner = 'tcp://192.168.1.156:5022';
说明:shishan为数据库名,需要根据实际进行修改。192.168.1.156为备机ip地址,需根据实际进行修改。
执行成功后:
到此,sql镜像热备配置完成。
四、常见命令
--切换主备 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 镜像一般适用于数据量小,时实性要求不高的数据同步,而且数据库在公网上同步也不安全。