sql >> Database teknologi >  >> RDS >> Sqlserver

Implementer SQL Server AlwaysOn Availability Groups på Linux

I den forrige artikel forklarede jeg, hvordan vi kunne installere Ubuntu 18.04 og SQL Server 2019 på de virtuelle maskiner. Nu, før vi går videre, lad os gennemgå konfigurationen.

Vi oprettede tre virtuelle maskiner, og detaljerne er følgende:

Værtsnavn IP-adresse Rolle
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

Opdater værtsfilen.

I konfigurationen bruger vi ikke en domæneserver. Derfor, for at løse værtsnavnet, skal vi tilføje en post i værtsfilen.

Værtsfilen er placeret på /etc vejviser. Kør nedenstående kommando for at redigere filen:

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

Indtast værtsnavnene og IP-adresserne på alle virtuelle maskiner i værtsfilen:

Gem værtsfilen.

Udfør de samme trin på alle virtuelle maskiner.

Aktiver SQL Server AlwaysOn tilgængelighedsgrupper

Før vi implementerer AlwaysOn, skal vi aktivere funktionen med høj tilgængelighed i SQL Server.

I Windows Server 2016 kan denne mulighed aktiveres fra SQL Server-konfigurationsmanageren, men i Linux-platformen skal vi gøre det med en bash-kommando.

Opret forbindelse til LinuxSQL01 ved hjælp af Putty, og kør følgende kommando:

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

Genstart SQL Server-tjenesterne:

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

Udfør ovenstående trin på alle virtuelle maskiner.

Opret certifikaterne til godkendelse

I modsætning til AlwaysOn på Windows-serveren, kræver Linux-implementeringen ikke en domænecontroller. Til godkendelse og kommunikation mellem primære og sekundære replikaer bruger den certifikatet.

Følgende script opretter et certifikat og en hovednøgle. Derefter sikkerhedskopierer den certifikatet og sikrer det med en adgangskode.

Opret forbindelse til LinuxSQL01 og kør følgende script:

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 oprettet certifikatet og hovednøglen, kopierer vi dem til sekundære replikaer (LinuxSQL02 og LinuxSQL03) ved at køre nedenstående kommando.

Sørg for, at hovednøglen og certifikatets placering er den samme på alle replikaer og har læse- og skrivetilladelse.

/*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/

Udfør følgende kommando på sekundære noder for at give læse-skrivetilladelse til certifikatet og den private nøgle:

/*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 tilladelsen er tildelt, opretter vi certifikatet og hovednøglen ved hjælp af backup af certifikatet og hovednøglen oprettet på LinuxSQL01.

For at gøre det skal du køre følgende kommando på begge sekundære replikaer:

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 oprettet certifikatet og hovednøglen, konfigurerer vi databasens spejlingspunkter.

Opret spejlingsendepunkterne

Til at kommunikere mellem de primære og sekundære replikaer bruger SQL Server spejlingsendepunkter.

Et spejlingsendepunkt bruger TCP/IP-protokollen til at sende og modtage beskeder fra primære og sekundære replikaer og lytter på en unik TCP/IP-port.

Kør følgende script for at oprette et slutpunkt på primære og sekundære 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 spejlingspunkterne er blevet oprettet, lad os oprette en tilgængelighedsgruppe.

Opret tilgængelighedsgruppe

Vi skal konfigurere AlwaysON ved hjælp af SQL Server Management Studio.

Start den først og opret forbindelse til LinuxSQL01-instansen ved hjælp af sa legitimationsoplysninger. Når du er forbundet til SQL Server-instansen, skal du højreklikke på Always On High Availability og vælg Guiden Ny tilgængelighedsgruppe .

Guiden Tilgængelighedsgruppe starter.

1. Introduktion

I en introduktion skærm, se opgavelisten, der udføres af tilgængelighedsgruppeguiden. Klik på Næste.

2. Angiv mulighed for tilgængelighedsgruppe

På skærmbilledet Angiv tilgængelighedsgruppeindstilling skal du angive det ønskede tilgængelighedsgruppenavn og vælge EKSTERN fra Klyngetype rullemenu.

Sæt også et flueben for Database Level Health Detection afkrydsningsfeltet. Det aktiverer den udvidede begivenhedssession for tilgængeligheden af ​​gruppesundhed.

3. Vælg Databaser

Du kan vælge den database, der skal føjes til tilgængelighedsgruppen på Vælg databaser skærmen. Bemærk:Databasen skal opfylde følgende forudsætninger:

  1. Databasen skal være i FULD gendannelsesmodel.
  2. Der skal oprettes en FULD sikkerhedskopi af databasen.

Jeg har gendannet en sikkerhedskopi af WideWorldImportors database på den primære replika. Databasen er i FULD gendannelsesmodel, og en fuld sikkerhedskopi er blevet genereret.

Vælg WideWorldImportors database fra listen, og klik på Næste .

4. Angiv replikaer

Angiv replikaer skærm, har vi flere faner til at konfigurere forskellige muligheder. Lad os gennemgå dem alle.

fanen Replikaer

Her specificerer vi de primære og sekundære replikaer, tilgængelighedstilstand og failover-tilstande.

Vi bruger LinuxSQL01 som en primær replika. LinuxSQL02 og LinuxSQL03 er en sekundær replika.

Tilgængelighedstilstanden for LinuxSQL02 vil være Synchronous commit , og for LinuxSQL03 vil være Asynkron commit .

For at tilføje replikaen skal du klikke på Tilføj replika . Derefter på Opret forbindelse til serveren dialogboksen, angiv servernavnet og SQL-logindetaljer for at oprette forbindelse til instansen:

Fanen Slutpunkter

Her kan vi se listen over replikaer og deres spejlingsendepunkter med tilsvarende portnumre og navne:

Sikkerhedskopieringspræferencer

Her angiver du den replika, du vil bruge til at generere sikkerhedskopien. Denne mulighed er nyttig, når du ønsker at aflaste SQL-databasesikkerhedskopieringen i tilgængelighedsgruppen.

Du kan vælge en af ​​følgende muligheder:

  1. Foretrækker sekundær:Sikkerhedskopiering vil blive genereret på den sekundære replika. Hvis den sekundære replika ikke er tilgængelig, vil sikkerhedskopien blive genereret på den primære replika.
  2. Kun sekundær:Alle sikkerhedskopier vil blive genereret på den sekundære replika.
  3. Primær:Sikkerhedskopier vil blive genereret på den primære replika.
  4. Enhver replika:Sikkerhedskopiering vil blive genereret fra enhver af replikaerne.

Vi vil bruge Prefer Secondary mulighed:

Lytter

Tilgængelighedsgruppelytteren er et virtuelt navn, der bruges af et program til at forbinde tilgængelighedsgruppedatabaserne. Angiv lytterens DNS-navn og dets port i Lytterens DNS-navn og Port tekstbokse.

Vælg Statisk IP fra Netværkstilstand rullemenu.

For at tilføje IP-adressen til tilgængelighedsgruppelytteren skal du klikke på Tilføj >Indtast IP-adresse og Undernetmaske .

Skrivebeskyttet routing

Her kan du angive Skrivebeskyttet routing-URL og Skrivebeskyttet ruteliste for primære og sekundære replikaer.

Vi konfigurerer ikke skrivebeskyttet routing i vores demonstration. Klik derfor på Næste. For at lære mere om skrivebeskyttet routing, kan du henvise til Read-only routing for en Always On.

Lad os nu vende tilbage til den vigtigste proces, vi arbejder på.

5. Vælg Indledende datasynkronisering

Vælg indledende datasynkronisering skærm, skal du indstille dine præferencer for den indledende datasynkronisering. Detaljer om hver valgmulighed findes på guideskærmen, og du kan vælge en af ​​dem:

  1. Automatisk seeding.
  2. Fuld database og log backup.
  3. Kun tilmeld dig.
  4. Spring indledende datasynkronisering over.

Jeg har ikke oprettet WideWorldImportors database på LinuxSQL02 og LinuxSQL03 replika, ved at vælge Automatisk seeding mulighed. Det vil oprette databasen på begge replikaer og sætte gang i datasynkroniseringen. Klik på Næste.

6. Validering og oversigt

Validering skærm, validerer guiden alle konfigurationer.

For at kunne implementere Always On-tilgængelighedsgruppen med succes skal du have al validering lykkedes. Hvis der er en fejl, skal du løse den.

Oversigt skærmen, kan du se listen over konfigurationer, der er valgt til at implementere tilgængelighedsgruppen.

Gennemgå detaljerne igen, og klik på Udfør – det starter implementeringsprocessen.

Hvis du vil generere scriptet til implementeringsprocessen, skal du klikke på Script .

Som vi ser, starter AlwaysOn-implementeringsprocessen. Når det er fuldført, skal du klikke på Luk for at afslutte guiden.

Dermed er implementeringen af ​​AlwaysOn tilgængelighedsgruppen på SQL Server 2019 fuldført.

Oversigt

Denne artikel hjælper os med at forstå den trinvise implementeringsproces af SQL Server AlwaysOn tilgængelighedsgruppen på Linux.

Den næste artikel vil forklare, hvordan vi kan konfigurere tilgængelighedsgruppelytteren og udføre manuel failover ved hjælp af SQL Server Management Studio. Hold dig opdateret!


  1. Hvordan implementerer man én-til-en, én-til-mange og mange-til-mange relationer, mens man designer tabeller?

  2. Sådan aktiverer du SQL Server Agent XP'er ved hjælp af T-SQL

  3. CRUD-drift med ASP.NET Core MVC, Entity Framework Core og SQL Server

  4. JSON_QUERY() Eksempler i SQL Server (T-SQL)