SELECT mirroring_role_desc AS [Mirroring Role], mirroring_state_desc AS [Mirroring State], database_id AS [Database ID], DB_NAME(database_id) AS [Database Name], mirroring_partner_name AS [Partner Server], mirroring_partner_instance AS [Partner Instance], mirroring_witness_name AS [Witness Server], mirroring_witness_state_desc AS [Witness State] FROM sys.database_mirroring
查看证书路径
find / -name "master.cer" -or -name "slave.cer"
源库 rm -fr master.cer slave.cer 镜像库 rm -fr master.cer slave.cer
查询端点
select * from sys.endpoints
源库 drop endpoint master_slave_endpoint; 镜像库 drop endpoint master_slave_endpoint;
查询证书及key
SELECT name, key_algorithm, key_length FROM sys.symmetric_keys WHERE key_guid IS NOT NULL; SELECT name, pvt_key_encryption_type_desc, thumbprint FROM sys.certificates;
源库 alter master key drop encryption by service master key; drop certificate master_cert; drop certificate slave_cert; drop master key; 镜像库 alter master key drop encryption by service master key; drop certificate master_cert; drop certificate slave_cert; drop master key;
查询用户
EXEC sp_helplogins;
SELECT name, type_desc, create_date, modify_date FROM sys.database_principals WHERE type_desc IN ('SQL_USER', 'SQL_LOGIN', 'WINDOWS_USER', 'WINDOWS_GROUP')
主库 drop LOGIN repl_slave_login; DROP USER repl_slave_user; 镜像库 DROP LOGIN repl_master_login; DROP USER repl_master_user;
主库 alter database SICS set partner off; 镜像库 alter database SICS set partner off;
IF EXISTS(SELECT * FROM sys.databases WHERE name='master' and is_master_key_encrypted_by_server=1) OPEN MASTER KEY DECRYPTION BY PASSWORD='23987hxJ#KL95234nl0zBe'; ELSE CREATE MASTER KEY ENCRYPTION BY PASSWORD='23987hxJ#KL95234nl0zBe'; GO USE master; go CREATE CERTIFICATE master_cert WITH SUBJECT = 'master certificate for database mirroring', start_date='2021-11-07',expiry_date='2030-01-01'; GO
BACKUP CERTIFICATE master_cert TO FILE ='/data/msdata/master.cer';
Use master; go CREATE ENDPOINT master_slave_endpoint STATE = STARTED AS TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE master_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO
USE master; go CREATE LOGIN repl_slave_login WITH PASSWORD='[email protected]'; GO USE master; go CREATE USER repl_slave_user FOR LOGIN repl_slave_login; GO
IF EXISTS(SELECT * FROM sys.databases WHERE name='master' and is_master_key_encrypted_by_server=1) OPEN MASTER KEY DECRYPTION BY PASSWORD='23987hxJ#KL95234nl0zBe'; ELSE CREATE MASTER KEY ENCRYPTION BY PASSWORD='23987hxJ#KL95234nl0zBe'; GO USE master; go CREATE CERTIFICATE slave_cert WITH SUBJECT = 'slave certificate for database mirroring', start_date='2021-11-07',expiry_date='2030-01-01'; GO
BACKUP CERTIFICATE slave_cert TO FILE ='/data/msdata/slave.cer';
Use master; go CREATE ENDPOINT master_slave_endpoint STATE = STARTED AS TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE slave_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); GO
USE master; go CREATE LOGIN repl_master_login WITH PASSWORD='[email protected]'; GO USE master; go CREATE USER repl_master_user FOR LOGIN repl_master_login; go
镜像库 telnet 10.61.0.101 5022 源库 telnet 10.61.0.102 5022
1)源库 scp -r 10.61.0.102:/data/msdata/slave.cer /data/msdata/ chown -R mssql:mssql /data/msdata/slave.cer 2)镜像库 scp -r 10.61.0.101:/data/msdata/master.cer /data/msdata/ chown -R mssql:mssql /data/msdata/master.cer
源库 Use master; go CREATE CERTIFICATE slave_cert AUTHORIZATION repl_slave_user FROM FILE = '/data/msdata/slave.cer' GO GRANT connect on endpoint::master_slave_endpoint TO [repl_slave_login]; GO 镜像库 Use master; go CREATE CERTIFICATE master_cert AUTHORIZATION repl_master_user FROM FILE = '/data/msdata/master.cer' GO GRANT connect on endpoint::master_slave_endpoint TO [repl_master_login]; GO
USE master; ALTER DATABASE SICS SET RECOVERY FULL with no_wait; GO BACKUP DATABASE SICS to disk='/data/backup/20211108_SICS.bak' WITH FORMAT; GO BACKUP LOG SICS to disk='/data/backup/20211108_SICS_log.bak'; GO
scp -r /data/backup/20211108_SICS.bak 10.61.0.102:/data/backup/ scp -r /data/backup/20211108_SICS_log.bak 10.61.0.102:/data/backup/ chown -R mssql. 20211108_SICS.bak 20211108_SICS_log.bak
恢复前镜像库把原有的库删除干净
Restore database SICS from disk='/data/backup/20211108_SICS.bak' with norecovery,stats=10,Move N'SICS' to '/data/msdata/SICS.mdf', Move N'SICS_log' to '/data/msdata/SICS_log.ldf' Restore log SICS from disk='/data/backup/20211108_SICS_log.bak' with norecovery,file=1 go
步骤不能错,先启用镜像库,在启用源库
1)镜像库启用镜像 Alter database SICS set partner='TCP://10.61.0.101:5022' go 2)源库启用镜像 Alter database SICS set partner='TCP://10.61.0.102:5022' go
需在镜像库执行
此操作是指定数据库的安全性模式设置为关闭;可大大提高主库的性能
Alter database SICS set safety off; go