Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server di Linux
Tutorial ini menunjukkan cara membuat dan mengonfigurasi grup ketersediaan (AG) untuk SQL Server di Linux. Tidak seperti SQL Server 2016 (13.x) dan versi yang lebih lama di Windows, Anda dapat mengaktifkan AG dengan atau tanpa membuat kluster Pacemaker yang mendasarinya terlebih dahulu. Integrasi dengan kluster, jika diperlukan, terjadi nanti.
Tutorial ini mencakup tugas-tugas berikut:
- Aktifkan grup ketersediaan.
- Buat titik akhir dan sertifikat untuk grup ketersediaan.
- Gunakan SQL Server Management Studio (SSMS) atau Transact-SQL untuk membuat grup ketersediaan.
- Buat login dan izin SQL Server untuk Pacemaker.
- Buat sumber daya grup ketersediaan di kluster Pacemaker (Hanya jenis eksternal).
Prasyarat
Terapkan klaster ketersediaan tinggi Pacemaker. Untuk informasi lebih lanjut, lihat Deploy a Pacemaker cluster for SQL Server on Linux.
Mengaktifkan fitur grup ketersediaan
Tidak seperti di Windows, Anda tidak dapat menggunakan PowerShell atau Pengelola Konfigurasi SQL Server untuk mengaktifkan fitur grup ketersediaan (AG). Di Linux, Anda dapat mengaktifkan fitur grup ketersediaan dengan dua cara: gunakan mssql-conf utilitas, atau edit mssql.conf file secara manual.
Important
Anda harus mengaktifkan fitur AG untuk replika khusus konfigurasi, bahkan di SQL Server Express.
Gunakan mssql-conf utilitas
Pada prompt, jalankan perintah berikut:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
Mengedit file mssql.conf
Anda juga dapat mengubah file mssql.conf, yang terletak di bawah folder /var/opt/mssql. Tambahkan baris berikut:
[hadr]
hadr.hadrenabled = 1
Mulai ulang SQL Server
Setelah mengaktifkan grup ketersediaan, Anda harus memulai ulang SQL Server. Gunakan perintah berikut:
sudo systemctl restart mssql-server
Membuat titik akhir dan sertifikat grup ketersediaan
Grup ketersediaan menggunakan titik akhir TCP untuk komunikasi. Di bawah Linux, SQL Server mendukung titik akhir untuk AG hanya jika Anda menggunakan sertifikat untuk autentikasi. Anda harus memulihkan sertifikat dari satu instans pada semua instans lain yang berpartisipasi sebagai replika dalam AG yang sama. Anda memerlukan proses sertifikat bahkan untuk replika yang hanya untuk konfigurasi.
Anda hanya dapat membuat endpoint dan memulihkan sertifikat menggunakan Transact-SQL. Anda juga dapat menggunakan sertifikat yang dihasilkan non-SQL Server. Anda juga memerlukan proses untuk mengelola dan mengganti sertifikat apa pun yang kedaluwarsa.
Important
Jika Anda berencana menggunakan wizard SQL Server Management Studio untuk membuat AG, Anda masih perlu membuat dan memulihkan sertifikat dengan menggunakan Transact-SQL di Linux.
Untuk sintaks penuh pada opsi yang tersedia untuk berbagai perintah (termasuk keamanan), lihat:
Note
Meskipun Anda membuat grup ketersediaan, jenis endpoint menggunakan FOR DATABASE_MIRRORING, karena tipe endpoint tersebut berbagi aspek dasar dengan fitur yang kini sudah tidak digunakan lagi.
Contoh ini membuat sertifikat untuk konfigurasi tiga simpul. Nama instansnya adalah LinAGN1, LinAGN2, dan LinAGN3.
Jalankan skrip berikut di
LinAGN1untuk membuat kunci master, sertifikat, dan endpoint, serta mencadangkan sertifikat. Untuk contoh ini, endpoint menggunakan port TCP tipikal 5022.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN1_Cert WITH SUBJECT = 'LinAGN1 AG Certificate'; GO BACKUP CERTIFICATE LinAGN1_Cert TO FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN1_Cert, ROLE = ALL ); GOLakukan hal yang sama pada
LinAGN2:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN2_Cert WITH SUBJECT = 'LinAGN2 AG Certificate'; GO BACKUP CERTIFICATE LinAGN2_Cert TO FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN2_Cert, ROLE = ALL ); GOTerakhir, lakukan urutan yang sama pada
LinAGN3:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN3_Cert WITH SUBJECT = 'LinAGN3 AG Certificate'; GO BACKUP CERTIFICATE LinAGN3_Cert TO FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN3_Cert, ROLE = ALL ); GOGunakan
scpatau utilitas lain untuk menyalin cadangan sertifikat ke setiap node yang ingin Anda gabungkan dalam AG.Untuk contoh ini:
- Salin
LinAGN1_Cert.cerkeLinAGN2danLinAGN3. - Salin
LinAGN2_Cert.cerkeLinAGN1danLinAGN3. - Salin
LinAGN3_Cert.cerkeLinAGN1danLinAGN2.
- Salin
Ubah kepemilikan dan grup yang terkait dengan file sertifikat yang disalin menjadi
mssql.sudo chown mssql:mssql <CertFileName>Buat login tingkat instans dan pengguna yang terkait dengan
LinAGN2danLinAGN3diLinAGN1.CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GOCaution
Kata sandi Anda harus mengikuti kebijakan password default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
Pulihkan
LinAGN2_CertdanLinAGN3_CertpadaLinAGN1. Sertifikat replika lainnya sangat penting untuk komunikasi dan keamanan AG.CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GOBerikan login yang terkait dengan
LinAGN2danLinAGN3izin untuk menyambungkan ke titik akhir diLinAGN1.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;Buat login tingkat instans dan pengguna yang terkait dengan
LinAGN1danLinAGN3diLinAGN2.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GOPulihkan
LinAGN1_CertdanLinAGN3_CertpadaLinAGN2.CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GOBerikan login yang terkait dengan
LinAGN1danLinAGN3izin untuk menyambungkan ke titik akhir diLinAGN2.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GOBuat login tingkat instans dan pengguna yang terkait dengan
LinAGN1danLinAGN2diLinAGN3.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GOPulihkan
LinAGN1_CertdanLinAGN2_CertpadaLinAGN3.CREATE CERTIFICATE LinAGN1_Cert AUTHORIZATION LinAGN1_User FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GOBerikan login yang terkait dengan
LinAGN1danLinAGN2izin untuk menyambungkan ke titik akhir diLinAGN3.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
Membuat grup ketersediaan
Bagian ini menunjukkan cara menggunakan SQL Server Management Studio (SSMS) atau Transact-SQL untuk membuat grup ketersediaan untuk SQL Server.
Gunakan SQL Server Management Studio
Bagian ini menunjukkan cara membuat AG dengan tipe klaster Eksternal menggunakan SSMS dengan Wizard Grup Ketersediaan Baru.
Di SSMS, perluas Always On High Availability, klik kanan Grup Ketersediaan, dan pilih Wizard Grup Ketersediaan Baru.
Pada dialog Pendahuluan , pilih Berikutnya.
Dalam dialog Tentukan Opsi Grup Ketersediaan, masukkan nama untuk AG, dan pilih jenis
EXTERNALkluster atauNONEdi daftar drop-down. GunakanEXTERNALsaat Anda menyebarkan Pacemaker. GunakanNONEuntuk skenario khusus, seperti peluasan skala baca. Memilih opsi untuk deteksi kesehatan tingkat database bersifat opsional. Untuk informasi selengkapnya tentang opsi ini, lihat Opsi failover deteksi kesehatan tingkat database grup ketersediaan. Pilih Selanjutnya.Di dialog Select Databases , pilih database yang ingin Anda ikuti dalam AG. Setiap database harus memiliki cadangan penuh sebelum Anda dapat menambahkannya ke AG. Pilih Selanjutnya.
Di dialog Tentukan Replika , pilih Tambah Replika.
Di dialog Connect to Server, masukkan nama instance Linux SQL Server untuk replika sekunder, dan kredensial untuk terhubung. Pilih Sambungkan.
Ulangi dua langkah sebelumnya untuk instans yang akan berisi replika khusus konfigurasi atau replika sekunder lainnya.
Ketiga instance tersebut muncul di dialog Tentukan Replika . Jika Anda menggunakan tipe cluster External, untuk replika sekunder yang benar-benar sekunder, pastikan mode ketersediaan sesuai dengan replika utama dan atur mode failover ke External. Untuk replika konfigurasi saja, pilih Mode Ketersediaan 'Konfigurasi Saja'.
Contoh berikut menunjukkan AG dengan dua replika, jenis kluster Eksternal, dan replika khusus konfigurasi.
Contoh berikut menunjukkan AG dengan dua replika, jenis kluster Tidak Ada, dan replika khusus konfigurasi.
Jika Anda ingin mengubah preferensi cadangan, pilih tab Preferensi Cadangan . Untuk informasi lebih lanjut tentang preferensi backup dengan AG, lihat Konfigurasikan backup pada replika sekunder dari grup availability Always On.
Jika Anda menggunakan sekunder yang dapat dibaca atau membuat AG dengan jenis kluster None untuk skala baca, Anda dapat membuat pendengar dengan memilih tab Listener: Anda juga dapat menambahkan pendengar nanti. Untuk membuat pendengar, pilih opsi Buat pendengar grup ketersediaan dan masukkan nama, port TCP/IP, serta apakah menggunakan alamat IP DHCP statis atau otomatis ditetapkan. Untuk AG dengan tipe klaster None, gunakan IP statis yang sesuai dengan alamat IP utama.
Jika Anda membuat listener untuk skenario yang dapat dibaca, SSMS memungkinkan pembuatan routing hanya-baca di wizard. Anda juga dapat menambahkannya nanti dengan menggunakan SSMS atau Transact-SQL. Untuk menambahkan perutean baca-saja sekarang:
Pilih tab Read-Only Routing .
Masukkan URL untuk replika baca-saja. URL ini mirip dengan titik akhir, kecuali url tersebut menggunakan port instans, bukan titik akhir.
- Pilih setiap URL dan dari bawah, pilih replika yang dapat dibaca. Untuk memilih beberapa, tahan Shift atau pilih-seret.
Pilih Selanjutnya.
Pilih cara menginisialisasi replika sekunder. Defaultnya adalah menggunakan seeding otomatis, yang memerlukan jalur yang sama di semua server yang berpartisipasi dalam AG. Anda juga dapat meminta wizard melakukan pencadangan, penyalinan, dan pemulihan (opsi kedua); minta bergabung jika Anda mencadangkan, menyalin, dan memulihkan database secara manual pada replika (opsi ketiga); atau tambahkan database nanti (opsi terakhir). Seperti halnya sertifikat, jika Anda membuat cadangan dan menyalinnya secara manual, atur izin pada file cadangan pada replika lain. Pilih Selanjutnya.
Pada dialog Validasi , jika wizard tidak mengembalikan Sukses untuk semua pemeriksaan, selidiki lebih lanjut. Peringatan tertentu dapat diterima dan tidak fatal, seperti jika Anda tidak membuat penerima pesan. Pilih Selanjutnya.
Pada dialog Ringkasan , pilih Selesai. Proses untuk membuat AG sekarang dimulai.
Setelah pembuatan AG selesai, pilih Tutup pada halaman Hasil . Anda sekarang dapat melihat AG pada replika dalam tampilan manajemen dinamis, dan di bawah folder Ketersediaan Tinggi AlwaysOn di SSMS.
Menggunakan Transact-SQL
Bagian ini menunjukkan contoh pembuatan AG menggunakan Transact-SQL. Anda dapat mengonfigurasi pendengar dan perutean baca-saja setelah membuat AG. Anda dapat memodifikasi AG itu sendiri dengan menggunakan ALTER AVAILABILITY GROUP, tetapi Anda tidak dapat mengubah jenis kluster di SQL Server 2017 (14.x). Jika Anda tidak bermaksud membuat AG dengan jenis kluster Eksternal, Anda harus menghapusnya dan membuatnya kembali dengan jenis kluster Tidak Ada.
Untuk informasi lebih lanjut dan opsi lainnya, lihat:
- CREATE AVAILABILITY GROUP
- ALTER AVAILABILITY GROUP
- Mengonfigurasi Perutean Baca Saja untuk Grup Ketersediaan Always On
- Konfigurasikan listener untuk grup ketersediaan Always On
Contoh A: Dua replika dengan replika khusus konfigurasi (Jenis kluster eksternal)
Contoh ini menunjukkan cara membuat AG dua replika yang menggunakan replika khusus konfigurasi.
Jalankan pernyataan berikut pada node replika utama, yang berisi salinan baca/tulis dari basis data. Contoh ini menggunakan seeding otomatis.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N' TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATIC ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', AVAILABILITY_MODE = CONFIGURATION_ONLY ); GODi jendela query yang terhubung ke replika lain, jalankan pernyataan berikut untuk menggabungkan replika ke AG dan mulai seeding dari replika utama ke replika sekunder.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GODi jendela kueri yang terhubung ke replika konfigurasi saja, jalankan pernyataan berikut untuk menggabungkannya ke AG.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO
Contoh B: Tiga replika dengan pengalihan baca saja (Jenis kluster eksternal)
Contoh ini menunjukkan cara mengonfigurasi routing hanya-baca sebagai bagian dari pembuatan AG awal untuk tiga replika penuh.
Jalankan pernyataan berikut pada simpul yang bertindak sebagai replika utama, dan berisi salinan database yang sepenuhnya dibaca/ditulis. Contoh ini menggunakan seeding otomatis.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE < DBName > REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN2.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:1433') ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:1433') ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN3.FullyQualified.Name:1433') ) LISTENER '<ListenerName>' ( WITH IP = ('<IPAddress>', '<SubnetMask>'), Port = 1433 ); GOBeberapa hal yang perlu diperhatikan tentang konfigurasi ini:
-
AGNameadalah nama AG. -
DBNameadalah nama database yang Anda gunakan dengan AG. Daftar nama juga bisa berupa koma. -
ListenerNameadalah nama yang berbeda dari server atau node yang mendasarinya. Anda mendaftarkannya di DNS bersama denganIPAddress. -
IPAddressadalah alamat IP untukListenerName. Ini juga unik dan tidak cocok dengan server atau node manapun. Aplikasi dan pengguna akhir menggunakanListenerNameatauIPAddressuntuk menyambungkan ke AG.-
SubnetMaskadalah subnet mask dariIPAddress. Di SQL Server 2019 (15.x) dan versi sebelumnya, nilai ini adalah255.255.255.255. Di SQL Server 2022 (16.x) dan versi yang lebih baru, nilai ini adalah0.0.0.0.
-
-
Di jendela kueri yang terhubung ke replika lain, jalankan perintah berikut untuk menggabungkan replika ke AG dan memulai proses penyemaian dari replika utama ke replika sekunder.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GOUlangi Langkah 2 untuk replika ketiga.
Contoh C: Dua replika dengan perutean baca-saja (Jenis kluster tidak ada)
Contoh ini membuat konfigurasi dua-replika yang menggunakan tipe klaster None. Gunakan konfigurasi ini untuk skenario skala baca di mana Anda tidak mengharapkan failover. Langkah ini membuat listener yang merupakan replika utama dan mengonfigurasi routing hanya-baca dengan fungsi round-robin.
Jalankan pernyataan berikut pada simpul yang bertindak sebagai replika utama, dan berisi salinan database yang sepenuhnya dibaca/ditulis. Contoh ini menggunakan seeding otomatis.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = NONE) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name: <PortOfEndpoint>', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE( ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (('LinAGN1.FullyQualified.Name'.'LinAGN2.FullyQualified.Name')) ), SECONDARY_ROLE( ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:<PortOfInstance>' ) ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfEndpoint>', FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ('LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name') )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfInstance>') ), LISTENER '<ListenerName>' (WITH IP = ( '<PrimaryReplicaIPAddress>', '<SubnetMask>'), Port = <PortOfListener> ); GODalam contoh ini:
-
AGNameadalah nama AG. -
DBNameadalah nama database yang Anda gunakan dengan AG. Daftar nama juga bisa berupa koma. -
PortOfEndpointadalah nomor port untuk endpoint yang Anda buat.-
PortOfInstanceadalah nomor port untuk instance SQL Server.
-
-
ListenerNameadalah nama placeholder yang berbeda dari replika dasarnya. -
PrimaryReplicaIPAddressadalah alamat IP replika utama.-
SubnetMaskadalah subnet mask dariIPAddress. Di SQL Server 2019 (15.x) dan versi sebelumnya, nilai ini adalah255.255.255.255. Di SQL Server 2022 (16.x) dan versi yang lebih baru, nilai ini adalah0.0.0.0.
-
-
Gabungkan replika sekunder dengan AG dan mulai pengisian data otomatis.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = NONE); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Membuat login dan izin SQL Server untuk Pacemaker
Kluster ketersediaan tinggi Pacemaker yang menggunakan SQL Server di Linux memerlukan akses ke instans SQL Server, dan izin pada AG itu sendiri. Langkah-langkah ini membuat login dan izin terkait, bersama dengan file yang memberi tahu Pacemaker cara mengautentikasi ke SQL Server.
Di jendela kueri yang tersambung ke replika pertama, jalankan skrip berikut:
CREATE LOGIN PMLogin WITH PASSWORD = '<password>'; GO GRANT VIEW SERVER STATE TO PMLogin; GO GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::<AGThatWasCreated> TO PMLogin; GODi Node 1, tambahkan dua baris berikut ke
/var/opt/mssql/secrets/passwdfile:PMLogin <password>Anda mungkin perlu meningkatkan izin Anda untuk
sudomengedit file ini.Kunci file:
sudo chmod 400 /var/opt/mssql/secrets/passwdUlangi Langkah 1-5 di server lain yang berfungsi sebagai replika.
Membuat sumber daya grup ketersediaan di kluster Pacemaker (Hanya eksternal)
Setelah membuat AG di SQL Server, Anda harus membuat sumber daya yang sesuai di Pacemaker saat Anda menentukan jenis kluster Eksternal. AG memerlukan dua sumber daya: sumber daya grup ketersediaan, dan sumber daya alamat IP. Mengonfigurasi sumber daya alamat IP bersifat opsional jika Anda tidak menggunakan pendengar. Namun, disarankan saat Anda memerlukan fitur pendengar.
Sumber daya AG yang Anda buat adalah jenis sumber daya yang disebut kloning. Sumber daya AG memiliki salinan di setiap node, dan satu sumber daya pengendali yang disebut sumber daya promosi. Sumber daya yang dipromosikan sesuai dengan server yang menjadi host replika utama. Sumber daya lainnya menampung replika sekunder (reguler atau hanya konfigurasi), dan mereka dapat dipromosikan dalam proses failover.
Note
Di SQL Server 2025 (17.x) dengan Pembaruan Kumulatif (CU) 3 dan versi yang lebih baru, agen Pacemaker HA v2 (Pratinjau) tersedia untuk Red Hat Enterprise Linux (RHEL) dan Ubuntu melalui mssql-server-ha paket. Anda dapat mengevaluasi agen HA Pacemaker v2 dalam penerapan nonproduksi. Agen Pacemaker HA (v1) yang ada masih sepenuhnya didukung untuk deployment produksi. Untuk informasi selengkapnya, lihat Agen Pacemaker HA v2 (Pratinjau).
Agen Pacemaker HA v1
Buat sumber daya AG di Pacemaker dengan menggunakan agen Pacemaker HA (v1): (
ocf:mssql:ag)sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s promotable notify=trueDalam contoh ini,
NameForAGResourceadalah nama unik yang Anda berikan ke sumber daya kluster ini untuk AG, danAGNamemerupakan nama AG yang Anda buat.Buat sumber daya alamat IP untuk AG yang Anda kaitkan dengan fungsionalitas pendengar.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>Dalam contoh ini,
NameForIPResourceadalah nama unik untuk sumber daya IP, danIPAddressmerupakan alamat IP statis yang Anda tetapkan ke sumber daya.Untuk memastikan bahwa alamat IP dan sumber daya AG berjalan pada simpul yang sama, konfigurasikan batasan kolokasi.
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITYDalam contoh ini,
NameForIPResourceadalah nama untuk sumber daya IP, danNameForAGResourcemerupakan nama untuk sumber daya AG.Buat batasan pengurutan untuk memastikan bahwa sumber daya AG berjalan sebelum alamat IP. Meskipun batasan kolokasi menyiratkan batasan pemesanan, langkah ini memberlakukannya.
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>Dalam contoh ini,
NameForIPResourceadalah nama untuk sumber daya IP, danNameForAGResourcemerupakan nama untuk sumber daya AG.
Agen Pacemaker HA v2 (Pratinjau)
Agen Pacemaker HA v2 menggunakan arsitektur berbasis layanan. Agen berjalan sebagai layanan sistem khusus bernama mssql-pcsag, yang bertanggung jawab menangani operasi ketersediaan tinggi spesifik SQL Server dan komunikasi dengan Pacemaker.
Anda mengelola mssql-pcsag layanan melalui kontrol layanan sistem standar. Mulai, berhenti, mulai ulang, dan periksa status layanan ini sesuai kebutuhan dengan perintah berikut:
sudo systemctl start mssql-pcsag # Start the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl stop mssql-pcsag # Stop the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl restart mssql-pcsag # Restart the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl status mssql-pcsag # Check the status of the Pacemaker HA agent v2 (mssql-pcsag) service
Pacemaker berinteraksi melalui layanan mssql-pcsag dengan grup ketersediaan SQL Server. Agar pemantauan dan failover grup ketersediaan berfungsi dengan benar:
- Kluster Pacemaker harus aktif.
- Layanan
mssql-pcsagharus berjalan.
Meskipun Alat Pacu Jantung dan mssql-pcsag merupakan komponen terpisah, keduanya bekerja bersama saat runtime. Jika Pacemaker atau mssql-pcsag layanan berhenti, operasi failover grup ketersediaan tidak berfungsi seperti yang diharapkan.
Note
Mengulang kembali layanan mssql-pcsag tidak akan menghidupkan kembali SQL Server. Demikian pula, menghidupkan ulang SQL Server tidak secara otomatis menghidupkan ulang agen Pacemaker HA. Verifikasi bahwa kedua layanan berjalan selama pemecahan masalah.
Agen Pacemaker HA versi 2 memperkenalkan peningkatan keandalan dan kinerja dibandingkan agen sebelumnya, termasuk:
Peningkatan performa failover untuk mengurangi waktu failover yang direncanakan dan tidak direncanakan.
Dukungan untuk kebijakan failover otomatis yang fleksibel, termasuk konfigurasi tingkat kegagalan-kondisi dan batas waktu pemeriksaan kesehatan.
Contoh: Pernyataan Transact-SQL berikut mengubah tingkat kondisi kegagalan dari grup ketersediaan yang ada bernama AG1 ke tingkat 2:
ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 2);Contoh: Pernyataan Transact-SQL berikut mengubah ambang batas waktu pemeriksaan kesehatan dari grup ketersediaan yang ada bernama AG1 menjadi 60.000 milidetik (60 detik).
ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);Contoh: Setelah menerapkan konfigurasi, gunakan pernyataan Transact-SQL berikut untuk memverifikasi tingkat kondisi kegagalan yang dikonfigurasi dan batas waktu pemeriksaan kesehatan untuk grup ketersediaan.
SELECT failure_condition_level, health_check_timeout FROM sys.availability_groups;Dukungan untuk TLS 1.3 untuk komunikasi antara kluster Pacemaker dan SQL Server.
Buat sumber daya AG di Pacemaker dengan menggunakan agen Pacemaker HA v2: (
ocf:mssql:agv2)sudo pcs resource create <NameForAGResource> ocf:mssql:agv2 ag_name=<AGName> meta failure-timeout=30s promotable notify=trueJika memutakhirkan dari agen Pacemaker HA v1 ke v2, hapus sumber daya AG yang ada sebelum membuat
agv2sumber daya:sudo pcs resource delete <NameForAGResource>Operasi ini menghentikan sementara sinkronisasi AG saat sumber daya sedang dibuat ulang. Menghapus dan membuat ulang sumber daya Pacemaker AG tidak menghapus AG. Setelah sumber daya dibuat ulang, Pacemaker melanjutkan manajemen dan sinkronisasi AG secara otomatis.
Buat sumber daya alamat IP untuk AG yang Anda kaitkan dengan fungsionalitas pendengar.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>Dalam contoh ini,
NameForIPResourceadalah nama unik untuk sumber daya IP, danIPAddressmerupakan alamat IP statis yang Anda tetapkan ke sumber daya.Untuk memastikan bahwa alamat IP dan sumber daya AG berjalan pada simpul yang sama, konfigurasikan batasan kolokasi.
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITYDalam contoh ini,
NameForIPResourceadalah nama untuk sumber daya IP, danNameForAGResourcemerupakan nama untuk sumber daya AG.Buat batasan pemesanan untuk memastikan bahwa sumber daya AG sudah siap dan berjalan sebelum alamat IP. Meskipun batasan kolokasi menyiratkan batasan pemesanan, langkah ini memberlakukannya.
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>Dalam contoh ini,
NameForIPResourceadalah nama untuk sumber daya IP, danNameForAGResourcemerupakan nama untuk sumber daya AG.