4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Implementazione del mirroring
Negli esempi che seguono vengono utilizzate tre istanze di SQL Server create nella stessa macchina e definite come:
- SQL2K5\Rome
- SQL2K5\Dallas
- SQL2K5\Seattle
che assumono rispettivamente il ruolo di Principal, Mirror e Witness (ovviamente ciò ha un senso puramente finalizzato ad un ambiente di test e in uno scenario di produzione si dovrebbero prevedere tre istanze installate su altrettanti server). Per poter implementare il database mirroring è indispensabile attivare il flag di traccia 1400 attraverso il tool SQL Server Configuration Manager. Per ciascuna delle istanze coinvolte andiamo quindi ad aggiungere tra le proprietà del servizio SQL Server la stringa "-T 1400" in coda ai parametri di startup già presenti.

Nell'istanza SQL2K5\Rome, ovvero il nostro Principal, creiamo un database MyDB ed una tabella MyTable.
USE Master;
IF DB_ID('MyDB') IS NOT NULL
DROP DATABASE MyDB;
CREATE DATABASE MyDB;
GO
USE MyDB;
CREATE TABLE dbo.MyTable (
ID SMALLINT IDENTITY (1, 1) NOT NULL,
Nome VARCHAR(20) NOT NULL
);
GO
INSERT dbo.MyTable VALUES ('Luca')
INSERT dbo.MyTable VALUES ('Andrea')
INSERT dbo.MyTable VALUES ('Lorenzo')
GO
Siamo quindi pronti per iniziare l'implementazione del processo di mirroring. Per prima cosa eseguiamo un backup del database MyDB appena creato e ne eseguiamo il restore nell'istanza SQL2K5\Dallas.
BACKUP DATABASE MyDB TO DISK = 'C:\MyDB.bak' WITH INIT
GO
:connect SQL2K5\Dallas
RESTORE DATABASE MyDB FROM DISK = 'C:\MyDB.bak'
WITH MOVE 'MyDB' TO 'D:\path\mydb.mdf',
MOVE 'MyDB_Log' TO 'D:\path\mydb_log.ldf',
NORECOVERY
Si noti che nel codice di cui sopra viene utilizzata una nuova funzionalità di SSMS (SQL Server Management Studio), ovvero la possibilità di operare, attraverso la medesima finestra di query, su due o più istanze. Per attivare tale funzionalità è necessario selezionare il pulsante SQLCMD mode nella barra degli strumenti di SSMS.

In questo caso è stata utilizzata, nell'istruzione RESTORE, la clausola MOVE per spostare i file fisici in una posizione differente da quella dei file del DB Principal. Ciò potrebbe non essere necessario se la posizione dei file che compongono il database si trovano nella stessa posizione, a livello di file system, rispetto al database di origine. E' sempre necessario invece utilizzare l'opzione NORECOVERY, in quanto il Mirror deve trovarsi in un perenne stato di redo delle transazioni inviate dal Principal e non specificare tale opzione impedirebbe il processo di trasmissione e applicazione delle transazioni eseguite. Una volta inizializzato il database che assume il ruolo di Mirror, occorre creare le connessioni tra le istanze di SQL Server (endpoints) per consentire il canale di comunicazione tra gli attori.
--Creazione ed avvio dell'endpoint sul Principal
IF EXISTS (SELECT * FROM sys.database_mirroring_endpoints)
DROP ENDPOINT Mirroring;
GO
CREATE ENDPOINT Mirroring
AS TCP (LISTENER_PORT = 5022)
FOR DATA_MIRRORING (ROLE = PARTNER, ENCRYPTION = SUPPORTED);
GO
ALTER ENDPOINT Mirroring STATE = STARTED;
GO
--Creazione ed avvio dell'endpoint sul Mirror
:connect SQL2K5\Dallas
IF EXISTS (SELECT * FROM sys.database_mirroring_endpoints)
DROP ENDPOINT Mirroring;
GO
CREATE ENDPOINT Mirroring
AS TCP (LISTENER_PORT = 5023)
FOR DATA_MIRRORING (ROLE = PARTNER, ENCRYPTION = SUPPORTED);
GO
ALTER ENDPOINT Mirroring STATE = STARTED;
GO
--Creazione ed avvio dell'endpoint sul Witness
:connect SQL2K5\Seattle
IF EXISTS (SELECT * FROM sys.database_mirroring_endpoints)
DROP ENDPOINT Mirroring;
GO
CREATE ENDPOINT Mirroring
AS TCP (LISTENER_PORT = 5024)
FOR DATA_MIRRORING (ROLE = WITNESS);
GO
ALTER ENDPOINT Mirroring STATE = STARTED;
GO
4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Utilità
Stampa
Download


