Mengonfigurasi Replikasi dengan T-SQL
Berlaku untuk:SQL Server - Linux
Dalam tutorial ini, konfigurasikan replikasi rekam jepret SQL Server di Linux dengan dua instans SQL Server menggunakan Transact-SQL (T-SQL). Penerbit dan distributor akan menjadi instans yang sama, dan pelanggan akan berada pada instans terpisah.
- Mengaktifkan agen replikasi SQL Server di Linux
- Membuat database sampel
- Mengonfigurasi folder rekam jepret untuk akses agen SQL Server
- Mengonfigurasi distributor
- Mengonfigurasi penerbit
- Mengonfigurasi publikasi dan artikel
- Mengonfigurasi pelanggan
- Menjalankan pekerjaan replikasi
Semua konfigurasi replikasi dapat dikonfigurasi dengan prosedur tersimpan replikasi.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Dua instans SQL Server dengan versi terbaru SQL Server di Linux
Alat untuk mengeluarkan kueri T-SQL untuk menyiapkan replikasi seperti SQLCMD atau SQLCMS
Lihat Menggunakan SQL Server Management Studio di Windows untuk mengelola SQL Server di Linux.
Catatan
SQL Server 2017 (14.x) (CU18) dan yang lebih baru mendukung Replikasi SQL Server untuk instans SQL Server di Linux.
Langkah terperinci
Aktifkan agen replikasi SQL Server di Linux. Pada kedua komputer host, jalankan perintah berikut di terminal.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true sudo systemctl restart mssql-server
Buat database sampel dan tabel. Pada penerbit, buat database sampel dan tabel yang akan bertindak sebagai artikel untuk publikasi.
CREATE DATABASE Sales; GO USE [Sales]; GO CREATE TABLE Customer ( [CustomerID] [int] NOT NULL, [SalesAmount] [decimal] NOT NULL ); GO INSERT INTO Customer (CustomerID, SalesAmount) VALUES (1, 100), (2, 200), (3, 300); GO
Pada instans SQL Server lainnya, pelanggan, buat database untuk menerima artikel.
CREATE DATABASE Sales; GO
Buat folder rekam jepret untuk Agen SQL Server untuk dibaca/ditulis di distributor, buat folder rekam jepret dan berikan akses ke pengguna 'mssql'
sudo mkdir /var/opt/mssql/data/ReplData/ sudo chown mssql /var/opt/mssql/data/ReplData/ sudo chgrp mssql /var/opt/mssql/data/ReplData/
Mengonfigurasi distributor. Dalam contoh ini, penerbit juga akan menjadi distributor. Jalankan perintah berikut pada penerbit untuk mengonfigurasi instans untuk distribusi juga.
DECLARE @distributor AS SYSNAME; DECLARE @distributorlogin AS SYSNAME; DECLARE @distributorpassword AS SYSNAME; -- Specify the distributor name. Use 'hostname' command on in terminal to find the hostname SET @distributor = N'<distributor instance name>'; --in this example, it will be the name of the publisher SET @distributorlogin = N'<distributor login>'; SET @distributorpassword = N'<distributor password>'; -- Specify the distribution database. USE master EXEC sp_adddistributor @distributor = @distributor -- this should be the hostname -- Log into distributor and create Distribution Database. In this example, our publisher and distributor is on the same host EXEC sp_adddistributiondb @database = N'distribution', @log_file_size = 2, @deletebatchsize_xact = 5000, @deletebatchsize_cmd = 2000, @security_mode = 0, @login = @distributorlogin, @password = @distributorpassword; GO DECLARE @snapshotdirectory AS NVARCHAR(500); SET @snapshotdirectory = N'/var/opt/mssql/data/ReplData/'; -- Log into distributor and create Distribution Database. In this example, our publisher and distributor is on the same host USE [distribution]; GO IF (NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'UIProperties' AND type = 'U')) CREATE TABLE UIProperties (id INT); IF (EXISTS (SELECT * FROM::fn_listextendedproperty('SnapshotFolder', 'user', 'dbo', 'table', 'UIProperties', NULL, NULL))) EXEC sp_updateextendedproperty N'SnapshotFolder', @snapshotdirectory, 'user', dbo, 'table', 'UIProperties'; ELSE EXEC sp_addextendedproperty N'SnapshotFolder', @snapshotdirectory, 'user', dbo, 'table', 'UIProperties'; GO
Mengonfigurasi penerbit. Jalankan perintah T-SQL berikut pada penerbit.
DECLARE @publisher AS SYSNAME; DECLARE @distributorlogin AS SYSNAME; DECLARE @distributorpassword AS SYSNAME; -- Specify the distributor name. Use 'hostname' command on in terminal to find the hostname SET @publisher = N'<instance name>'; SET @distributorlogin = N'<distributor login>'; SET @distributorpassword = N'<distributor password>'; -- Specify the distribution database. -- Adding the distribution publishers EXEC sp_adddistpublisher @publisher = @publisher, @distribution_db = N'distribution', @security_mode = 0, @login = @distributorlogin, @password = @distributorpassword, @working_directory = N'/var/opt/mssql/data/ReplData', @trusted = N'false', @thirdparty_flag = 0, @publisher_type = N'MSSQLSERVER'; GO
Mengonfigurasi pekerjaan publikasi. Jalankan perintah T-SQL berikut pada penerbit.
DECLARE @replicationdb AS SYSNAME; DECLARE @publisherlogin AS SYSNAME; DECLARE @publisherpassword AS SYSNAME; SET @replicationdb = N'Sales'; SET @publisherlogin = N'<Publisher login>'; SET @publisherpassword = N'<Publisher Password>'; USE [Sales]; GO EXEC sp_replicationdboption @dbname = N'Sales', @optname = N'publish', @value = N'true'; -- Add the snapshot publication EXEC sp_addpublication @publication = N'SnapshotRepl', @description = N'Snapshot publication of database ''Sales'' from Publisher ''<PUBLISHER HOSTNAME>''.', @retention = 0, @allow_push = N'true', @repl_freq = N'snapshot', @status = N'active', @independent_agent = N'true'; EXEC sp_addpublication_snapshot @publication = N'SnapshotRepl', @frequency_type = 1, @frequency_interval = 1, @frequency_relative_interval = 1, @frequency_recurrence_factor = 0, @frequency_subday = 8, @frequency_subday_interval = 1, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 0, @active_end_date = 0, @publisher_security_mode = 0, @publisher_login = @publisherlogin, @publisher_password = @publisherpassword;
Buat artikel dari tabel Penjualan.
Jalankan perintah T-SQL berikut pada penerbit.
USE [Sales]; GO EXEC sp_addarticle @publication = N'SnapshotRepl', @article = N'customer', @source_owner = N'dbo', @source_object = N'customer', @type = N'logbased', @description = NULL, @creation_script = NULL, @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509D, @identityrangemanagementoption = N'manual', @destination_table = N'customer', @destination_owner = N'dbo', @vertical_partition = N'false';
Mengonfigurasi Langganan. Jalankan perintah T-SQL berikut pada penerbit.
DECLARE @subscriber AS SYSNAME; DECLARE @subscriber_db AS SYSNAME; DECLARE @subscriberLogin AS SYSNAME; DECLARE @subscriberPassword AS SYSNAME; SET @subscriber = N'<Instance Name>'; -- for example, MSSQLSERVER SET @subscriber_db = N'Sales'; SET @subscriberLogin = N'<Subscriber Login>'; SET @subscriberPassword = N'<Subscriber Password>'; USE [Sales]; GO EXEC sp_addsubscription @publication = N'SnapshotRepl', @subscriber = @subscriber, @destination_db = @subscriber_db, @subscription_type = N'Push', @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0; EXEC sp_addpushsubscription_agent @publication = N'SnapshotRepl', @subscriber = @subscriber, @subscriber_db = @subscriber_db, @subscriber_security_mode = 0, @subscriber_login = @subscriberLogin, @subscriber_password = @subscriberPassword, @frequency_type = 1, @frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, @frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0, @active_end_time_of_day = 0, @active_start_date = 0, @active_end_date = 19950101; GO
Jalankan pekerjaan agen replikasi. Jalankan kueri berikut untuk mendapatkan daftar pekerjaan:
SELECT name, date_modified FROM msdb.dbo.sysjobs ORDER BY date_modified DESC;
Jalankan pekerjaan replikasi Rekam Jepret untuk menghasilkan rekam jepret:
USE msdb; GO --generate snapshot of publications, for example EXEC dbo.sp_start_job N'PUBLISHER-PUBLICATION-SnapshotRepl-1'; GO
Jalankan pekerjaan replikasi rekam jepret untuk menghasilkan rekam jepret:
USE msdb; GO --distribute the publication to subscriber, for example EXEC dbo.sp_start_job N'DISTRIBUTOR-PUBLICATION-SnapshotRepl-SUBSCRIBER'; GO
Koneksi pelanggan dan kueri data yang direplikasi.
Pada pelanggan, periksa apakah replikasi berfungsi dengan menjalankan kueri berikut:
SELECT * from [Sales].[dbo].[Customer];
Dalam tutorial ini, Anda mengonfigurasi replikasi rekam jepret SQL Server di Linux dengan dua instans SQL Server menggunakan T-SQL.
- Mengaktifkan agen replikasi SQL Server di Linux
- Membuat database sampel
- Mengonfigurasi folder rekam jepret untuk akses agen SQL Server
- Mengonfigurasi distributor
- Mengonfigurasi penerbit
- Mengonfigurasi publikasi dan artikel
- Mengonfigurasi pelanggan
- Menjalankan pekerjaan replikasi
Konten terkait
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