Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server Linux rendszeren
Ez a cikk azt ismerteti, hogyan hozhat létre SQL Server Always On Rendelkezésre állási csoportot (AG) Linux fürtkezelő nélkül. Ez az architektúra kizárólag olvasási skálázást tesz lehetővé. nem biztosít magas rendelkezésre állást.
A rendelkezésre állási csoportok kétféle architektúrával érhetők el. A magas rendelkezésre állású architektúrája egy fürtkezelő használ a jobb üzletmenet-folytonosság érdekében. A magas rendelkezésre állású architektúra létrehozásához tekintse meg Az SQL Server Always On rendelkezésre állási csoport konfigurálása linuxosmagas rendelkezésre álláshoz.
A CLUSTER_TYPE = NONE rendelkező rendelkezésre állási csoportok különböző operációsrendszer-platformokon üzemeltetett replikákat is tartalmazhatnak. Nem támogatja a magas rendelkezésre állást.
Előfeltételek
A rendelkezésre állási csoport létrehozása előtt a következőt kell elvégeznie:
- Állítsa be a környezetet, hogy a rendelkezésre állási replikákat üzemeltető kiszolgálók kommunikálhassanak.
- Telepítse az SQL Servert.
Linuxon létre kell hoznia egy rendelkezésre állási csoportot, mielőtt azt fürterőforrásként hozzáadja a fürt felügyeletéhez. Ez a dokumentum egy példát mutat be, amely létrehozza a rendelkezésre állási csoportot.
Frissítse az egyes kiszolgálók gépnevét.
Minden SQL Server-példány nevének a következőnek kell lennie:
- 15 karakter vagy kevesebb.
- A hálózaton belül egyedi.
A számítógép nevének beállításához szerkessze
/etc/hostname. A következő szkripttel szerkesztheti/etc/hostnamevi:sudo vi /etc/hostnameKonfigurálja a hosts fájlt.
Jegyzet
Ha a gazdagépnevek az IP-címükkel vannak regisztrálva a DNS-kiszolgálón, nem kell elvégeznie az alábbi lépéseket. Ellenőrizze, hogy a rendelkezésre állási csoport konfigurációjának részét képező összes csomópont képes-e kommunikálni egymással. (A gazdagépnév pingelésének a megfelelő IP-címmel kell válaszolnia.) Győződjön meg arról is, hogy a
/etc/hostsfájl nem tartalmaz olyan rekordot, amely összekapcsolja a localhost IP-címét, a 127.0.0.1-et, a csomópont gazdagépnevével.A hosts fájl minden kiszolgálón felsorolja a rendelkezésre állási csoportban részt vevő összes kiszolgáló IP-címét és nevét.
A következő parancs az aktuális kiszolgáló IP-címét adja vissza:
sudo ip addr show/etc/hostsfrissítése. A következő szkripttel szerkesztheti/etc/hostsvi:sudo vi /etc/hostsAz alábbi példa a
/etc/hosts-t mutatja be anode1-en, anode1,node2ésnode3kiegészítéseivel. Ebben a mintában anode1az elsődleges replikát üzemeltető kiszolgálóra hivatkozik,node2ésnode3pedig a másodlagos replikákat üzemeltető kiszolgálókra hivatkozik.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.12 node1 10.128.16.77 node2 10.128.15.33 node3
Az SQL Server telepítése
Telepítse az SQL Servert. Az alábbi hivatkozások az SQL Server különböző disztribúciók telepítési utasításaira mutatnak:
- rövid útmutató: Az SQL Server telepítése és adatbázis létrehozása a Red Hat
- rövid útmutató: Az SQL Server telepítése és adatbázis létrehozása a SUSE Linux Enterprise Server
- rövid útmutató: Az SQL Server telepítése és adatbázis létrehozása az Ubuntu
Always On rendelkezésre állási csoportok engedélyezése
Engedélyezze az Always On rendelkezésre állási csoportokat az SQL Server-példányt futtató csomópontokhoz, majd indítsa újra mssql-server. Futtassa a következő szkriptet:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server
AlwaysOn_health esemény munkamenetének engedélyezése
Opcionálisan engedélyezheti a kiterjesztett eseményeket (XE) a kiváltó okok diagnosztizálásához a rendelkezésre állási csoport hibaelhárítása során. Futtassa a következő parancsot az SQL Server minden egyes példányán:
ALTER EVENT SESSION AlwaysOn_health ON SERVER
WITH
(
STARTUP_STATE = ON
);
GO
További információ az XE-munkamenetről: Bővített események konfigurálása rendelkezésre állási csoportokhoz.
Tanúsítvány létrehozása
A Linuxon futó SQL Server szolgáltatás tanúsítványokkal hitelesíti a tükrözési végpontok közötti kommunikációt.
Az alábbi Transact-SQL szkript létrehoz egy főkulcsot és egy tanúsítványt. Ezután biztonsági másolatot készít a tanúsítványról, és titkos kulccsal védi a fájlt. Frissítse a szkriptet erős jelszavakkal. Csatlakozzon az elsődleges SQL Server-példányhoz. A tanúsítvány létrehozásához futtassa a következő Transact-SQL szkriptet:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';
CREATE CERTIFICATE dbm_certificate
WITH SUBJECT = 'dbm';
BACKUP CERTIFICATE dbm_certificate
TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
WITH PRIVATE KEY (
FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
ENCRYPTION BY PASSWORD = '<private-key-password>'
);
Ezen a ponton az elsődleges SQL Server-replika rendelkezik egy tanúsítvánnyal /var/opt/mssql/data/dbm_certificate.cer és egy titkos kulccsal a var/opt/mssql/data/dbm_certificate.pvk. Másolja ezt a két fájlt ugyanarra a helyre az összes olyan kiszolgálón, amely rendelkezésre állási replikákat fog üzemeltetni. Használja az mssql-felhasználót, vagy adjon engedélyt az mssql-felhasználónak a fájlok elérésére.
A forráskiszolgálón például a következő parancs másolja a fájlokat a célgépre. Cserélje le a <node2> értékeket a replikákat üzemeltető SQL Server-példányok nevére.
cd /var/opt/mssql/data
scp dbm_certificate.* root@<node2>:/var/opt/mssql/data/
Minden célkiszolgálón adjon engedélyt az mssql-felhasználónak a tanúsítvány eléréséhez.
cd /var/opt/mssql/data
chown mssql:mssql dbm_certificate.*
Tanúsítvány létrehozása másodlagos kiszolgálókon
Az alábbi Transact-SQL szkript létrehoz egy főkulcsot és egy tanúsítványt az elsődleges SQL Server-replikán létrehozott biztonsági másolatból. Frissítse a szkriptet erős jelszavakkal. A visszafejtési jelszó ugyanaz a jelszó, amelyet a .pvk fájl előző lépésben történő létrehozásához használt. A tanúsítvány létrehozásához futtassa a következő szkriptet az összes másodlagos kiszolgálón:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';
CREATE CERTIFICATE dbm_certificate
FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
WITH PRIVATE KEY (
FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
DECRYPTION BY PASSWORD = '<private-key-password>'
);
Az előző példában cserélje le <private-key-password> ugyanazzal a jelszóval, amelyet a tanúsítvány elsődleges replikán való létrehozásakor használt.
Az adatbázis tükrözési végpontjának létrehozása az összes replikán
Az adatbázis-tükrözési végpontok a Transmission Control Protocol (TCP) használatával küldenek és fogadnak üzeneteket az adatbázis-tükrözési munkamenetekben részt vevő kiszolgálópéldányok vagy a gazdagép rendelkezésre állási replikái között. Az adatbázis tükrözési végpontja egy egyedi TCP-portszámon figyel.
Az alábbi Transact-SQL szkript létrehoz egy Hadr_endpoint nevű figyelési végpontot a rendelkezésre állási csoport számára. Elindítja a végpontot, és csatlakozási engedélyt ad a létrehozott tanúsítványhoz. A szkript futtatása előtt cserélje le a < ... >közötti értékeket. Opcionálisan megadhat egy IP-címet LISTENER_IP = (0.0.0.0). A figyelő IP-címének IPv4-címnek kell lennie. A 0.0.0.0is használható.
Frissítse az alábbi Transact-SQL szkriptet az Ön környezetéhez minden SQL Server példányon.
CREATE ENDPOINT [Hadr_endpoint]
AS TCP
(
LISTENER_PORT = 5022
)
FOR DATABASE_MIRRORING
(
ROLE = ALL,
AUTHENTICATION = CERTIFICATE dbm_certificate,
ENCRYPTION = REQUIRED ALGORITHM AES
);
ALTER ENDPOINT [Hadr_endpoint]
STATE = STARTED;
Jegyzet
Ha az SQL Server Express kiadást egy csomóponton használja egy csak konfigurációs replika üzemeltetéséhez, a ROLE egyetlen érvényes értéke WITNESS. Futtassa a következő szkriptet az SQL Server Express kiadásban:
CREATE ENDPOINT [Hadr_endpoint]
AS TCP
(
LISTENER_PORT = 5022
)
FOR DATABASE_MIRRORING
(
ROLE = WITNESS,
AUTHENTICATION = CERTIFICATE dbm_certificate,
ENCRYPTION = REQUIRED ALGORITHM AES
);
ALTER ENDPOINT [Hadr_endpoint]
STATE = STARTED;
A tűzfal TCP-portjának nyitva kell lennie a figyelőport számára.
Fontos
Az egyetlen hitelesítési módszer, amelyet az adatbázistükrözési végpont támogat, a CERTIFICATE. A WINDOWS lehetőség nem érhető el.
További információ: Az adatbázis tükrözési végpontja (SQL Server).
A rendelkezésre állási csoport létrehozása
Hozza létre az AG-t.
CLUSTER_TYPE = NONEbeállítása. Emellett állítsa be az egyes replikákat FAILOVER_MODE = MANUAL. Az elemzési vagy jelentéskészítési számítási feladatokat futtató ügyfélalkalmazások közvetlenül csatlakozhatnak a másodlagos adatbázisokhoz. Írásvédett útválasztási listát is létrehozhat. Az elsődleges replikával való kapcsolatok körkörös módon továbbítják az olvasási kapcsolatkéréseket az útválasztási listáról a másodlagos replikákhoz.
A következő Transact-SQL szkript létrehoz egy ag1nevű AG-t. A szkript SEEDING_MODE = AUTOMATIC-val konfigurálja az AG-replikákat. Ez a beállítás azt eredményezi, hogy az SQL Server automatikusan létrehozza az adatbázist minden másodlagos kiszolgálón, miután hozzáadta az AG-hez. Frissítse a következő szkriptet a környezetéhez. Cserélje le a <node1> és <node2> értékeket a replikákat üzemeltető SQL Server-példányok nevére. Cserélje le a <5022> értéket a végponthoz beállított portra. Futtassa a következő Transact-SQL szkriptet az elsődleges SQL Server-replikán:
CREATE AVAILABILITY GROUP [ag1]
WITH (CLUSTER_TYPE = NONE)
FOR REPLICA ON
N'<node1>' WITH (
ENDPOINT_URL = N'tcp://<node1>:<5022>',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
),
N'<node2>' WITH (
ENDPOINT_URL = N'tcp://<node2>:<5022>',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
);
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
Másodlagos SQL Server-példányok csatlakoztatása az AG-hez
Az alábbi Transact-SQL szkript csatlakozik egy kiszolgálóhoz egy ag1nevű AG-hez. Frissítse a környezet szkriptét. Minden másodlagos SQL Server-replikán futtassa a következő Transact-SQL szkriptet az AG-hez való csatlakozáshoz:
ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
Adatbázis hozzáadása a rendelkezésre állási csoporthoz
Győződjön meg arról, hogy a rendelkezésre állási csoporthoz hozzáadott adatbázis a teljes helyreállítási modellben található, és érvényes napló biztonsági mentéssel rendelkezik. Ha az adatbázis tesztadatbázis vagy újonnan létrehozott adatbázis, készítsen biztonsági másolatot az adatbázisról. Az elsődleges SQL Serveren futtassa a következő Transact-SQL (T-SQL) szkriptet egy db1nevű adatbázis létrehozásához és biztonsági mentéséhez:
CREATE DATABASE [db1];
GO
ALTER DATABASE [db1]
SET RECOVERY FULL;
GO
BACKUP DATABASE [db1]
TO DISK = N'/var/opt/mssql/data/db1.bak';
Az elsődleges SQL Server-replikán futtassa a következő T-SQL-szkriptet egy db1 nevű adatbázis hozzáadásához egy ag1nevű rendelkezésre állási csoporthoz:
ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];
Ellenőrizze, hogy az adatbázis a másodlagos kiszolgálókon van-e létrehozva
Minden másodlagos SQL Server-replikán futtassa a következő lekérdezést annak megtekintéséhez, hogy a db1 adatbázis létrejött-e, és szinkronizálva van-e:
SELECT *
FROM sys.databases
WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database',
synchronization_state_desc
FROM sys.dm_hadr_database_replica_states;
GO
Ez az AG nem magas rendelkezésre állású konfiguráció. Ha magas rendelkezésre állásra van szüksége, kövesse az Sql Server Always On rendelkezésre állási csoport linuxosmagas rendelkezésre állásának konfigurálását ismertető cikket. Pontosabban, hozza létre az AG-t CLUSTER_TYPE=WSFC (Windowsban) vagy CLUSTER_TYPE=EXTERNAL (Linuxon). Ezután integrálhat egy fürtkezelővel, akár a Windows Server feladatátvételi klaszterezését használva Windowson, akár a Pacemakert Linuxon.
Csatlakozás írásvédett másodlagos adatbázis-replikákhoz
Kétféleképpen csatlakozhat olvasási joggal rendelkező másodlagos replikákhoz. Az alkalmazások közvetlenül csatlakozhatnak a másodlagos replikát üzemeltető SQL Server-példányhoz, és lekérdezhetik az adatbázisokat. Írásvédett útválasztást is használhatnak, amelyhez hallgató szükséges.
- Írásvédett számítási feladat átiranyítása a Always On rendelkezésre állási csoport másodlagos replikájára
- írásvédett útválasztás
Az elsődleges replika feladatátvétele olvasási skálázású AG-n
Minden rendelkezésre állási csoport csak egy elsődleges replikával rendelkezik. Az elsődleges replika olvasást és írást tesz lehetővé. Az elsődleges replika módosításához végezzen átkapcsolást. Egy tipikus rendelkezésre állási csoportban a fürtkezelő automatizálja a feladatátvételi folyamatot. A NINCS típusú rendelkezésre állási csoportban a feladatátvételi folyamat manuális.
Az elsődleges replika átvétele két módon történhet egy olyan rendelkezésre állási csoportban, ahol a fürt típusa NINCS:
- Manuális átkapcsolás adatvesztés nélkül
- Kényszerített manuális átkapcsolás adatvesztéssel
Manuális átkapcsolás adatvesztés nélkül
Ezt a módszert akkor használja, ha az elsődleges replika elérhető, de ideiglenesen vagy véglegesen módosítania kell, hogy melyik példány tárolja az elsődleges replikát. A lehetséges adatvesztés elkerülése érdekében, mielőtt végrehajtja a manuális feladatátvitelt, győződjön meg arról, hogy a cél másodlagos replika naprakész.
Manuális feladatátvétel adatvesztés nélkül:
Állítsa be az aktuális elsődlegest és a célt másodlagos replikának
SYNCHRONOUS_COMMIT.ALTER AVAILABILITY GROUP [AGRScale] MODIFY REPLICA ON N'<node2>' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);Annak az ellenőrzésére, hogy az aktív tranzakciók elkötelezettek-e az elsődleges replikához és legalább egy szinkron másodlagos replikához, futtassa a következő lekérdezést:
SELECT ag.name, drs.database_id, drs.group_id, drs.replica_id, drs.synchronization_state_desc, ag.sequence_number FROM sys.dm_hadr_database_replica_states drs, sys.availability_groups ag WHERE drs.group_id = ag.group_id;A másodlagos replika akkor lesz szinkronizálva, ha
synchronization_state_descSYNCHRONIZED.Frissítse a
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT1-re.Az alábbi szkript beállítja a
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT-t 1-re egyag1nevű rendelkezésre állási csoporton. A következő szkript futtatása előtt cserélje leag1a rendelkezésre állási csoport nevére:ALTER AVAILABILITY GROUP [AGRScale] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);Ez a beállítás biztosítja, hogy minden aktív tranzakció az elsődleges replikához és legalább egy szinkron másodlagos replikához legyen lekötve.
Jegyzet
Ez a beállítás nem a feladatátvételre vonatkozik, és a környezet követelményeinek megfelelően kell beállítani.
Állítsa be az elsődleges replikát és a másodlagos replikát, amely nem vesz részt a feladatátvételben offline állapotban, hogy felkészüljön a szerepkör módosítására:
ALTER AVAILABILITY GROUP [AGRScale] OFFLINEA másodlagos célreplika előléptetése elsődlegesre.
ALTER AVAILABILITY GROUP AGRScale FORCE_FAILOVER_ALLOW_DATA_LOSS;Frissítse a régi elsődleges és más másodpéldányok szerepkörét
SECONDARY, futtassa a következő parancsot a régi elsődleges replikát futtató SQL Server-példányon:ALTER AVAILABILITY GROUP [AGRScale] SET (ROLE = SECONDARY);Jegyzet
Rendelkezésre állási csoport törléséhez használja DROP AVAILABILITY GROUP. A NINCS vagy KÜLSŐ típusú fürttípussal létrehozott rendelkezésre állási csoport esetén hajtsa végre a parancsot a rendelkezésre állási csoport részét képező összes replikán.
Folytassa az adatáthelyezést, futtassa a következő parancsot az elsődleges replikát üzemeltető SQL Server-példány rendelkezésre állási csoportjának összes adatbázisához:
ALTER DATABASE [db1] SET HADR RESUMEHozzon létre újra minden olyan figyelőt, amelyet olvasási skálázás céljából hozott létre, és amelyet nem a fürtkezelő felügyel. Ha az eredeti figyelő a régi elsődlegesre mutat, hagyja el, és hozza létre újra, hogy az új elsődlegesre mutasson.
Kényszerített manuális átkapcsolás adatvesztéssel
Ha az elsődleges replika nem érhető el, és nem állítható helyre azonnal, akkor kénytelen adatvesztéssel átállni a másodlagos replikára. Ha azonban az eredeti elsődleges replika helyreáll a feladatátvétel után, akkor átveszi az elsődleges szerepkört. Annak elkerülése érdekében, hogy minden replika más állapotban legyen, távolítsa el az eredeti primert a rendelkezésre állási csoportból egy adatvesztéssel járó kényszerített feladatátvétel után. Miután az eredeti elsődleges ismét online állapotba kerül, távolítsa el a rendelkezésre állási csoportot teljesen.
Ha az N1 elsődleges replikáról az N2 másodlagos replikára adatvesztéssel járó manuális áttérést szeretne végrehajtani vagy kényszeríteni, kövesse az alábbi lépéseket:
Az N2 másodlagos replikán indítsa el a kényszerített átállást:
ALTER AVAILABILITY GROUP [AGRScale] FORCE_FAILOVER_ALLOW_DATA_LOSS;Az új elsődleges replikán (N2) távolítsa el az eredeti elsődleges (N1) elemet:
ALTER AVAILABILITY GROUP [AGRScale] REMOVE REPLICA ON N'N1';Ellenőrizze, hogy az összes alkalmazásforgalom a figyelőre és/vagy az új elsődleges replikára van-e irányítva.
Ha az eredeti elsődleges (N1) online állapotba kerül, azonnal kapcsolja offline állapotba az AGRScale rendelkezésre állási csoportot az eredeti elsődlegesen (N1):
ALTER AVAILABILITY GROUP [AGRScale] OFFLINEHa vannak adatok vagy nem aszinkron módosítások, őrizze meg ezeket az adatokat biztonsági másolatokkal vagy más, az üzleti igényeinek megfelelő adatreplikálási lehetőségekkel.
Ezután távolítsa el a rendelkezésre állási csoportot az eredeti elsődlegesből (N1):
DROP AVAILABILITY GROUP [AGRScale];Az eredeti elsődleges replikán (N1) található rendelkezésre állási csoport adatbázisának törlése:
USE [master] GO DROP DATABASE [AGDBRScale] GO(Nem kötelező) Ha szükséges, most már hozzáadhatja az N1-et új másodlagos replikaként az AGRScale rendelkezésre állási csoporthoz.