SQLServer2012高可用映象資料庫 實施方案(非域環境)
目錄
主資料庫、映象資料庫、見證伺服器之間的身份驗證方式
一:域帳戶
二:證照
本次採用證照驗證方式;
所有資料庫映象會話都只支援一臺主體伺服器和一臺映象伺服器。
伺服器、資料庫準備
IP 、主機、密碼等敏感資訊已脫敏
伺服器角色 |
主機名 |
版本 |
IP |
主體伺服器 |
principal |
Windows server 2012 |
192.168.100.101 |
映象伺服器 |
mirror |
Windows server 2012 |
192.168.100.102 |
見證伺服器 |
witness |
Windows server 2012 |
192.168.100.103 |
建立目錄
三臺伺服器本地,分別建立D:\sharedir 目錄,並設定共享, 許可權everyone 可讀寫;
三臺伺服器本地,分別建立D:\certifications 目錄,用於匯出證照;
環境檢查
(1) 檢查三臺伺服器網路和埠是否測通;
(2) 檢查三臺伺服器防火牆是否關閉,或1023,5022 等埠是否放開;
(3) 檢查三臺伺服器上資料庫版本和補丁版本是否一致;
具體指令碼內容見最後 十:指令碼附件
建立主資料庫金鑰
建立證照
建立端點
備份並分發證照
建立登陸賬號
建立使用者
授權使用者
授權埠
備份資料庫( 主)
主庫備份資料庫和日誌,並將備份檔案備註到映象資料庫伺服器上
use master
BACKUP DATABASE testdb
TO DISK = 'D:\sharedir\testdb0730.bak'
WITH COMPRESSION
GO
use master
BACKUP LOG testdb
TO DISK = 'D:\sharedir\testlog0730.trn'
GO
還原資料庫( 映象)
還原資料庫和日誌(RESTORE WITH NORECOVERY)
在主資料庫上操作
檢視主庫、映象庫狀態
主庫
映象庫
手動切換
在主庫上執行
映象資料庫 102 ,已經切換成主庫
102 切換回來映象資料庫
自動切換
101 主故障,測試自動切換
101 啟動防火牆,1023 和5022 不通
use testdb
102
use testdb
select count (*) from a0730 ;
--101 關閉防火牆
use testdb
---102
use testdb
select * from test0730 ;
select count (*) from a0730 ;
insert into test0730 values (7 );
update test0730 set id =100 where id =1 ;
手動將主切回101
---101
use testdb
select * from test0730 ;
問題一:
伺服器網路地址:TCP://192.168.100.102:5022 無法訪問或不存在。
資料庫 testdb 的夥伴伺服器例項和見證伺服器例項均不可用。
問題原因:
主伺服器上啟用了防火牆,並且1023 和5022 埠沒有開放。
解決方案:
關閉防火牆,重新點選 開始映象
Microsoft .NET Data Provider for SQL Server 提供了對資料庫映象會話的客戶端連線支援。
資料庫映象 (SQL Server)
https://blog.csdn.net/dba_huangzj/article/details/27652857
第三篇——第二部分——第四文 配置 SQL Server 映象——非域環境
---101 主伺服器
-- 建立主金鑰
USE master ;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'testpasword)(*' ; -- 演示所需,否則不要設定這麼簡單的密碼
GO
/*
-- 刪除主金鑰
USE master;
DROP MASTER KEY
*/
--- 建立證照
USE master ;
CREATE CERTIFICATE HOST_A_cert
WITH SUBJECT = 'HOST_A certificate' -- 在主例項上建立證照,命名為HOST_A_cert,這個選項是描述證照
, EXPIRY_DATE = '2999-1-1' ; -- 證照過期時間,可以適當設定長一點,具體按實際需要設定
GO
/*
-- 刪除證照
USE master;
DROP CERTIFICATE HOST_A_cert
*/
--- 建立端點
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (
LISTENER_PORT = 5022 -- 使用5022埠,這個埠可以改成未被使用的埠,但是映象過程中的所有合作者都應該使用相同的埠
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE HOST_A_cert -- 使用證照來授權端點
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = ALL -- 表示這個端點可以作為任何角色,包括主伺服器、映象伺服器、見證伺服器。具體可看聯機叢書。
);
GO
/*
-- 刪除映象端點
IF EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N'Endpoint_Mirroring')
DROP ENDPOINT [Endpoint_Mirroring]
GO
*/
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'D:\certifications\HOST_A_cert.cer' ;
GO
-- 在主例項上建立一個登入名給Mirror例項
USE master ;
CREATE LOGIN HOST_B_login WITH PASSWORD = 'testpasword)(*' ;
GO
-- 建立一個用於給這個登入名
CREATE USER HOST_B_user FOR LOGIN HOST_B_login ;
GO
-- 讓該帳號使用證照授權
CREATE CERTIFICATE HOST_B_cert
AUTHORIZATION HOST_B_user
FROM FILE = 'D:\Certifications\HOST_B_cert.cer'
GO
-- 授予這個新賬號連線端點的許可權
GRANT CONNECT ON ENDPOINT :: Endpoint_Mirroring TO HOST_B_login ;
GO
/*
-- 刪除賬號
DROP LOGIN HOST_B_user
*/
-- 在主例項上建立一個登入名給見證例項
USE master ;
CREATE LOGIN HOST_C_login WITH PASSWORD = 'testpasword)(*' ;
GO
-- 建立一個用於給這個登入名
CREATE USER HOST_C_user FOR LOGIN HOST_C_login ;
GO
-- 讓該帳號使用證照授權
CREATE CERTIFICATE HOST_C_cert
AUTHORIZATION HOST_C_user
FROM FILE = 'D:\Certifications\HOST_C_cert.cer'
GO
-- 授予這個新賬號連線端點的許可權
GRANT CONNECT ON ENDPOINT :: Endpoint_Mirroring TO HOST_C_login ;
---102 映象伺服器
-- 建立主金鑰
USE master ;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'testpasword)(*' ; -- 演示所需,否則不要設定這麼簡單的密碼
GO
/*
-- 刪除主金鑰
USE master;
DROP MASTER KEY
*/
USE master ;
CREATE CERTIFICATE HOST_B_cert
WITH SUBJECT = 'HOST_B certificate' -- 在Winess例項上建立證照,命名為HOST_C_cert,這個選項是描述證照
, EXPIRY_DATE = '2999-1-1' ; -- 證照過期時間,可以適當設定長一點,具體按實際需要設定
GO
/*
-- 刪除證照
USE master;
DROP CERTIFICATE HOST_B_cert
*/
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (
LISTENER_PORT = 5022 -- 使用5022埠,這個埠可以改成未被使用的埠,但是映象過程中的所有合作者都應該使用相同的埠
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE HOST_B_cert -- 使用證照來授權端點
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = ALL -- 表示這個端點可以作為任何角色,包括主伺服器、映象伺服器、見證伺服器。具體可看聯機叢書。
);
GO
/*
-- 刪除映象端點
IF EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N'Endpoint_Mirroring')
DROP ENDPOINT [Endpoint_Mirroring]
GO
*/
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\certifications\HOST_B_cert.cer' ;
GO
-- 在映象例項上建立一個登入名給Principal例項
USE master ;
CREATE LOGIN HOST_A_login WITH PASSWORD = 'testpasword)(*' ;
GO
-- 建立一個用於給這個登入名
CREATE USER HOST_A_user FOR LOGIN HOST_A_login ;
GO
-- 讓該帳號使用證照授權
CREATE CERTIFICATE HOST_A_cert
AUTHORIZATION HOST_A_user
FROM FILE = 'D:\Certifications\HOST_A_cert.cer'
GO
-- 授予這個新賬號連線端點的許可權
GRANT CONNECT ON ENDPOINT :: Endpoint_Mirroring TO HOST_A_login ;
GO
/*
-- 刪除賬號
DROP LOGIN HOST_A_user
*/
USE master ;
CREATE LOGIN HOST_C_login WITH PASSWORD = 'testpasword)(*' ;
GO
-- 建立一個用於給這個登入名
CREATE USER HOST_C_user FOR LOGIN HOST_C_login ;
GO
-- 讓該帳號使用證照授權
CREATE CERTIFICATE HOST_C_cert
AUTHORIZATION HOST_C_user
FROM FILE = 'C:\Certifications\HOST_C_cert.cer'
GO
-- 授予這個新賬號連線端點的許可權
GRANT CONNECT ON ENDPOINT :: Endpoint_Mirroring TO HOST_C_login ;
---103 見證伺服器
-- 建立主金鑰
USE master ;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'testpasword)(*' ; -- 演示所需,否則不要設定這麼簡單的密碼
GO
/*
-- 刪除主金鑰
USE master;
DROP MASTER KEY
*/
USE master ;
CREATE CERTIFICATE HOST_C_cert
WITH SUBJECT = 'HOST_C certificate' -- 在Winess例項上建立證照,命名為HOST_C_cert,這個選項是描述證照
, EXPIRY_DATE = '2999-1-1' ; -- 證照過期時間,可以適當設定長一點,具體按實際需要設定
GO
/*
-- 刪除證照
USE master;
DROP CERTIFICATE HOST_C_cert
*/
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (
LISTENER_PORT = 5022 -- 使用5022埠,這個埠可以改成未被使用的埠,但是映象過程中的所有合作者都應該使用相同的埠
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE HOST_C_cert -- 使用證照來授權端點
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = ALL -- 表示這個端點可以作為任何角色,包括主伺服器、映象伺服器、見證伺服器。具體可看聯機叢書。
);
GO
/*
-- 刪除映象端點
IF EXISTS (SELECT * FROM sys.endpoints e WHERE e.name = N'Endpoint_Mirroring')
DROP ENDPOINT [Endpoint_Mirroring]
GO
*/
BACKUP CERTIFICATE HOST_C_cert TO FILE = 'D:\certifications\HOST_C_cert.cer' ;
GO
--- 在見證伺服器上為主體、映象伺服器建立以證照為驗證的賬號、使用者名稱及端點。
-- 在Witness例項上建立一個登入名給Principal例項
USE master ;
CREATE LOGIN HOST_A_login WITH PASSWORD = 'testpasword)(*' ;
GO
-- 建立一個用於給這個登入名
CREATE USER HOST_A_user FOR LOGIN HOST_A_login ;
GO
-- 讓該帳號使用證照授權
CREATE CERTIFICATE HOST_A_cert
AUTHORIZATION HOST_A_user
FROM FILE = 'D:\certifications\HOST_A_cert.cer'
GO
-- 授予這個新賬號連線端點的許可權
GRANT CONNECT ON ENDPOINT :: Endpoint_Mirroring TO HOST_A_login ;
GO
/*
-- 刪除賬號
DROP LOGIN HOST_A_user
*/
-- 在Witness例項上建立一個登入名給Mirror例項
USE master ;
CREATE LOGIN HOST_B_login WITH PASSWORD = 'testpasword)(*' ;
GO
-- 建立一個用於給這個登入名
CREATE USER HOST_B_user FOR LOGIN HOST_B_login ;
GO
-- 讓該帳號使用證照授權
CREATE CERTIFICATE HOST_B_cert
AUTHORIZATION HOST_B_user
FROM FILE = 'D:\certifications\HOST_B_cert.cer'
GO
-- 授予這個新賬號連線端點的許可權
GRANT CONNECT ON ENDPOINT :: Endpoint_Mirroring TO HOST_B_login ;
GO
/*
-- 刪除賬號
DROP LOGIN HOST_B_user
*/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2652387/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL資料庫高可用方案MySql資料庫
- 生成環境之Nginx高可用方案Nginx
- oracle 資料庫搭建高可用環境 容災參考。Oracle資料庫
- 高可用系列文章之三 - NGINX 高可用實施方案Nginx
- SQLServer高可用方案在企業生產環境的實踐SQLServer
- SQL Server 2000非域環境下資料庫異機備份SQLServer資料庫
- 實驗二:SQLserver2005高可用性之—-資料庫映象SQLServer資料庫
- SQlServer高可用性之資料庫映象篇(2)--安裝SQLServer資料庫
- SQLServer2012 logshipping實施方案SQLServer
- 構建ORACLE高可用環境Oracle
- 基於DRBD實現資料庫高可用資料庫
- Oracle RAC & Data Guard搭建高可用資料庫系統方案Oracle資料庫
- ES資料庫高可用配置資料庫
- Oracle高可用環境之DDL操作Oracle
- 非域環境下SQL Server mirror建立SQLServer
- 【ARCHIVE】單機環境修改資料庫為非歸檔模式Hive資料庫模式
- 一文了解資料庫高可用容災方案的設計與實現資料庫
- 高可用叢集環境搭建-留檔
- Hadoop框架:HDFS高可用環境配置Hadoop框架
- IT基礎設施領域哪個板塊門檻又高、容量又大?我想非資料庫莫屬!資料庫
- 資料容災實施方案
- SQLServer2012新增無見證伺服器的映象資料庫SQLServer伺服器資料庫
- 資料庫高可用性簡史資料庫
- k8s+kubeovn高可用環境搭建K8S
- 建立映象釋出到映象倉庫【不依賴docker環境】Docker
- rac環境下standby資料庫的實現資料庫
- MySQL資料庫實現高可用架構之MHA的實戰MySql資料庫架構
- 資料中心基礎設施高可用提升研究與實踐
- SQLServer2012映象主庫掛掉如何切換到映象備庫SQLServer
- 阿里雲Polardb國產資料庫高可用部署實踐阿里資料庫
- 生產環境搭建高可用Harbor(包括恢復演練實操)
- MySQL資料庫架構——高可用演進MySql資料庫架構
- Centos 7 搭建MariaDB 資料庫高可用CentOS資料庫
- MySQL資料庫的高可用性分析MySql資料庫
- 生產環境的redis高可用叢集搭建Redis
- 【陳吉平】《構建oracle高可用環境》前言Oracle
- 5、pgpool-II高可用性(一)資料庫的高可用性資料庫
- MySQL 資料高可用的實現思路MySql