sql >> Databasteknik >  >> RDS >> Sqlserver

Distribuera SQL Server AlwaysOn Availability Groups på Linux

I den tidigare artikeln förklarade jag hur vi kunde installera Ubuntu 18.04 och SQL Server 2019 på de virtuella maskinerna. Nu, innan vi går vidare, låt oss gå igenom konfigurationen.

Vi skapade tre virtuella maskiner, och detaljerna är följande:

Värdnamn IP-adress Roll
LinuxSQL01 192.168.0.140 Primär replika
LinuxSQL02 192.168.0.141 Synkron sekundär replika
LinuxSQL03 192.168.0.142 Asynkron sekundär replika

Uppdatera värdfilen.

I konfigurationen använder vi inte en domänserver. Därför måste vi lägga till en post i värdfilen för att lösa värdnamnet.

Värdfilen finns på /etc katalog. Kör kommandot nedan för att redigera filen:

[email protected]:/# vim /etc/hosts

I värdfilen anger du värdnamnen och IP-adresserna för alla virtuella maskiner:

Spara värdfilen.

Utför samma steg på alla virtuella maskiner.

Aktivera SQL Server AlwaysOn-tillgänglighetsgrupper

Innan vi distribuerar AlwaysOn måste vi aktivera funktionen för hög tillgänglighet i SQL Server.

I Windows Server 2016 kan det här alternativet aktiveras från SQL Server-konfigurationshanteraren, men i Linux-plattformen måste vi göra det med ett bash-kommando.

Anslut till LinuxSQL01 med Putty och kör följande kommando:

[email protected]:~# sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1

Starta om SQL Server-tjänsterna:

[email protected]:~# service mssql-server restart

Utför stegen ovan på alla virtuella maskiner.

Skapa certifikaten för autentisering

Till skillnad från AlwaysOn på Windows-servern kräver Linux-distributionen ingen domänkontrollant. För autentisering och kommunikation mellan primära och sekundära repliker använder den certifikatet.

Följande skript skapar ett certifikat och en huvudnyckel. Sedan säkerhetskopierar den certifikatet och säkrar det med ett lösenord.

Anslut till LinuxSQL01 och kör följande skript:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'abcd!1234';
CREATE CERTIFICATE AG_Auth_Cert WITH SUBJECT = 'dbm';
BACKUP CERTIFICATE AG_Auth_Cert
   TO FILE = '/var/opt/mssql/data/ AG_Auth_Cert_backup.cer'
   WITH PRIVATE KEY (
           FILE = '/var/opt/mssql/data/ AG_Auth_Cert_backup.pvk',
           ENCRYPTION BY PASSWORD = 'abcd!1234'
       );

När vi har skapat certifikatet och huvudnyckeln kopierar vi dem till sekundära repliker (LinuxSQL02 och LinuxSQL03) genom att köra kommandot nedan.

Se till att huvudnyckeln och certifikatets plats är samma på alla repliker och har läs- och skrivbehörighet.

/*Copy certificate and the key to LinuxSQL02*/

scp /var/opt/mssql/data/AG_Auth_Cert_backup.cer [email protected]:/var/opt/mssql/data/
scp /var/opt/mssql/data/AG_Auth_Cert_backup.pvk   [email protected]:/var/opt/mssql/data/

/*Copy certificate and the key to LinuxSQL03*/

scp /var/opt/mssql/data/AG_Auth_Cert_backup.cer   [email protected]:/var/opt/mssql/data/
scp /var/opt/mssql/data/AG_Auth_Cert_backup.pvk   [email protected]:/var/opt/mssql/data/

Utför följande kommando på sekundära noder för att ge läs-skrivbehörighet för certifikatet och den privata nyckeln:

/*Grant read-write permission on certificate and key to [email protected]*/

[email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.pvk
[email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.cer

/*Grant read-write permission on certificate and key to [email protected]*/

[email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.pvk
[email protected]:~# chmod 777 /var/opt/mssql/data/AG_Auth_Cert_backup.cer

När behörighet har tilldelats skapar vi certifikatet och huvudnyckeln med hjälp av säkerhetskopian av certifikatet och huvudnyckeln som skapats på LinuxSQL01.

För att göra det, kör följande kommando på båda sekundära replikerna:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'abcd!1234';
CREATE CERTIFICATE AG_Auth_Cert
    FROM FILE = '/var/opt/mssql/data/AG_Auth_Cert_backup.cer'
    WITH PRIVATE KEY (
    FILE = '/var/opt/mssql/data/AG_Auth_Cert_backup.pvk',
    DECRYPTION BY PASSWORD = 'abcd!1234'
            );

När vi har skapat certifikatet och huvudnyckeln kommer vi att konfigurera databasspeglingspunkterna.

Skapa speglingsslutpunkterna

För att kommunicera mellan de primära och sekundära replikerna använder SQL Server speglingsslutpunkter.

En speglingsändpunkt använder TCP/IP-protokollet för att skicka och ta emot meddelanden från primära och sekundära repliker och lyssnar på en unik TCP/IP-port.

Kör följande skript för att skapa en slutpunkt på primära och sekundära noder:

/*Run this script on LinuxSQL01*/

CREATE ENDPOINT [AG_LinuxSQL01]
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (
	    ROLE = ALL,
	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
		ENCRYPTION = REQUIRED ALGORITHM AES
		);
ALTER ENDPOINT [AG_LinuxSQL01] STATE = STARTED;

/*Run this script on LinuxSQL02*/

CREATE ENDPOINT [AG_LinuxSQL02]
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (
	    ROLE = ALL,
	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
		ENCRYPTION = REQUIRED ALGORITHM AES
		);

ALTER ENDPOINT [AG_LinuxSQL02] STATE = STARTED;

/*Run this script on LinuxSQL03*/

CREATE ENDPOINT [AG_LinuxSQL03]
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (
	    ROLE = ALL,
	    AUTHENTICATION = CERTIFICATE AG_Auth_Cert,
		ENCRYPTION = REQUIRED ALGORITHM AES
		);
ALTER ENDPOINT [AG_LinuxSQL03] STATE = STARTED;

När speglingspunkterna har skapats, låt oss skapa en tillgänglighetsgrupp.

Skapa tillgänglighetsgrupp

Vi kommer att konfigurera AlwaysON med SQL Server Management Studio.

Starta den först och anslut till LinuxSQL01-instansen med sa referenser. När du är ansluten till SQL Server-instansen högerklickar du på Always On High Availability och välj guiden New Availability Group .

Guiden för tillgänglighetsgrupp startar.

1. Inledning

I en introduktion skärm, se uppgiftslistan som kommer att utföras av guiden för tillgänglighetsgrupp. Klicka på Nästa.

2. Ange alternativ för tillgänglighetsgrupp

På skärmen Ange alternativ för tillgänglighetsgrupp anger du önskat namn på tillgänglighetsgruppen och väljer EXTERN från Klustertyp rullgardinsmenyn.

Sätt också en bock för Hälsodetektering på databasnivå kryssruta. Det aktiverar den utökade händelsesessionen för tillgängligheten av grupphälsa.

3. Välj Databaser

Du kan välja vilken databas du vill lägga till i tillgänglighetsgruppen i Välj databaser skärm. Obs:Databasen måste uppfylla följande krav:

  1. Databasen måste vara i FULLSTÄNDIG återställningsmodell.
  2. En HELT säkerhetskopia av databasen måste skapas.

Jag har återställt en säkerhetskopia av WideWorldImportors databas på den primära repliken. Databasen är i FULL återställningsmodell och en fullständig säkerhetskopia har genererats.

Välj WideWorldImportors databas från listan och klicka på Nästa .

4. Ange repliker

Ange repliker skärm har vi flera flikar för att konfigurera olika alternativ. Låt oss granska dem alla.

fliken Repliker

Här anger vi primära och sekundära repliker, tillgänglighetsläge och failover-lägen.

Vi använder LinuxSQL01 som en primär replika. LinuxSQL02 och LinuxSQL03 är en sekundär replik.

Tillgänglighetsläget för LinuxSQL02 kommer att vara Synchronous commit , och för LinuxSQL03 kommer att vara Asynkron commit .

För att lägga till repliken, klicka på Lägg till replik . Sedan, på Anslut till servern dialogrutan ange servernamnet och SQL-inloggningsdetaljer för att ansluta till instansen:

Fliken Slutpunkter

Här kan vi se listan över repliker och deras speglingsslutpunkter med motsvarande portnummer och namn:

Inställningar för säkerhetskopiering

Här anger du vilken replik du vill använda för att skapa säkerhetskopian. Det här alternativet är användbart när du vill avlasta SQL-databassäkerhetskopieringen inom tillgänglighetsgruppen.

Du kan välja något av följande alternativ:

  1. Prefer Secondary:Säkerhetskopiering kommer att genereras på den sekundära repliken. Om den sekundära repliken inte är tillgänglig kommer säkerhetskopian att genereras på den primära repliken.
  2. Endast sekundär:Alla säkerhetskopior kommer att genereras på den sekundära repliken.
  3. Primär:Säkerhetskopior kommer att genereras på den primära repliken.
  4. Alla repliker:Säkerhetskopiering kommer att genereras från vilken som helst av replikerna.

Vi kommer att använda Prefer Secondary alternativ:

Lyssnare

Tillgänglighetsgruppavlyssnaren är ett virtuellt namn som används av en applikation för att ansluta tillgänglighetsgruppdatabaserna. Ange lyssnarens DNS-namn och dess port i Lyssnarens DNS-namn och Port textrutor.

Välj Statisk IP från Nätverksläget rullgardinsmenyn.

För att lägga till IP-adressen för tillgänglighetsgruppavlyssnaren klickar du på Lägg till >Ange IP-adress ochNätmask .

Skrivskyddad routing

Här kan du ange Skrivskyddad routing-URL och Skrivskyddad ruttlista för primära och sekundära repliker.

Vi kommer inte att konfigurera skrivskyddad routing i vår demonstration. Klicka därför på Nästa. För att lära dig mer om skrivskyddad routing kan du se skrivskyddad routing för en alltid på.

Låt oss nu gå tillbaka till huvudprocessen vi arbetar med.

5. Välj Initial datasynkronisering

Välj Initial Data Synchronization anger du dina inställningar för den första datasynkroniseringen. Detaljer för varje alternativ finns på guideskärmen och du kan välja vilket som helst av dem:

  1. Automatisk sådd.
  2. Fullständig databas och loggsäkerhetskopiering.
  3. Endast gå med.
  4. Hoppa över initial datasynkronisering.

Jag har inte skapat WideWorldImportors databas på LinuxSQL02 och LinuxSQL03 repliker, välj Automatisk sådd alternativ. Det kommer att skapa databasen på båda replikerna och starta datasynkroniseringen. Klicka på Nästa.

6. Validering och sammanfattning

Validering skärm, validerar guiden alla konfigurationer.

För att kunna distribuera gruppen Alltid på tillgänglighet måste du ha lyckats med all validering. Om det finns något fel måste du lösa det.

Sammanfattning skärmen kan du se listan över konfigurationer som valts för att distribuera tillgänglighetsgruppen.

Granska detaljerna en gång till och klicka på Slutför – det startar distributionsprocessen.

Om du vill skapa skriptet för distributionsprocessen klickar du på Skript .

Som vi ser startar AlwaysOn-distributionsprocessen. När det är klart klickar du på Stäng för att avsluta guiden.

Därmed är distributionen av tillgänglighetsgruppen AlwaysOn på SQL Server 2019 slutförd.

Sammanfattning

Den här artikeln hjälper oss att förstå den steg-för-steg-distributionsprocessen av SQL Server AlwaysOn-tillgänglighetsgruppen på Linux.

Nästa artikel kommer att förklara hur vi kan konfigurera tillgänglighetsgruppavlyssnaren och utföra manuell failover med SQL Server Management Studio. Håll utkik!


  1. Fulltextsökningar i MySQL:The Good, the Bad and the Ugly

  2. Hur implementerar man en många-till-många-relation i PostgreSQL?

  3. Hur man analyserar databasindexens hälsa

  4. använd en variabel för tabellnamn i mysql sproc