sql >> Database >  >> RDS >> Sqlserver

Implementeer SQL Server AlwaysOn-beschikbaarheidsgroepen op Linux

In het vorige artikel heb ik uitgelegd hoe we Ubuntu 18.04 en SQL Server 2019 op de virtuele machines konden installeren. Laten we nu, voordat we verder gaan, de configuratie doornemen.

We hebben drie virtuele machines gemaakt en de details zijn als volgt:

Hostnaam IP-adres Rol
LinuxSQL01 192.168.0.140 Primaire replica
LinuxSQL02 192.168.0.141 Synchrone secundaire replica
LinuxSQL03 192.168.0.142 Asynchrone secundaire replica

Werk het hostbestand bij.

In de configuratie gebruiken we geen domeinserver. Om de hostnaam op te lossen, moeten we daarom een ​​vermelding toevoegen aan het hostbestand.

Het hostbestand bevindt zich op /etc map. Voer de onderstaande opdracht uit om het bestand te bewerken:

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

Voer in het hostbestand de hostnamen en IP-adressen van alle virtuele machines in:

Sla het hostbestand op.

Voer dezelfde stappen uit op alle virtuele machines.

Schakel SQL Server AlwaysOn-beschikbaarheidsgroepen in

Voordat we AlwaysOn implementeren, moeten we de functie voor hoge beschikbaarheid in SQL Server inschakelen.

In Windows Server 2016 kan deze optie worden ingeschakeld vanuit de SQL Server-configuratiemanager, maar in het Linux-platform moeten we dit doen met een bash-opdracht.

Maak verbinding met LinuxSQL01 met behulp van Putty en voer de volgende opdracht uit:

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

Start de SQL Server-services opnieuw:

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

Voer de bovenstaande stappen uit op alle virtuele machines.

Maak de certificaten voor authenticatie

In tegenstelling tot AlwaysOn op de Windows-server, vereist de Linux-implementatie geen domeincontroller. Voor authenticatie en communicatie tussen primaire en secundaire replica's gebruikt het het certificaat.

Het volgende script maakt een certificaat en een hoofdsleutel. Vervolgens maakt het een back-up van het certificaat en beveiligt het met een wachtwoord.

Maak verbinding met LinuxSQL01 en voer het volgende script uit:

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'
       );

Zodra we het certificaat en de hoofdsleutel hebben gemaakt, kopiëren we ze naar secundaire replica's (LinuxSQL02 en LinuxSQL03) door de onderstaande opdracht uit te voeren.

Zorg ervoor dat de hoofdsleutel en de locatie van het certificaat op alle replica's hetzelfde zijn en lees-schrijfrechten hebben.

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

Voer de volgende opdracht uit op secundaire knooppunten om lees-schrijfrechten te verlenen voor het certificaat en de persoonlijke sleutel:

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

Zodra de toestemming is toegewezen, maken we het certificaat en de hoofdsleutel met behulp van de back-up van het certificaat en de hoofdsleutel die zijn gemaakt op LinuxSQL01.

Voer hiervoor het volgende commando uit op beide secundaire replica's:

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'
            );

Zodra we het certificaat en de hoofdsleutel hebben gemaakt, zullen we de database-mirroringpunten configureren.

Maak de mirroring-eindpunten

Om te communiceren tussen de primaire en secundaire replica's, gebruikt SQL Server spiegelende eindpunten.

Een mirroring-endpoint gebruikt het TCP/IP-protocol om berichten van primaire en secundaire replica's te verzenden en te ontvangen en luistert op een unieke TCP/IP-poort.

Voer het volgende script uit om een ​​eindpunt op primaire en secundaire knooppunten te maken:

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

Zodra de spiegelpunten zijn gemaakt, kunnen we een beschikbaarheidsgroep maken.

Beschikbaarheidsgroep maken

We gaan AlwaysON configureren met SQL Server Management Studio.

Start het eerst en maak verbinding met de LinuxSQL01-instantie met behulp van sa referenties. Eenmaal verbonden met de SQL Server-instantie, klikt u met de rechtermuisknop op Always On High Availability en selecteer de wizard Nieuwe beschikbaarheidsgroep .

De Beschikbaarheidsgroepwizard begint.

1. Inleiding

In een Inleiding scherm, zie de takenlijst die zal worden uitgevoerd door de wizard beschikbaarheidsgroep. Klik op Volgende.

2. Specificeer de optie Beschikbaarheidsgroep

Geef op het scherm Beschikbaarheidsgroepoptie specificeren de gewenste naam van de beschikbaarheidsgroep op en kies EXTERN van het Clustertype vervolgkeuzemenu.

Zet ook een vinkje voor de Database Level Health Detection selectievakje. Het maakt de uitgebreide gebeurtenissessie mogelijk voor de beschikbaarheid van groepsgezondheid.

3. Selecteer databases

U kunt de database kiezen die u wilt toevoegen aan de beschikbaarheidsgroep op de Databases selecteren scherm. Opmerking:de database moet aan de volgende vereisten voldoen:

  1. De database moet het VOLLEDIGE herstelmodel hebben.
  2. Er moet een VOLLEDIGE back-up van de database worden gemaakt.

Ik heb een back-up teruggezet van de WideWorldImportors database op de primaire replica. De database is in VOL herstelmodel en er is een volledige back-up gegenereerd.

Selecteer de WideWorldImportors database uit de lijst en klik op Volgende .

4. Replica's specificeren

Op de Specificeer replica's scherm hebben we verschillende tabbladen om verschillende opties te configureren. Laten we ze allemaal bekijken.

Tabblad Replica's

Hier specificeren we de primaire en secundaire replica's, beschikbaarheidsmodus en failover-modi.

We gebruiken LinuxSQL01 als een primaire replica. LinuxSQL02 en LinuxSQL03 zijn een secundaire replica.

De beschikbaarheidsmodus voor LinuxSQL02 zal zijn Synchroon commit , en voor LinuxSQL03 zal zijn Asynchrone commit .

Om de replica toe te voegen, klikt u op Replica toevoegen . Vervolgens, op Verbinden met de server dialoogvenster, geef de servernaam en SQL-aanmeldingsgegevens op om verbinding te maken met de instantie:

Tabblad Eindpunten

Hier kunnen we de lijst met replica's en hun mirroring-eindpunten bekijken met bijbehorende poortnummers en namen:

Back-upvoorkeuren

Hier geeft u de replica op die u wilt gebruiken om de back-up te genereren. Deze optie is handig als u het back-upproces van de SQL-database binnen de beschikbaarheidsgroep wilt offloaden.

U kunt een van de volgende opties kiezen:

  1. Voorkeur secundair:er wordt een back-up gemaakt op de secundaire replica. Als de secundaire replica niet beschikbaar is, wordt de back-up gegenereerd op de primaire replica.
  2. Alleen secundair:alle back-ups worden gegenereerd op de secundaire replica.
  3. Primair:er worden back-ups gemaakt op de primaire replica.
  4. Elke replica:er wordt een back-up gemaakt van alle replica's.

We gebruiken de Prefer Secondary optie:

Luisteraar

De beschikbaarheidsgroeplistener is een virtuele naam die door een toepassing wordt gebruikt om verbinding te maken met de beschikbaarheidsgroepdatabases. Geef de DNS-naam van de luisteraar en de poort op in DNS-naam van de luisteraar en Poort tekstvakken.

Selecteer Statisch IP vanuit de Netwerkmodus vervolgkeuzemenu.

Om het IP-adres voor de beschikbaarheidsgroeplistener toe te voegen, klikt u op Toevoegen >Voer in IP-adres en subnetmasker .

Alleen-lezen routering

Hier kunt u de Alleen-lezen routerings-URL . opgeven en Alleen-lezen routeringslijst voor primaire en secundaire replica's.

We zullen in onze demonstratie geen alleen-lezen routering configureren. Klik daarom op Volgende. Voor meer informatie over alleen-lezen routering kunt u alleen-lezen routering voor altijd aan raadplegen.

Laten we nu teruggaan naar het hoofdproces waaraan we werken.

5. Selecteer initiële gegevenssynchronisatie

Op de Selecteer initiële gegevenssynchronisatie scherm, stelt u uw voorkeuren in voor de initiële gegevenssynchronisatie. Details van elke optie vindt u op het wizardscherm en u kunt er een kiezen:

  1. Automatisch zaaien.
  2. Volledige database en logback-up.
  3. Alleen lid worden.
  4. Sla de initiële gegevenssynchronisatie over.

Ik heb de WideWorldImportors . niet gemaakt database op LinuxSQL02 en LinuxSQL03 replica, selecteer de Automatic seeding optie. Het zal de database op beide replica's maken en de gegevenssynchronisatie starten. Klik op Volgende.

6. Validatie en samenvatting

Op de Validatie scherm valideert de wizard alle configuraties.

Als u de AlwaysOn-beschikbaarheidsgroep met succes wilt implementeren, moet alle validatie zijn geslaagd. Als er een fout is, moet u deze oplossen.

Op de Samenvatting scherm ziet u de lijst met configuraties die zijn gekozen om de beschikbaarheidsgroep te implementeren.

Bekijk de details nog een keer en klik op Voltooien – het start het implementatieproces.

Als u het script van het implementatieproces wilt genereren, klikt u op Script .

Zoals we zien, begint het AlwaysOn-implementatieproces. Zodra het succesvol is voltooid, klikt u op Sluiten om de wizard af te sluiten.

Zo is de implementatie van de AlwaysOn-beschikbaarheidsgroep op SQL Server 2019 voltooid.

Samenvatting

Dit artikel helpt ons het stapsgewijze implementatieproces van de SQL Server AlwaysOn-beschikbaarheidsgroep op Linux te begrijpen.

In het volgende artikel wordt uitgelegd hoe we de listener van de beschikbaarheidsgroep kunnen configureren en handmatige failover kunnen uitvoeren met behulp van SQL Server Management Studio. Blijf op de hoogte!


  1. Is het hebben van een 'OF' in een INNER JOIN-conditie een slecht idee?

  2. Oracle-indexen en soorten indexen in orakel met voorbeeld

  3. Een gids voor PubNub-functies

  4. DATEDIFF_BIG() Voorbeelden in SQL Server