मुझे कुछ डेटाबेसों को मिरर करने की आवश्यकता है और उन पर पारदर्शी डेटा एन्क्रिप्शन (TDE) का उपयोग करने की भी आवश्यकता है क्योंकि हमारे डेटा को 'आराम' के दौरान एन्क्रिप्ट किया जाना चाहिए।
मेरे पास मूल और दर्पण दोनों पर TDE सेटअप है। जब मैं दो डेटाबेसों के मिररिंग सेट कर रहा होता हूं, तो मुझे जो समस्या आती है, वह मैं निभाता हूं। चूँकि मैं TDE का उपयोग कर रहा हूँ, मुझे gui के माध्यम से मिररिंग सेटअप करने का तरीका नहीं पता है, इसलिए मैं काम पाने के लिए t-sql का उपयोग करने के लिए मजबूर हूँ।
नीचे वह कोड है जो मैंने मिरर किए गए सर्वर पर उपयोग किया है
--Restore the full backup to the mirrored mdf and ldf
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
RESTORE DATABASE TDE
FROM disk = '\\SERVERNAME\SQL_Stuff\Backup\TDE_FULL.bak'
WITH NORECOVERY,
REPLACE,
MOVE 'TDE' TO 'E:\TDE.mdf',
REPLACE,
MOVE 'TDE_log' TO 'G:\TDE.ldf'
CLOSE MASTER KEY
GO
--Restore the log backup to the mirrored db
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
RESTORE LOG TDE
FROM DISK = '\\SERVERNAME\SQL_Stuff\Backup\TDE_LOG.trn'
WITH NORECOVERY;
CLOSE MASTER KEY
GO
--Drop/Create Mirroring endpoint on mirror
--DROP ENDPOINT TDE
CREATE ENDPOINT TDE
STATE = STARTED
AS TCP ( LISTENER_PORT = 7025 )
FOR DATABASE_MIRRORING (
ROLE = PARTNER
);
GO
--Check the endpoints for the mirror
USE MASTER
SELECT * FROM sys.database_mirroring_endpoints
GO
--Set the principal on the mirrored db
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
ALTER DATABASE TDE SET PARTNER = 'TCP://PRINCIPAL.DOMAIN.local:7022'
GO
CLOSE MASTER KEY
GO
नीचे वह कोड है जो मैं प्रिंसिपल सर्वर पर उपयोग करता हूं।
----------------------Mirroring Section----------------------------------
--Full Backup of Principal
USE TDE
GO
BACKUP DATABASE TDE
TO DISK = '\\SERVERNAME\SQL_Stuff\Backup\TDE_FULL.bak'
WITH COMPRESSION,
NAME = 'Full Backup of TDE';
GO
---Log Backup of Principal
USE TDE
GO
BACKUP LOG TDE
TO DISK = '\\SERVERNAME\SQL_Stuff\Backup\TDE_LOG.trn'
WITH COMPRESSION,
NAME = 'Log backup of TDE'
GO
--Drop/Create Mirroring endpoint on principal
--DROP ENDPOINT TDE
CREATE ENDPOINT TDE
STATE = STARTED
AS TCP ( LISTENER_PORT = 7022 )
FOR DATABASE_MIRRORING (
ROLE = PARTNER
);
GO
--Check the endpoints for the princple
USE master
select * from sys.database_mirroring_endpoints
GO
--Set the mirror db on the principal db
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
ALTER DATABASE TDE SET PARTNER = 'TCP://MIRROR.DOMAIN.local:7025'
CLOSE MASTER KEY
GO
मैं मिररिंग समापन बिंदु 1 को सेटअप करता हूं, फिर प्रमुख समापन बिंदु। मैं फिर ALTER DATABASE
दर्पण पर जारी करता हूं , फिर मूलधन पर, जहां मुझे परिणामी त्रुटि मिलती है:
Msg 1416, Level 16, State 31, Line 2
Database "TDE" is not configured for database mirroring.
मैं इस बारे में क्या करना है के रूप में एक नुकसान में हूँ। दर्पण "बहाल" स्थिति में है, लेकिन मैं निश्चित हूं कि त्रुटि प्रिंसिपल डीबी के बारे में बात कर रही है।
आपके द्वारा दी जा सकने वाली कोई भी सहायता के लिए शुक्रिया!
प्रिंसिपल TDE के लिए अपडेट कोड:
--Create Master Key in Master Database
USE MASTER
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1Password';
PRINT 'created master key'
go
--Backing up the master key file
USE master;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password';
BACKUP MASTER KEY TO FILE = '\\SERVERNAME\TDE_Master_Key.key' ENCRYPTION BY PASSWORD = '1Password';
GO
--Create Server Certificate in the Master Database encrypted with master key (created above) which would be used to create USER database encryption key.
USE Master
CREATE CERTIFICATE Cert_For_TDE WITH SUBJECT = 'Master_Cert_for_TDE', EXPIRY_DATE = '3500-Jan-01';
Go
--Backing up the server cert file
--USE master;
BACKUP CERTIFICATE Cert_For_TDE TO FILE = '\\SERVERNAME\TDE_Cert.cer'
WITH PRIVATE KEY ( FILE = '\\SERVERNAME\TDE_Cert_Key.key', ENCRYPTION BY PASSWORD = '1Password');
GO
--Create user database key
USE TDE
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE Cert_For_TDE;
GO
--Enabling Transparent Database Encryption for the USER Database
USE master;
GO
ALTER DATABASE TDE SET ENCRYPTION ON
GO
TDE के लिए दर्पण पर कोड:
--restore the backed up key to the mirror
use master
RESTORE MASTER KEY
FROM FILE = '\\SERVERNAME\TDE_Master_Key.key'
DECRYPTION BY PASSWORD = '1Password'
ENCRYPTION BY PASSWORD = '1Password';
GO
--restore the backed up cert to the mirror
USE Master;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
CREATE CERTIFICATE Cert_For_TDE
FROM FILE = '\\SERVERNAME\TDE_Cert.cer' WITH PRIVATE KEY ( FILE = '\\SERVERNAME\TDE_Cert_Key.key', DECRYPTION BY PASSWORD = '1Password');
GO
Update2 sys.database_mirroring_endpoints प्रिंसिपल शो में sys.tcp_endpoint के साथ शामिल हुए:
endpoint_id name principal_id state_desc role_desc connection_auth_desc certificate_id encryption_algorithm_desc port ip_address
65545 TDE 261 STARTED PARTNER NEGOTIATE 0 RC4 7022 NULL
दर्पण पर sys.tcp_endpoints के साथ sys.database_mirroring_endpoint शामिल हुए:
endpoint_id name principal_id state_desc role_desc connection_auth_desc certificate_id encryption_algorithm_desc port ip_address
65537 TDE 261 STARTED PARTNER NEGOTIATE 0 RC4 7025 NULL