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
Dalam tutorial ini, konfigurasikan replikasi rekam jepret SQL Server di Linux dengan dua instans SQL Server menggunakan Transact-SQL (T-SQL). Penerbit dan distributor berada pada instans yang sama, dan pelanggan 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
- Jalankan pekerjaan replikasi
Semua konfigurasi replikasi dapat dikonfigurasi dengan prosedur tersimpan replikasi.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda perlu:
Dua instans SQL Server dengan versi terbaru SQL Server di Linux
Alat untuk mengeluarkan kueri T-SQL untuk menyiapkan replikasi, seperti sqlcmd atau SQL Server Management Studio (SSMS)
Lihat Menggunakan SQL Server Management Studio di Windows untuk mengelola SQL Server di Linux.
Catatan
Replikasi SQL Server didukung di Linux di SQL Server 2017 (14.x) (CU 18) dan versi-versi selanjutnya.
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-serverBuat 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); GOPada instans SQL Server lainnya, pelanggan, buat database untuk menerima artikel.
CREATE DATABASE Sales; GOBuat folder snapshot untuk dibaca/dilihat oleh Agen SQL Server pada distributor, lalu berikan akses kepada 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/Konfigurasi distributor. Dalam contoh ini, penerbit juga merupakan 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; EXECUTE 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 EXECUTE 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))) EXECUTE sp_updateextendedproperty N'SnapshotFolder', @snapshotdirectory, 'user', dbo, 'table', 'UIProperties'; ELSE EXECUTE sp_addextendedproperty N'SnapshotFolder', @snapshotdirectory, 'user', dbo, 'table', 'UIProperties'; GOMengonfigurasi 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 EXECUTE 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'; GOMengonfigurasi tugas 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 EXECUTE sp_replicationdboption @dbname = N'Sales', @optname = N'publish', @value = N'true'; -- Add the snapshot publication EXECUTE 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'; EXECUTE 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 EXECUTE 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 EXECUTE 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; EXECUTE 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; GOJalankan tugas 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 EXECUTE dbo.sp_start_job N'PUBLISHER-PUBLICATION-SnapshotRepl-1'; GOJalankan pekerjaan replikasi rekam jepret untuk memulai pekerjaan:
USE msdb; GO --distribute the publication to subscriber, for example EXECUTE dbo.sp_start_job N'DISTRIBUTOR-PUBLICATION-SnapshotRepl-SUBSCRIBER'; GOHubungkan pelanggan dan kueri data yang direplikasi.
Pada server 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
- Jalankan pekerjaan replikasi