¶Ï¶ÏÐøÐøÅªÁ˼¸Ì죬´î½¨ºÃÁËÓò£¬·þÎñÆ÷¼ÓÈëÓòºóÏÖÔÚ²âÊÔÕâÖÖÇé¿ö¡£
²âÊÔ»·¾³£º


Ö÷·þÎñÆ÷:
IP = 192.168.2.10
InstanceName
= MSSQLSERVER
LISTENER_PORT = 5022
¾µÏñ·þÎñÆ÷:
IP = 192.168.2.10
InstanceName = MSSQLSERVERA
LISTENER_PORT = 5023
¼ûÖ¤·þÎñÆ÷£º
IP = 192.168.2.11
InstanceName = MSSQLSERVER
LISTENER_PORT = 5022
¡¾1. Êý¾Ý¿â±¸·Ý»¹Ô¡¿
-- Ö÷Ì壺ÉèÖÃÊý¾Ý¿â¡°»Ö¸´Ä£Ê½¡±Îª¡°ÍêÕû¡±Ä£Ê½ USE master; ALTER DATABASE [DBName] SET RECOVERY FULL GO -- Ö÷Ì壺±¸·ÝÊý¾Ý¿â USE master; BACKUP DATABASE [DBName] TO DISK = 'C:\Databases\MSSQLSERVER\DBName.BAK' WITH INIT,FORMAT GO -- ¾µÏñ£º»¹ÔÊý¾Ý¿â(NORECOVERY) USE master; RESTORE DATABASE [DBName] FROM DISK = N'C:\Databases\MSSQLSERVER\DBName.BAK' WITH FILE = 1, MOVE N'DBName' TO N'C:\Databases\MSSQLSERVERA\DBName.mdf', MOVE N'DBName_log' TO N'C:\Databases\MSSQLSERVERA\DBName_log.ldf', NOUNLOAD, NORECOVERY, STATS = 10 GO |
¡¾2. ´´½¨Êý¾Ý¿âÖ÷ÃÜÔ¿ºÍÖ¤Ê飬±¸·Ý½»»»Ö¤Êé¡¿
-- Ö÷Ì壺 USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'kk_2012@'; CREATE CERTIFICATE Cert_kk_db1_mssqlserver WITH SUBJECT = 'Cert_kk_db1_mssqlserver', START_DATE = '2015-03-20'; BACKUP CERTIFICATE Cert_kk_db1_mssqlserver TO FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db1_mssqlserver.cer'; -- ¾µÏñ£º USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'kk_2012@'; CREATE CERTIFICATE Cert_kk_db1_mssqlserverA WITH SUBJECT = 'Cert_kk_db1_mssqlserverA', START_DATE = '2015-03-20'; BACKUP CERTIFICATE Cert_kk_db1_mssqlserverA TO FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db1_mssqlserverA.cer'; -- ¼ûÖ¤£º USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'kk_2012@'; CREATE CERTIFICATE Cert_kk_db2_mssqlserver WITH SUBJECT = 'Cert_kk_db2_mssqlserver', START_DATE = '2015-03-20'; BACKUP CERTIFICATE Cert_kk_db2_mssqlserver TO FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db2_mssqlserver.cer'; -- ½»»»Ö¤Êé(Ï໥¿½±´Ö¤Êé): /* Ö÷ÌåÖ¤Êé(¿½±´µ½)¡ª¡ª¡ª¡ª>¾µÏñ¡¢¼ûÖ¤ ¾µÏñÖ¤Êé(¿½±´µ½)¡ª¡ª¡ª¡ª>Ö÷Ìå¡¢¼ûÖ¤ ¼ûÖ¤Ö¤Êé(¿½±´µ½)¡ª¡ª¡ª¡ª>Ö÷Ìå¡¢¾µÏñ */ |
¡¾3. ´´½¨Êý¾Ý¿âµÇ¼ÕË»§ºÍÓû§²¢»¹ÔÖ¤Êé¡¿
-- ´´½¨ÓòÓû§£ºUserForMirror -- SQLServer ʹÓà [network service] Æô¶¯ÊµÀý·þÎñ -- Ö÷Ìå(»¹Ô ¾µÏñºÍ¼ûÖ¤ µÄÖ¤Êé)£º USE master GO CREATE LOGIN [KK\UserForMirror] FROM WINDOWS; GO CREATE USER UserForMirror FOR LOGIN [KK\UserForMirror]; GO CREATE CERTIFICATE [Cert_kk_db1_mssqlserverA] AUTHORIZATION [UserForMirror] FROM FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db1_mssqlserverA.cer'; GO GRANT CONNECT ON ENDPOINT::Endpoint_For_Mirror TO [KK\UserForMirror]; GO CREATE CERTIFICATE [Cert_kk_db2_mssqlserver] AUTHORIZATION [UserForMirror] FROM FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db2_mssqlserver.cer'; GO GRANT CONNECT ON ENDPOINT::Endpoint_For_Mirror TO [KK\UserForMirror]; GO -- ¾µÏñ(»¹Ô Ö÷ÌåºÍ¼ûÖ¤ µÄÖ¤Êé)£º USE master GO CREATE LOGIN [KK\UserForMirror] FROM WINDOWS; GO CREATE USER UserForMirror FOR LOGIN [KK\UserForMirror]; GO CREATE CERTIFICATE [Cert_kk_db1_mssqlserver] AUTHORIZATION [UserForMirror] FROM FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db1_mssqlserver.cer'; GO GRANT CONNECT ON ENDPOINT::Endpoint_For_Mirror TO [KK\UserForMirror]; GO CREATE CERTIFICATE [Cert_kk_db2_mssqlserver] AUTHORIZATION [UserForMirror] FROM FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db2_mssqlserver.cer'; GO GRANT CONNECT ON ENDPOINT::Endpoint_For_Mirror TO [KK\UserForMirror]; GO -- ¼ûÖ¤(»¹Ô Ö÷ÌåºÍ¾µÏñ µÄÖ¤Êé)£º USE master GO CREATE LOGIN [KK\UserForMirror] FROM WINDOWS; GO CREATE USER UserForMirror FOR LOGIN [KK\UserForMirror]; GO CREATE CERTIFICATE [Cert_kk_db1_mssqlserver] AUTHORIZATION [UserForMirror] FROM FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db1_mssqlserver.cer'; GO GRANT CONNECT ON ENDPOINT::Endpoint_For_Mirror TO [KK\UserForMirror]; GO CREATE CERTIFICATE [Cert_kk_db1_mssqlserverA] AUTHORIZATION [UserForMirror] FROM FILE = 'C:\Databases\CERTIFICATE\Cert_kk_db1_mssqlserverA.cer'; GO GRANT CONNECT ON ENDPOINT::Endpoint_For_Mirror TO [KK\UserForMirror]; GO |
¡¾4. ´´½¨Êý¾Ý¿â¾µÏñ¶Ëµã¡¿
-- Ö÷Ì壺(ÓòÕË»§£ºKK\UserForMirror,UTHENTICATION = CERTIFICATE Ö¤Êé) USE master; CREATE ENDPOINT [Endpoint_For_Mirror] AUTHORIZATION [KK\UserForMirror] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = CERTIFICATE Cert_kk_db1_mssqlserver,
ENCRYPTION = REQUIRED ALGORITHM AES) GO -- ¾µÏñ(Ö÷Ìå¾µÏñͬһ·þÎñÆ÷£¬¶Ë¿Ú²»Ò»Ñù£ºLISTENER_PORT = 5023)£º USE master; CREATE ENDPOINT [Endpoint_For_Mirror] AUTHORIZATION [KK\UserForMirror] STATE=STARTED AS TCP (LISTENER_PORT = 5023, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = CERTIFICATE Cert_kk_db1_mssqlserverA,
ENCRYPTION = REQUIRED ALGORITHM AES) GO -- ¼ûÖ¤(ROLE = WITNESS)£º USE master; CREATE ENDPOINT [Endpoint_For_Mirror] AUTHORIZATION [KK\UserForMirror] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = WITNESS, AUTHENTICATION = CERTIFICATE Cert_kk_db2_mssqlserver,
ENCRYPTION = REQUIRED ALGORITHM AES) GO |
¡¾5. ¿ªÊ¼¾µÏñ¡¿
-- ×¢ÒâÖ´ÐÐ˳Ðò:¾µÏñ¡ª¡ª>Ö÷Ì塪¡ª>¼ûÖ¤ -- ¾µÏñ:(PARTNERΪÖ÷Ìå·þÎñÆ÷) USE master; ALTER DATABASE [DBName] SET PARTNER = 'TCP://192.168.2.10:5022' GO -- Ö÷Ìå:(PARTNERΪ¾µÏñ·þÎñÆ÷) USE master; ALTER DATABASE [DBName] SET PARTNER = 'TCP://192.168.2.10:5023' GO -- Ö÷Ìå:(WITNESSΪ¼ûÖ¤·þÎñÆ÷) USE master; ALTER DATABASE [DBName] SET WITNESS = 'TCP://192.168.2.11:5022'; GO |
ÅäÖÃÍê³É£¡½çÃæ²é¿´Èçͼ£º
¡¾6. ´´½¨Êý¾Ý¿â¾µÏñ¼àÊÓÆ÷×÷Òµ¡¿
--ÔÚÖ÷±¸Ö´ÐÐ use msdb; exec sys.sp_dbmmonitoraddmonitoring --exec sys.sp_dbmmonitorhelpmonitoring --exec sys.sp_dbmmonitorresults DBName,0,0 --exec sys.sp_dbmmonitorchangemonitoring --exec sys.sp_dbmmonitordropmonitoring |
¡¾7. ²âÊÔ¡¿
-- Ö÷Ìå£ºËæÒâ¸ü¸Ä£¬µÈÏÂÇл»ºóÊÇ·ñÒÑͬ²½ USE DBName; SELECT * FROM [dbo].[MyTable] UPDATE [dbo].[MyTable] SET NAME = 'master' DELETE TOP(1) FROM [dbo].[MyTable] -- Ö÷Ì壺ÊÖ¶¯·½Ê½½øÐÐÖ÷±¸Çл» USE [master] GO ALTER DATABASE DBName SET PARTNER FAILOVER; GO |
ÊÖ¶¯Í£Ö¹Ö÷ÌåµÄ·þÎñ£¬¿ÉÒÔ¿´µ½£¬¡°¾µÏñ¡±±äΪÁË¡°Ö÷Ì塱
µ±ÔÀ´Ö÷ÌåµÄ·þÎñÆô¶¯ºó£¬·¢ÏÖËü±äΪÁË¡°¾µÏñ¡±¡££¨´ËʱҲ¿ÉÒÔ°ÑËüÇл»»ØÖ÷Ì壩
¡¾8. Ïà¹Ø½Å±¾¡¿
select * from sys.certificates select * from sys.endpoints select * from sys.database_mirroring_endpoints select * from sys.database_mirroring select * from sys.database_mirroring_witnesses USE master; ALTER DATABASE [DBName] SET SAFETY FULL; --ÉèÖÃΪ¸ß°²È«Ä£Ê½ ALTER DATABASE [DBName] SET PARTNER RESUME; --»Ö¸´¾µÏñ ALTER DATABASE [DBName] SET PARTNER FAILOVER; --Çл»Ö÷±¸ ALTER DATABASE [DBName] SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS; --Ç¿ÖÆ»Ö¸´¾µÏñ ALTER DATABASE [DBName] SET ONLINE; --ÔÚÏßÊý¾Ý¿â |
¡¾9. ÎÊÌâ¡¿
/*ÒÔÉÏ¿ÉÄܳöÏÖµÄÎÊÌ⣺ ¡¾ÎÊÌâ¡¿¿ªÊ¼¾µÏñʱ³öÏÖµÄÎÊÌ⣨ע£ºÉÏÃæµÄ½Å±¾ÊÇÕýÈ·µÄ£¬ÕâÀïΪ´íÎó°¸Àý£©£º ALTER DATABASE [DBName] SET PARTNER = 'TCP://192.168.1.10:5023' Ìáʾ´íÎóÈçÏ£º ÏûÏ¢ 1418£¬¼¶±ð 16£¬×´Ì¬ 1£¬µÚ 2 ÐÐ ·þÎñÆ÷ÍøÂçµØÖ· "TCP://192.168.1.10:5023" ÎÞ·¨·ÃÎÊ»ò²»´æÔÚ¡£ Çë¼ì²éÍøÂçµØÖ·Ãû³Æ£¬²¢¼ì²é±¾µØºÍÔ¶³Ì¶ËµãµÄ¶Ë¿ÚÊÇ·ñÕý³£ÔËÐС£ ¡¾ÎÊÌâ¡¿·¢ÏÖIPŪ´íÁË£¬°Ñ192.168.1.10¸ÄΪ192.168.2.10ÔÙÖ´ÐУº USE master; ALTER DATABASE [DBName] SET PARTNER = 'TCP://192.168.2.10:5022' GO Ìáʾ´íÎóÈçÏ£º ÒÑΪÊý¾Ý¿â¾µÏñÆôÓÃÊý¾Ý¿â "DBName"¡£ ¡¾½â¾ö¡¿Í£Ö¹¾µÏñ£¬ÖØÐÂÁ¬½Ó ALTER DATABASE [DBName] SET PARTNER OFF; GO ALTER DATABASE [DBName] SET PARTNER = 'TCP://192.168.2.10:5022' GO ¡¾ÎÊÌâ¡¿Á´½Ó¾µÏñʱÓÖ´íÎ󣺣¨ip ºÍ ¶Ë¿Ú¶¼ÄÜÁ¬½Óµ½£© ALTER DATABASE [DBName] SET WITNESS = 'TCP://192.168.2.11:5022' Ìáʾ´íÎóÈçÏ£º ÏûÏ¢ 1456£¬¼¶±ð 16£¬×´Ì¬ 3£¬µÚ 1 ÐÐ ÎÞ·¨½« ALTER DATABASE ÃüÁî·¢Ë͵½Ô¶³Ì·þÎñÆ÷ʵÀý 'TCP://192.168.2.11:5022'¡£ Êý¾Ý¿â¾µÏñÅäÖÃδ¸ü¸Ä¡£ÇëÈ·±£¸Ã·þÎñÆ÷ÒÑÁ¬½Ó£¬È»ºóÖØÊÔ¡£ ¡¾½â¾ö¡¿AUTHENTICATIONµ±Ê±ÎªWindowsÊÚȨ£¬¸ÄΪ֤Êé CREATE ENDPOINT [Endpoint_For_Mirror] ¡¡ AUTHENTICATION = CERTIFICATE */ |
|