SQLserver2016鏡像備份不需要見證服務(wù)器(實戰(zhàn)親測)
環(huán)境:aliyun
系統(tǒng)版本:Microsoft Windows Server 2019 Datacenter
數(shù)據(jù)庫版本:SQL server 2016
服務(wù)器1:192.168.1.1 test001
服務(wù)器2:192.168.1.2 test002
一、更改主機(jī)名字
主機(jī):test001 →更改為→ test001.xxx.net
副機(jī):test002 →更改為→ test002.xxx.net
操作過程(主/副機(jī)操作一樣)

更改完會提示需要重啟,確認(rèn)重啟即可;
二、更改host(主機(jī)/副機(jī)都要)
進(jìn)入C:\Windows\System32\drivers\etc,找到host文件,編輯添加主機(jī)和副機(jī)的IP 主機(jī)名
如:
192.168.1.1 test001.xxx.net
192.168.1.2 test002.xxx.net


三、數(shù)據(jù)庫/日志還原
主/副數(shù)據(jù)庫的名字,賬號密碼建議統(tǒng)一一樣;
1、數(shù)據(jù)庫還原(備份時選擇“完整”備份):

2、日志還原(備份時選擇“事務(wù)日志”就行)
在還原日志時,“選項”里選擇“norecovery”選項;
四、創(chuàng)建鏡像
配置鏡像(整個操作都需要在master下操作)
信息確認(rèn):
主機(jī)(生產(chǎn)數(shù)據(jù)庫):test001.xxx.net
副機(jī)(鏡像數(shù)據(jù)庫):test002.xxx.net
切換到主機(jī)服務(wù)器
創(chuàng)建數(shù)據(jù)庫主密鑰
--user master --a.創(chuàng)建數(shù)據(jù)庫主密鑰 create master key encryption by password = 'qwe123'; --可用以下語句查看生成的數(shù)據(jù)庫主密鑰 --select * from sys.symmetric_keys ;
創(chuàng)建一個證書
--b.創(chuàng)建一個證書 create certificate db_host_a_cert with subject = 'db_host_a certificate for database mirroring', start_date = '02/12/2016', expiry_date = '12/31/2039' --db_host_a_cert 證書名字 --查詢證書 --select * from sys.certificates;
【創(chuàng)建主密鑰小插曲 不報錯可以忽略】
如果在創(chuàng)建數(shù)據(jù)庫主密鑰時,提示已經(jīng)存在;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'kk_2020'; ############################返回提示########################### 消息 15578,級別 16,狀態(tài) 1,第 1 行 數(shù)據(jù)庫中已存在主密鑰。執(zhí)行此語句前,請先刪除該主密鑰。
刪除主密鑰
DROP MASTER KEY ############################返回提示########################### 消息 15580,級別 16,狀態(tài) 1,第 1 行 無法刪除 主密鑰,因為 證書 'db_host_a_cert' 是由它加密的。
先刪除證書再刪除主密鑰即可
DROP CERTIFICATE db_host_a_cert ############################返回提示########################### 命令已成功完成。 ###若提示正在有一個或多個端點正在使用,要先 drop endpoint xxx端點名 ###########################刪除主密鑰########################### DROP MASTER KEY ############################返回提示########################### 命令已成功完成。
創(chuàng)建鏡像端點
--c.創(chuàng)建鏡像端點 create endpoint db_mirr state = started as tcp(listener_port=5022, --鏡像端點使用的通信端口 listener_ip = all) -- 偵聽的IP地址 for database_mirroring ( authentication = certificate db_host_a_cert, -- 證書身份驗 encryption = required algorithm rc4, -- 不對傳輸?shù)臄?shù)據(jù)加密,如果需要加密,可以配置為 SUPPORTED 或 REQUIRED, 并可選擇加密算法 role = all); -- 端點支持所有的數(shù)據(jù)庫鏡像角色, 也可以設(shè)置為 WITNESS(僅見證服務(wù)器),或 PARTNER(僅鏡像伙伴) --查詢 --select * from sys.tcp_endpoints --select * from sys.database_mirroring_endpoints;
備份證書
--d.備份證書 backup certificate db_host_a_cert to file = 'D:\ShareFile\db_a_run.cer';
創(chuàng)建登入
--e.創(chuàng)建登入 create login to_host_a_login with password = 'qwe123'; create user to_host_a_user for login to_host_a_login; ******************************************************* --有問題的時候需要刪除之前的用戶 --drop login to_host_a_login,drop user to_host_a_user
切換到副機(jī)服務(wù)器
-- user master --1.創(chuàng)建數(shù)據(jù)庫主密鑰 create master key encryption by password = 'qwe123'; --可用以下語句查看生成的數(shù)據(jù)庫主密鑰 --select * from sys.symmetric_keys ;
創(chuàng)建一個證書
--2.創(chuàng)建一個證書 create certificate db_host_b_cert with subject = 'db_host_b certificate for database mirroring', start_date = '02/12/2016', expiry_date = '12/31/2029' --查詢 --select * from sys.certificates;
創(chuàng)建鏡像端點
--3.創(chuàng)建鏡像端點 create endpoint db_mirr state = started as tcp( listener_port=5022 ,listener_ip = all ) for database_mirroring( authentication = certificate db_host_b_cert, encryption = required algorithm rc4, role = all); --查詢 --select * from sys.tcp_endpoints --select * from sys.database_mirroring_endpoints;
備份證書
--4.備份證書 backup certificate db_host_b_cert to file = 'D:\ShareFile\db_b_run.cer';
創(chuàng)建登入
--5.創(chuàng)建登入 create login to_host_b_login with password = 'qwe123'; create user to_host_b_user for login to_host_b_login;
切換到主機(jī)服務(wù)器
從副機(jī)服務(wù)器上D:\ShareFile\下拷貝備份出來的證書db_b_run.cer到主機(jī)服務(wù)器的D:\ShareFile\下
還原副機(jī)服務(wù)器證書到主機(jī)服務(wù)器上;
use master create certificate db_host_b_cert authorization to_host_a_user from file = 'D:\ShareFile\db_b_run.cer' --賦權(quán) grant connect on endpoint::db_mirr to [to_host_a_login];
切換到副機(jī)服務(wù)器
從主機(jī)服務(wù)器上D:\ShareFile\下拷貝備份出來的證書db_a_run.cer到副機(jī)服務(wù)器的D:\ShareFile\下
還原主機(jī)服務(wù)器證書到副機(jī)服務(wù)器上;
use master create certificate db_host_a_cert authorization to_host_b_user from file = 'D:\ShareFile\db_a_run.cer' --賦權(quán) grant connect on endpoint::db_mirr to [to_host_b_login];
設(shè)置伙伴(自動啟動鏡像)
切換到副機(jī)服務(wù)器
alter database DB_1 set partner = 'tcp://test001.xxx.net:5022';
切換到主機(jī)服務(wù)器
alter database DB_2 set partner = 'tcp://test002.xxx.net:5022';
鏡像日志清理
在做SQL 2016鏡像,由于主服務(wù)器必須做完整備份,這時log日志很大,必須定期清理log日志,將下列存儲過程每6個小時執(zhí)行一次,其定期會將日志文件縮小到300M
Create PROC [dbo].[CleanTranLog]
AS
BEGIN
DECLARE @num TINYINT --執(zhí)行次數(shù)
DECLARE @backLogName VARCHAR(100) ;--備份日志文件名稱
DECLARE @backLogPath VARCHAR(100) ; --備份日志文件的路徑
SET @num = 0 ;
SET @backLogPath = N'C:\SQLBackup' ;--設(shè)定需要備份日志的路徑
--備份3次鏡像日志文件,同時刪除
WHILE( @num < 3 )
BEGIN
DECLARE @LogPath VARCHAR(100)
SET @backLogName = CAST(@num as VARCHAR(2)) + '.trn' ;
SET @LogPath = @backLogPath + '\' + @backLogName
BACKUP LOG DB TO DISK = @LogPath WITH NOFORMAT, NOINIT,
NAME= @backLogName, SKIP, REWIND, NOUNLOAD,STATS = 10
SET @num = @num + 1
--刪除剛備份的trn日志文件結(jié)束的備份日志文件
EXECUTE master.dbo.xp_delete_file 0, @LogPath ;
end
--收縮日志文件到300M
DBCC SHRINKFILE (DB_log, 300) ;
--注意
--DB 這里指: 數(shù)據(jù)庫名稱
--DB_log 為日志邏輯名稱 可以通過數(shù)據(jù)庫屬性中“文件”查看日志的邏輯名稱。
END存儲過程創(chuàng)建后(手動執(zhí)行一下測試是否成功)
① 新建一個維護(hù)計劃
② 在工具箱內(nèi)打開“執(zhí)行T-SQL語句”

?雙擊打開執(zhí)行框,確認(rèn)即可
USE [testdb] --數(shù)據(jù)庫 GO exec CleanTranLog --需要執(zhí)行的存儲過程

?④ 在子計劃中按照實際需求設(shè)置“計劃”

確定后保存,最后測試一下執(zhí)行計劃是否成功即可?。?!
到此這篇關(guān)于SQLserver2016鏡像備份不需要見證服務(wù)器(實戰(zhàn)親測)的文章就介紹到這了,更多相關(guān)SQL2016鏡像備份內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQLServer查詢所有數(shù)據(jù)庫名和表名及表結(jié)構(gòu)等代碼示例
SQL Server是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可以使用SQL語言來查詢表結(jié)構(gòu),這篇文章主要給大家介紹了關(guān)于SQLServer查詢所有數(shù)據(jù)庫名和表名及表結(jié)構(gòu)等的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
SQLServer 數(shù)據(jù)導(dǎo)入導(dǎo)出的幾種方法小結(jié)
在涉及到SQL Server編程或是管理時一定會用到數(shù)據(jù)的導(dǎo)入與導(dǎo)出, 導(dǎo)入導(dǎo)出的方法有多種,結(jié)合我在做項目時的經(jīng)歷做一下匯總2010-06-06
SQL Server 數(shù)據(jù)庫優(yōu)化
設(shè)計1個應(yīng)用系統(tǒng)似乎并不難,但是要想使系統(tǒng)達(dá)到最優(yōu)化的性能并不是一件容易的事。2009-07-07
SQL Server2012數(shù)據(jù)庫備份和還原的教程
這篇文章主要為大家詳細(xì)介紹了SQL Server2012數(shù)據(jù)庫備份和還原的教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
淺談SQL Server 2016里TempDb的進(jìn)步
tempdb:是連接到 SQL Server 實例的所有用戶都可用的全局資源,它保存所有臨時表,臨時工作表,臨時存儲過程,臨時存儲大的類型,中間結(jié)果集,表變量和游標(biāo)等。另外,它還用來滿足所有其他臨時存儲要求.2016-01-01

