Membuat dan mengonfigurasi grup ketersediaan untuk SQL Server di Linux
Berlaku untuk:SQL Server - Linux
Tutorial ini mencakup cara membuat dan mengonfigurasi grup ketersediaan (AG) untuk SQL Server di Linux. Tidak seperti SQL Server 2016 (13.x) dan yang lebih lama di Windows, Anda dapat mengaktifkan AG dengan atau tanpa membuat kluster Pacemaker yang mendasarinya terlebih dahulu. Integrasi dengan kluster, jika diperlukan, tidak dilakukan sampai nanti.
Tutorial ini mencakup tugas-tugas berikut:
- Aktifkan grup ketersediaan.
- Membuat titik akhir dan sertifikat 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
Sebarkan kluster ketersediaan tinggi Pacemaker seperti yang dijelaskan dalam Menyebarkan kluster Pacemaker untuk SQL Server di 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 bawah Linux, Anda harus menggunakan mssql-conf
untuk mengaktifkan fitur. Ada dua cara untuk mengaktifkan fitur grup ketersediaan: gunakan mssql-conf
utilitas, atau edit mssql.conf
file secara manual.
Penting
Fitur AG harus diaktifkan untuk replika khusus konfigurasi, bahkan di SQL Server Express.
Menggunakan utilitas mssql-conf
Pada perintah, terbitkan perintah berikut:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
Mengedit file mssql.conf
Anda juga dapat mengubah mssql.conf
file, yang terletak di bawah /var/opt/mssql
folder, untuk menambahkan baris berikut:
[hadr]
hadr.hadrenabled = 1
Mulai ulang SQL Server
Setelah mengaktifkan grup ketersediaan, seperti pada Windows, Anda harus memulai ulang SQL Server, menggunakan 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, titik akhir untuk AG hanya didukung jika sertifikat digunakan untuk autentikasi. Anda harus memulihkan sertifikat dari satu instans pada semua instans lain yang akan berpartisipasi sebagai replika dalam AG yang sama. Proses sertifikat diperlukan bahkan untuk replika khusus konfigurasi.
Membuat titik akhir dan memulihkan sertifikat hanya dapat dilakukan melalui 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.
Penting
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:
Catatan
Meskipun Anda membuat grup ketersediaan, jenis titik akhir menggunakan FOR DATABASE_MIRRORING
, karena beberapa aspek yang mendasar pernah dibagikan dengan fitur yang sekarang tidak digunakan lagi.
Contoh ini membuat sertifikat untuk konfigurasi tiga simpul. Nama instansnya adalah LinAGN1
, LinAGN2
, dan LinAGN3
.
Jalankan skrip berikut untuk
LinAGN1
membuat kunci master, sertifikat, dan titik akhir, dan cadangkan sertifikat. Untuk contoh ini, port TCP khas 5022 digunakan untuk titik akhir.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<StrongPassword>'; 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); GO
Lakukan hal yang sama pada
LinAGN2
:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<StrongPassword>'; 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); GO
Terakhir, lakukan urutan yang sama pada
LinAGN3
:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<StrongPassword>'; 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); GO
Menggunakan
scp
atau utilitas lain, salin cadangan sertifikat ke setiap simpul yang akan menjadi bagian dari AG.Untuk contoh ini:
- Salin
LinAGN1_Cert.cer
keLinAGN2
danLinAGN3
. - Salin
LinAGN2_Cert.cer
keLinAGN1
danLinAGN3
. - Salin
LinAGN3_Cert.cer
keLinAGN1
danLinAGN2
.
- 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
LinAGN2
danLinAGN3
diLinAGN1
.CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<StrongPassword>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<StrongPassword>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GO
Pulihkan dan
LinAGN3_Cert
aktifkan .LinAGN2_Cert
LinAGN1
Memiliki sertifikat replika lainnya adalah aspek penting dari 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'; GO
Berikan login yang terkait dengan
LinAG2
danLinAGN3
izin untuk menyambungkan ke titik akhir diLinAGN1
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO
Buat login tingkat instans dan pengguna yang terkait dengan
LinAGN1
danLinAGN3
diLinAGN2
.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<StrongPassword>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<StrongPassword>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GO
Pulihkan dan
LinAGN3_Cert
aktifkan .LinAGN1_Cert
LinAGN2
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'; GO
Berikan login yang terkait dengan
LinAG1
danLinAGN3
izin untuk menyambungkan ke titik akhir diLinAGN2
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO
Buat login tingkat instans dan pengguna yang terkait dengan
LinAGN1
danLinAGN2
diLinAGN3
.CREATE LOGIN LinAGN1_Login WITH PASSWORD = '<StrongPassword>'; CREATE USER LinAGN1_User FOR LOGIN LinAGN1_Login; GO CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<StrongPassword>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO
Pulihkan dan
LinAGN2_Cert
aktifkan .LinAGN1_Cert
LinAGN3
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'; GO
Berikan login yang terkait dengan
LinAG1
danLinAGN2
izin untuk menyambungkan ke titik akhir diLinAGN3
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
Membuat grup ketersediaan
Bagian ini mencakup cara menggunakan SQL Server Management Studio (SSMS) atau Transact-SQL untuk membuat grup ketersediaan untuk SQL Server.
Menggunakan SQL Server Management Studio
Bagian ini memperlihatkan cara membuat AG dengan jenis kluster Eksternal menggunakan SSMS dengan Wizard Grup Ketersediaan Baru.
Di SSMS, perluas Ketersediaan Tinggi AlwaysOn, klik kanan Grup Ketersediaan, dan pilih Wizard Grup Ketersediaan Baru.
Pada dialog Pengenalan, pilih Berikutnya.
Dalam dialog Tentukan Opsi Grup Ketersediaan, masukkan nama untuk grup ketersediaan, dan pilih jenis
EXTERNAL
kluster atauNONE
di daftar dropdown. Eksternal harus digunakan ketika Pacemaker akan disebarkan. Tidak ada untuk 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.Dalam dialog Pilih Database, pilih database yang akan berpartisipasi dalam AG. Setiap database harus memiliki cadangan penuh sebelum dapat ditambahkan ke AG. Pilih Selanjutnya.
Dalam dialog Tentukan Replika, pilih Tambahkan Replika.
Dalam dialog Koneksi ke Server, masukkan nama instans Linux SQL Server yang akan menjadi 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 instans sekarang harus dicantumkan pada dialog Tentukan Replika. Jika menggunakan jenis kluster Eksternal, untuk replika sekunder yang akan menjadi sekunder sejati, pastikan Mode Ketersediaan cocok dengan replika utama dan mode failover diatur ke Eksternal. Untuk replika khusus konfigurasi, 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 selengkapnya tentang preferensi pencadangan dengan AG, lihat Mengonfigurasi cadangan pada replika sekunder grup ketersediaan AlwaysOn.
Jika menggunakan sekunder yang dapat dibaca atau membuat AG dengan jenis kluster Tidak Ada untuk skala baca, Anda dapat membuat pendengar dengan memilih tab Listener. Pendengar juga dapat ditambahkan nanti. Untuk membuat pendengar, pilih opsi Buat pendengar grup ketersediaan dan masukkan nama, port TCP/IP, dan apakah akan menggunakan alamat IP DHCP statis atau yang ditetapkan secara otomatis. Ingatlah bahwa untuk AG dengan jenis kluster Tidak Ada, IP harus statis dan diatur ke alamat IP utama.
Jika pendengar dibuat untuk skenario yang dapat dibaca, SSMS 17.3 atau yang lebih baru memungkinkan pembuatan perutean baca-saja dalam wizard. Ini juga dapat ditambahkan nanti melalui SSMS atau Transact-SQL. Untuk menambahkan perutean baca-saja sekarang:
Pilih tab Perutean Baca-Saja.
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 bagaimana replika sekunder akan diinisialisasi. 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 telah 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, izin pada file cadangan perlu diatur pada replika lain. Pilih Selanjutnya.
Pada dialog Validasi, jika semuanya tidak kembali sebagai Berhasil, selidiki. Beberapa peringatan dapat diterima dan tidak fatal, seperti jika Anda tidak membuat pendengar. Pilih Selanjutnya.
Pada dialog Ringkasan, pilih Selesai. Proses untuk membuat AG sekarang dimulai.
Saat pembuatan AG selesai, pilih Tutup pada 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. Pendengar dan perutean baca-saja dapat dikonfigurasi setelah AG dibuat. AG itu sendiri dapat dimodifikasi dengan ALTER AVAILABILITY GROUP
, tetapi mengubah jenis kluster tidak dapat dilakukan 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. Informasi selengkapnya dan opsi lainnya dapat ditemukan di tautan berikut:
- BUAT GRUP KETERSEDIAAN (Transact-SQL)
- UBAH GRUP KETERSEDIAAN (Transact-SQL)
- Mengonfigurasi Perutean Baca Saja untuk Grup Ketersediaan Always On
- Mengonfigurasi listener bagi 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 pada simpul yang akan menjadi replika utama yang 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), 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); GO
Di jendela kueri yang tersambung ke replika lain, jalankan yang berikut ini untuk bergabung dengan replika ke AG dan mulai proses penyemaian dari replika utama ke sekunder.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Di jendela kueri yang tersambung ke replika konfigurasi saja, gabungkan ke AG.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO
Contoh B: Tiga replika dengan perutean baca-saja (Jenis kluster eksternal)
Contoh ini menunjukkan tiga replika lengkap dan bagaimana perutean baca-saja dapat dikonfigurasi sebagai bagian dari pembuatan AG awal.
Jalankan pada simpul yang akan menjadi replika utama yang 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 ); GO
Beberapa hal yang perlu diperhatikan tentang konfigurasi ini:
AGName
adalah nama grup ketersediaan.DBName
adalah nama database yang digunakan dengan grup ketersediaan. Ini juga bisa menjadi daftar nama yang dipisahkan oleh koma.ListenerName
adalah nama yang berbeda dari salah satu server/simpul yang mendasar. Ini akan terdaftar di DNS bersama denganIPAddress
.IPAddress
adalah alamat IP yang terkait denganListenerName
. Ini juga unik dan tidak sama dengan server/simpul mana pun. Aplikasi dan pengguna akhir menggunakan atauListenerName
IPAddress
untuk menyambungkan ke AG.SubnetMask
adalah subnet mask dariIPAddress
. Di SQL Server 2019 (15.x) dan versi sebelumnya, ini adalah255.255.255.255
. Di SQL Server 2022 (16.x) dan versi yang lebih baru, ini adalah0.0.0.0
.
Di jendela kueri yang tersambung ke replika lain, jalankan yang berikut ini untuk bergabung dengan replika ke AG dan mulai proses penyemaian dari replika utama ke sekunder.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Ulangi Langkah 2 untuk replika ketiga.
Contoh C: Dua replika dengan perutean baca-saja (Jenis kluster tidak ada)
Contoh ini menunjukkan pembuatan konfigurasi dua replika menggunakan jenis kluster Tidak Ada. Ini digunakan untuk skenario skala baca di mana tidak ada failover yang diharapkan. Ini membuat pendengar yang sebenarnya adalah replika utama, dan perutean baca-saja, menggunakan fungsionalitas round robin.
- Jalankan pada simpul yang akan menjadi replika utama yang 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>
);
GO
Mana:
AGName
adalah nama grup ketersediaan.DBName
adalah nama database yang akan digunakan dengan grup ketersediaan. Ini juga bisa menjadi daftar nama yang dipisahkan oleh koma.PortOfEndpoint
adalah nomor port yang digunakan oleh titik akhir yang dibuat.PortOfInstance
adalah nomor port yang digunakan oleh instans SQL Server.ListenerName
adalah nama yang berbeda dari replika yang mendasar tetapi sebenarnya tidak digunakan.PrimaryReplicaIPAddress
adalah alamat IP replika utama.SubnetMask
adalah subnet mask dariIPAddress
. Di SQL Server 2019 (15.x) dan versi sebelumnya, ini adalah255.255.255.255
. Di SQL Server 2022 (16.x) dan versi yang lebih baru, ini adalah0.0.0.0
.
Bergabunglah dengan replika sekunder ke AG dan mulai seeding 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 mendasari SQL Server di Linux memerlukan akses ke instans SQL Server, dan izin pada grup ketersediaan itu sendiri. Langkah-langkah ini membuat login dan izin terkait, bersama dengan file yang memberi tahu Pacemaker cara masuk ke SQL Server.
Di jendela kueri yang tersambung ke replika pertama, jalankan skrip berikut:
CREATE LOGIN PMLogin WITH PASSWORD ='<StrongPassword>'; GO GRANT VIEW SERVER STATE TO PMLogin; GO GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::<AGThatWasCreated> TO PMLogin; GO
Pada Node 1, masukkan perintah
sudo emacs /var/opt/mssql/secrets/passwd
Ini membuka editor Emacs.
Masukkan dua baris berikut ke editor:
PMLogin <StrongPassword>
Tahan tombol
Ctrl
, lalu tekanX
, laluC
, untuk keluar dan menyimpan file.Jalankan
sudo chmod 400 /var/opt/mssql/secrets/passwd
untuk mengunci file.
Ulangi Langkah 1-5 di server lain yang akan berfungsi sebagai replika.
Membuat sumber daya grup ketersediaan di kluster Pacemaker (Hanya eksternal)
Setelah grup ketersediaan dibuat di SQL Server, sumber daya yang sesuai harus dibuat di Pacemaker, ketika jenis kluster Eksternal ditentukan. Ada dua sumber daya yang terkait dengan AG: AG itu sendiri dan alamat IP. Mengonfigurasi sumber daya alamat IP bersifat opsional jika Anda tidak menggunakan fungsi pendengar, tetapi disarankan.
Sumber daya AG yang Anda buat adalah jenis sumber daya yang disebut kloning. Sumber daya AG pada dasarnya memiliki salinan pada setiap simpul, dan ada satu sumber daya pengendali yang disebut master. Master dikaitkan dengan server yang menghosting replika utama. Sumber daya lain menghosting replika sekunder (reguler atau khusus konfigurasi) dan dapat dipromosikan ke master dalam failover.
Catatan
Komunikasi bebas bias
Artikel ini berisi referensi ke istilah budak, istilah yang dianggap menyinggung Microsoft saat digunakan dalam konteks ini. Istilah muncul dalam artikel ini karena saat ini muncul di perangkat lunak. Ketika istilah dihapus dari perangkat lunak, kami akan menghapusnya dari artikel.
Buat sumber daya AG dengan sintaks berikut:
sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s --master meta notify=true
Di mana
NameForAGResource
adalah nama unik yang diberikan untuk sumber daya kluster ini untuk AG, danAGName
merupakan nama AG yang dibuat.Pada RHEL 7.7 dan Ubuntu 18.04, dan versi yang lebih baru, Anda mungkin mengalami peringatan dengan penggunaan
--master
, atau kesalahan sepertisqlag_monitor_0 on ag1 'not configured' (6): call=6, status=complete, exitreason='Resource must be configured with notify=true'
. Untuk menghindari situasi ini, gunakan:sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failover-timeout=30s master notify=true
Buat sumber daya alamat IP untuk AG yang akan dikaitkan dengan fungsionalitas pendengar.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>
Di mana
NameForIPResource
adalah nama unik untuk sumber daya IP, danIPAddress
merupakan alamat IP statis yang ditetapkan ke sumber daya.Untuk memastikan bahwa alamat IP dan sumber daya AG berjalan pada simpul yang sama, batasan kolokasi harus dikonfigurasi.
sudo pcs constraint colocation add <NameForIPResource> <NameForAGResource>-master INFINITY with-rsc-role=Master
Di mana
NameForIPResource
adalah nama untuk sumber daya IP, danNameForAGResource
merupakan nama untuk sumber daya AG.Buat batasan pemesanan untuk memastikan bahwa sumber daya AG sudah siap dan berjalan sebelum alamat IP. Sementara batasan kolokasi menyiratkan batasan pemesanan, ini menegakkannya.
sudo pcs constraint order promote <NameForAGResource>-master then start <NameForIPResource>
Di mana
NameForIPResource
adalah nama untuk sumber daya IP, danNameForAGResource
merupakan nama untuk sumber daya AG.
Langkah selanjutnya
Dalam tutorial ini, Anda mempelajari cara membuat dan mengonfigurasi grup ketersediaan untuk SQL Server di Linux. Anda mempelajari cara untuk:
- Aktifkan grup ketersediaan.
- Membuat titik akhir dan sertifikat AG.
- Gunakan SQL Server Management Studio (SSMS) atau Transact-SQL untuk membuat AG.
- Buat login dan izin SQL Server untuk Pacemaker.
- Buat sumber daya AG di kluster Pacemaker.
Untuk sebagian besar tugas administrasi AG, termasuk peningkatan dan failover, lihat:
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk