可下载附件
/***********************主机ANNATROV*******************************/
/*
数据库镜像
主机:ANNATROV
备机:JOHN
见证机:KATE
以上三台机器均:XP SP3;SQL SERVER 2008 SP1.备机,见证机均为VM虚拟机,主机为本机
由于系统是XP,所以没有做域.因此采用证书认证方式来连接.所以,如果要用于透明数据加密的请注意.MASTER证书可以共用,需要建的是数据库证书.
数据库要能够互相访问,不懂的端口的可以把防火墙关掉.
由于数据库镜像只对数据库内数据进行同步,因此主库上的(msdb)作业,(master)登陆名需要手工同步,以免造成不必要的麻烦.
*/
/*
如果数据库MASTER有加密码了,可以删除.
删除证书
--SET ENCRYPTION OFF
DROP CERTIFICATE HOST_C_cert --删除加密的证书,就是加密码的数据库证书.
drop MASTER KEY --删除主密钥,也就是MASTER的
drop database encryption key
*/
--创建证书
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'OOOooo';
CREATE CERTIFICATE ANNATROV WITH SUBJECT = 'ANNATROV' ,
START_DATE = '2010-07-23';
--创建链接端点
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE ANNATROV , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
--备份证书,并拷贝证书至各机确保互联
BACKUP CERTIFICATE ANNATROV TO FILE = 'g:\test\ANNATROV.cer';
/*主机,备机,见证机三机都备份完证书以后,然后再将各自的证书拷贝到其他两台机器上,因为下面的添加登陆名创建的账号需要各自的
证书来验证.比如主机ANNATROV上,就需要有JOHN,KATE的证书*/
--添加登陆名,用户
--备机用户--JOHN
CREATE LOGIN JOHN WITH PASSWORD = '123456';
CREATE USER JOHN FOR LOGIN JOHN;
CREATE CERTIFICATE JOHN AUTHORIZATION JOHN FROM FILE = 'g:\test\JOHN.cer'; --证书验证
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [JOHN];
--见证机用户--KATE
CREATE LOGIN KATE WITH PASSWORD = '123456';
CREATE USER KATE FOR LOGIN KATE;
CREATE CERTIFICATE KATE AUTHORIZATION KATE FROM FILE = 'g:\test\KATE.cer';--证书验证
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [KATE];
/*
--手工同步登陆名,密码
--镜像的缺点就是不能同步数据库用户名和作业,因为需要手工同这两项.
--在主机上找出合建名
USE master;
select sid,name from syslogins;
--在备机上创建登陆名
USE master;
exec sp_addlogin
@loginame = 'Data_Syn',
@passwd = '123,./',
@sid = 0x9FD492E8D353394AA8893CE7B0EC1E08;
*/
--等各主机都执行以上步骤再可以执行以下语句.
--建立镜像
ALTER DATABASE PpP SET PARTNER = 'TCP://john:5022' --先在备机执行然后再这个
ALTER DATABASE PpP SET WITNESS = 'TCP://kate:5022' --见证机上不需要执行
/**************************备机 JOHN***************************/
/*
如果数据库MASTER有加密码了,可以删除.
删除证书
--SET ENCRYPTION OFF
DROP CERTIFICATE HOST_C_cert --删除加密的证书,就是加密码的数据库证书.
drop MASTER KEY --删除主密钥,也就是MASTER的
drop database encryption key
*/
--创建证书
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'OOOooo';
CREATE CERTIFICATE JOHN WITH SUBJECT = 'JOHN',
START_DATE = '2010-07-23';
---------------------
--创建点链接
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE JOHN , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
--备份证书,并拷贝证书至各机确保互联
BACKUP CERTIFICATE JOHN TO FILE = 'c:\sqlt\JOHN.cer';
--添加登陆名,用户
--主机用户--ANNATROV
CREATE LOGIN ANNATROV WITH PASSWORD = '123456';
CREATE USER ANNATROV FOR LOGIN ANNATROV;
CREATE CERTIFICATE ANNATROV AUTHORIZATION ANNATROV FROM FILE = 'c:\sqlt\ANNATROV.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [ANNATROV];
--见证机用户
CREATE LOGIN KATE WITH PASSWORD = '123456';
CREATE USER KATE FOR LOGIN KATE;
CREATE CERTIFICATE KATE AUTHORIZATION KATE FROM FILE = 'c:\sqlt\KATE.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [KATE];
--在备机上创建登陆名
/*
USE master;
exec sp_addlogin
@loginame = 'Data_Syn',
@passwd = '123,./',
@sid = 0x9FD492E8D353394AA8893CE7B0EC1E08;
*/
--建立镜像
ALTER DATABASE PpP SET PARTNER='TCP://annatrov:5022' --先在备机执行再在主机执行
/***********************见证机 KATE**********************************/
/*
如果数据库MASTER有加密码了,可以删除.
删除证书
--SET ENCRYPTION OFF
DROP CERTIFICATE HOST_C_cert --删除加密的证书,就是加密码的数据库证书.
drop MASTER KEY --删除主密钥,也就是MASTER的
drop database encryption key
*/
--创建证书
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'OOOooo';
CREATE CERTIFICATE KATE WITH SUBJECT = 'KATE',
START_DATE = '2010-07-23';
-----------------
--创建端点链接
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE KATE , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
--备份证书,并拷贝证书至各机确保互联
BACKUP CERTIFICATE KATE TO FILE = 'c:\sqlt\KATE.cer';
--添加登陆名,用户
--主机登陆用户
CREATE LOGIN ANNATROV WITH PASSWORD = '123456';
CREATE USER ANNATROV FOR LOGIN ANNATROV;
CREATE CERTIFICATE ANNATROV AUTHORIZATION ANNATROV FROM FILE = 'c:\sqlt\ANNATROV.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [ANNATROV];
--备机登陆用户
CREATE LOGIN JOHN WITH PASSWORD = '123456';
CREATE USER JOHN FOR LOGIN JOHN;
CREATE CERTIFICATE JOHN AUTHORIZATION JOHN FROM FILE = 'c:\sqlt\JOHN.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [JOHN];
/*************************主备手工切换******************************/
--测试:主备互换
USE master;
ALTER DATABASE PpP SET PARTNER FAILOVER;
USE master;
ALTER DATABASE PpP SET PARTNER SAFETY FULL; --事务安全,同步模式
ALTER DATABASE PpP SET PARTNER SAFETY OFF; --事务不安全,异步模式,高性能
----------------
--测试:主备互换
USE master;
ALTER DATABASE PpP SET PARTNER FAILOVER;
--主服务器Down掉,备机紧急启动并且开始服务
--备机执行
USE master;
ALTER DATABASE PpP SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;
--备机执行:
USE master;
ALTER DATABASE PpP SET PARTNER RESUME; --恢复镜像
ALTER DATABASE PpP SET PARTNER FAILOVER; --切换主备
--结果图
作者:ANNATROV
时间:2010-8-4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现