Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Replikasi Basis Data SQL Server

Replikasi database adalah teknologi untuk mendistribusikan data dari server utama ke server sekunder. Replikasi bekerja pada konsep Master-slave dimana database Master mendistribusikan data ke satu atau beberapa server slave. Replikasi dapat diatur antara beberapa contoh SQL Server di server yang sama, ATAU dapat diatur antara beberapa server database dalam pusat data yang sama atau terpisah secara geografis.
Ada dua manfaat utama menggunakan replikasi SQL Server:

  1. Dengan menggunakan replikasi, kita bisa mendapatkan data yang hampir real-time yang dapat digunakan untuk tujuan pelaporan. Misalnya, saat Anda ingin memisahkan beban OLTP intensif tulis di satu server dan beban baca intensif di server lain, Anda dapat menyiapkan replikasi untuk menjaga sinkronisasi data di kedua server.
  2. Manfaat kedua adalah Anda dapat menjadwalkan replikasi untuk berjalan pada waktu tertentu. Misalnya, jika Anda ingin server laporan tersebut berisi data hari yang diselesaikan, Anda dapat menjadwalkan snapshot replikasi yang sesuai. Kami tidak perlu menulis logika tambahan untuk menangani data saat ini.

Replikasi menawarkan banyak fleksibilitas. Dengan menggunakan replikasi, kita dapat memfilter baris dan juga dapat mereplikasi subset data dari tabel apa pun. Kami dapat mengubah data yang direplikasi atau hanya mereplikasi pembaruan dan menyisipkan dan mengabaikan penghapusan. Kami juga dapat mereplikasi data dari sistem database lain seperti Oracle.

Komponen Replikasi

Ada tujuh komponen inti Replikasi SQL Server. Berikut daftarnya:

  1. Penerbit.
  2. Distributor.
  3. Pelanggan.
  4. Artikel.
  5. Publikasi.
  6. Dorong Langganan.
  7. Tarik Langganan.

Berikut detailnya:

Artikel

Artikel adalah objek database, seperti tabel SQL, atau prosedur tersimpan. Seperti yang saya sebutkan di atas, dengan menggunakan Replikasi, kita dapat memfilter data, atau kita dapat mereplikasi kolom tabel yang dipilih, sehingga kolom atau baris tabel dianggap sebagai artikel.

Publikasi

Artikel tidak dapat direplikasi sampai menjadi bagian dari publikasi. Publikasi adalah kumpulan objek Artikel/Database. Ini juga mewakili kumpulan data yang akan direplikasi oleh SQL Server.

Penerbit

Penerbit berisi database master yang memiliki data yang perlu dipublikasikan. Ini menentukan data apa yang harus didistribusikan ke semua pelanggan.

Distributor

Distributor adalah jembatan antara penerbit dan pelanggan. Distributor mengumpulkan semua data yang dipublikasikan dan menyimpannya hingga dikirimkan ke semua pelanggan. Ini adalah jembatan antara penerbit dan pelanggan. Ini mendukung banyak penerbit dan konsep pelanggan. Tidak wajib untuk mengonfigurasi distributor pada Instans SQL terpisah atau server terpisah. Jika kita tidak mengkonfigurasinya, penerbit dapat bertindak sebagai distributor. Organisasi yang memiliki replikasi skala besar dapat mengonfigurasi distributor pada sistem terpisah.

Pelanggan

Pelanggan adalah akhir dari sumber atau tujuan di mana data atau publikasi yang direplikasi akan dikirimkan. Dalam replikasi, ada satu penerbit, dapat memiliki banyak pelanggan.

Langganan Dorong

Dalam langganan push, penerbit memperbarui data ke pelanggan. Dalam langganan Push, pelanggan bersifat pasif. Penerbit mengirimkan artikel atau publikasi ke semua pelanggannya. Berdasarkan kebutuhan organisasi, dalam membuat wizard replikasi, di layar, Anda dapat memilih langganan yang akan digunakan. Replikasi transaksi dan replikasi peer-to-peer menggunakan langganan Push untuk menjaga ketersediaan data secara real-time.

Tarik Langganan

Dalam langganan Pull, semua pelanggan meminta data baru atau data yang diperbarui dari penerbitnya. Dalam pull subscription, kita dapat mengontrol bahwa data atau perubahan data apa yang diperlukan untuk pelanggan. Ini berguna ketika kita tidak membutuhkan data yang diubah segera.

Jenis Replikasi

SQL Server mendukung tiga jenis replikasi:

  1. Replikasi Transaksional.
  2. Replikasi Snapshot.
  3. Gabungkan Replikasi.

Replikasi Transaksional

Replikasi transaksional, setiap perubahan skema, perubahan data yang terjadi pada database penerbit akan direplikasi pada database pelanggan. Setiap kali operasi Pembaruan, Hapus, atau Sisipkan terjadi di database penerbit, perubahan dilacak, dan perubahan tersebut dikirim ke database pelanggan. Replikasi transaksional hanya mengirimkan data dalam jumlah terbatas melalui jaringan. Selain itu, perubahan hampir real-time, sehingga dapat digunakan untuk menyiapkan situs DR, atau dapat digunakan untuk memperbesar operasi pelaporan. Replikasi transaksional ideal untuk situasi berikut:

  1. Bila Anda ingin menyiapkan sistem di mana perubahan yang dibuat pada penerbit harus segera diterapkan ke pelanggan.
  2. Penerbit memiliki INSERT, UPDATES, dan DELETES rendah tinggi.
  3. Bila Anda ingin menyiapkan makna replikasi heterogen, penerbit atau pelanggan untuk database non-SQL Server, seperti Oracle.

Ketika ada perubahan yang dibuat di database penerbit, perubahan dicatat dalam file log di database penerbit. Situs Distributor / Penerbit, dua pekerjaan akan dibuat.

  1. Agen Snapshot :Pekerjaan agen Snapshot menghasilkan snapshot skema, data objek yang ingin kita tiru atau publikasikan. File snapshot dapat disimpan di server Publisher atau lokasi jaringan. Saat kami memulai replikasi untuk pertama kalinya, itu membuat snapshot dan menerapkannya ke semua pelanggan. Agen snapshot tetap menganggur hingga dipicu secara manual atau dijadwalkan untuk berjalan pada waktu tertentu.
  2. Agen Pembaca Log :Pekerjaan agen pembaca log berjalan terus menerus. Ini membaca perubahan (INSERT, UPDATES, dan DELETES) yang terjadi dari log transaksi database penerbit dan mengirimkannya ke agen distribusi.
  3. Agen Distribusi :Setelah perubahan diambil dari agen pembaca Log, agen distribusi mengirimkan semua perubahan ke pelanggan.

Saat kami mengonfigurasi replikasi transaksional, ia melakukan aktivitas berikut

  • Ini dimulai dengan mengambil snapshot Pertama dari data publikasi dan objek database dan snapshot yang diterapkan ke pelanggan.
  • Agen pembaca log terus memantau T-Log penerbit dan jika ada perubahan, agen akan mengirimkannya ke distributor atau langsung ke pelanggan.

Gambar berikut menunjukkan cara kerja replikasi transaksional:

Keuntungan:

  1. Replikasi transaksi dapat digunakan sebagai server SQL siaga, atau dapat digunakan untuk load balancing atau memisahkan sistem pelaporan dan sistem OLTP.
  2. Server penerbit mereplikasi data ke server pelanggan dengan latensi rendah.
  3. Menggunakan replikasi transaksional, replikasi tingkat objek dapat diimplementasikan.
  4. Replikasi transaksional dapat diterapkan saat Anda memiliki lebih sedikit data untuk dilindungi, dan Anda harus memiliki paket pemulihan data yang cepat.

Kekurangan:

  1. Setelah replikasi dibuat, perubahan skema pada penerbit tidak berlaku di server pelanggan. Kita harus membuat perubahan itu secara manual dengan membuat snapshot baru dan menerapkannya ke pelanggan.
  2. Jika kita mengubah server, kita harus mengkonfigurasi ulang replikasi.
  3. Jika replikasi transaksional digunakan sebagai setup DR, kita harus melakukan failover secara manual.

Replikasi Snapshot

Replikasi snapshot menghasilkan gambar/snapshot publikasi lengkap pada jadwal yang ditentukan dan mengirimkan file snapshot pada pelanggan. Saat terjadi replikasi snapshot, data tujuan akan diganti dengan snapshot baru. Replikasi snapshot adalah opsi terbaik saat data tidak terlalu fluktuatif. Misalnya, tabel Master seperti Kota, Kode Pos, Kode Pin adalah kandidat terbaik untuk replikasi snapshot.

Saat mengonfigurasi replikasi snapshot, komponen penting berikut ditentukan:

  1. Agen Snapshot :Ini membuat gambar lengkap skema dan data yang ditentukan dalam publikasi dan mengirimkannya ke distributor. Agen snapshot tetap menganggur hingga dipicu secara manual ATAU dijadwalkan untuk berjalan pada waktu tertentu.
  2. Agen distributor :Ini mengirimkan file snapshot ke pelanggan dan menerapkan skema dan data dengan mengganti yang sudah ada.

Replikasi snapshot melakukan aktivitas berikut:

  1. Pada jadwal yang ditentukan, agen snapshot menempatkan kunci bersama pada skema dan data yang akan dipublikasikan.
  2. Seluruh cuplikan data yang dipublikasikan yang disalin ke ujung distributor. Agen snapshot membuat tiga file
    • File untuk membuat skema database dari data yang dipublikasikan.
    • File BCP untuk mengekspor data dalam Tabel SQL
    • File Indeks untuk mengekspor data indeks.
  1. Setelah file dibuat, agen snapshot melepaskan kunci bersama pada data dan data yang dipublikasikan.
  2. Agen distributor memulai dan mengganti skema dan data pelanggan menggunakan file yang dibuat oleh agen snapshot.

Gambar berikut mengilustrasikan cara kerja replikasi snapshot.

Keuntungan

  1. Replikasi snapshot sangat mudah disiapkan. Jika data tidak sering diubah, replikasi snapshot adalah opsi yang sangat cocok.
  2. Anda dapat mengontrol kapan harus mengirim data. Misalnya, tabel master yang memiliki volume data tinggi, tetapi lebih jarang berubah daripada yang dapat Anda replikasi datanya saat lalu lintas rendah.

Kekurangan

  1. Snapshot yang dihasilkan oleh agen snapshot berisi data yang dipublikasikan dan tidak berubah, oleh karena itu snapshot yang dikirimkan melalui jaringan dapat menghasilkan latensi dan memengaruhi operasi lain.
  2. Seiring bertambahnya data, ukuran snapshot meningkat dan dibutuhkan lebih banyak waktu untuk membuat dan mendistribusikan snapshot ke pelanggan.

Gabungkan Replikasi

Replikasi gabungan dapat digunakan saat kita perlu mengelola perubahan di beberapa server dan perubahan ini perlu dikonsolidasikan.

Saat kami mengonfigurasi replikasi gabungan, komponen berikut akan dibuat:

  1. Agen Snapshot :Agen Snapshot menghasilkan snapshot pertama dari data publikasi dan objek database. Setelah snapshot dibuat, snapshot akan didistribusikan ke semua pelanggan.
  2. Gabungkan Agen :Agen gabungan bertanggung jawab untuk menyelesaikan konflik antara penerbit dan pelanggan. Setiap konflik diselesaikan melalui agen gabungan yang menggunakan resolusi konflik. Bergantung pada cara Anda mengonfigurasi resolusi konflik, konflik diselesaikan oleh agen gabungan.

Saat kami mengonfigurasi replikasi gabungan, ia melakukan aktivitas berikut:

  • Ini dimulai dengan mengambil snapshot dari data publikasi dan objek database dan snapshot yang diterapkan ke pelanggan.
  • Saat mengonfigurasi replikasi gabungan, ini membuat pemicu pada penerbit dan pelanggan. Pemicu bertanggung jawab untuk melacak perubahan selanjutnya dan modifikasi tabel pada penerbit dan pelanggan.
  • Saat penerbit dan pelanggan terhubung ke jaringan, perubahan baris data dan modifikasi skema akan disinkronkan satu sama lain. Saat menggabungkan perubahan penerbit dan pelanggan, agen gabungan menyelesaikan konflik berdasarkan ketentuan yang ditentukan dalam agen gabungan.

Replikasi gabungan digunakan di lingkungan server ke klien, dan ini ideal untuk situasi di mana pelanggan perlu mengambil data dari penerbit, membuat perubahan secara offline dan kemudian menyinkronkan perubahan dengan penerbit dan pelanggan lain.

Mungkin ada situasi praktis di mana baris yang sama diubah oleh penerbit dan pelanggan yang berbeda. Pada saat itu, agen Penggabungan akan melihat resolusi konflik apa yang didefinisikan dan membuat perubahan yang sesuai.

SQL Server secara unik mengidentifikasi kolom menggunakan pengidentifikasi unik global untuk setiap baris dalam tabel yang diterbitkan. Jika tabel sudah memiliki kolom pengenal unik, maka SQL Server secara otomatis menggunakan kolom tersebut. Jika tidak, itu akan menambahkan kolom baris baris dalam tabel dan membuat indeks berdasarkan kolom.

Pemicu akan dibuat pada tabel yang dipublikasikan di penerbit dan pelanggan. Mereka digunakan untuk melacak perubahan berdasarkan perubahan baris atau kolom.

Gambar berikut mengilustrasikan cara kerja replikasi gabungan:

Keuntungan:

  1. Ini adalah satu-satunya cara untuk mengelola konsolidasi perubahan pada beberapa data server.

Kekurangan:

  1. Butuh banyak waktu untuk mereplikasi dan menyinkronkan kedua ujungnya.
  2. Konsistensinya rendah karena banyak pihak yang harus disinkronkan.
  3. Dapat terjadi konflik saat menggabungkan replikasi jika baris yang sama terpengaruh di lebih dari satu pelanggan dan penerbit. Ini dapat diperbaiki menggunakan resolusi konflik, tetapi membuat pengaturan replikasi menjadi lebih rumit.

Kode T-SQL untuk meninjau konfigurasi replikasi

Saya telah mengonfigurasi replikasi snapshot dan replikasi transaksional pada dua mesin saya. Menggunakan manajemen dinamis SQL (DMV), kita dapat memeriksa konfigurasi replikasi. Untuk meninjau konfigurasi replikasi kita dapat menggunakan kode T-SQL. Kode skrip mengisi berikut ini:

  1. Nama basis data pelanggan.
  2. Nama Penerbit.
  3. Jenis langganan.
  4. Database penerbit.
  5. Nama Agen Replikasi.

Berikut scriptnya:

SELECT DistributionAgent.subscriber_db 
       [Subscriber DB], 
       DistributionAgent.publication                              [PUB Name], 
       RIGHT(LEFT(DistributionAgent.NAME, Len(DistributionAgent.NAME) - ( Len( 
                                                DistributionAgent.id) + 1 )), 
       Len(LEFT( 
       DistributionAgent.NAME, Len(DistributionAgent.NAME) - 
                               ( 
                                                    Len( 
       DistributionAgent.id) + 1 ))) - ( 
       10 + Len(DistributionAgent.publisher_db) + ( 
       CASE 
       WHEN 
       DistributionAgent.publisher_db = 'ALL' 
                                           THEN 1 
       ELSE 
                                             Len( 
       DistributionAgent.publication) + 2 
          END ) ))              [SUBSCRIBER], 
       ( CASE 
           WHEN DistributionAgent.subscription_type = '0' THEN 'Push' 
           WHEN DistributionAgent.subscription_type = '1' THEN 'Pull' 
           WHEN DistributionAgent.subscription_type = '2' THEN 'Anonymous' 
           ELSE Cast(DistributionAgent.subscription_type AS VARCHAR) 
         END ) 
       [Subscrition Type], 
       DistributionAgent.publisher_db + ' - ' 
       + Cast(DistributionAgent.publisher_database_id AS VARCHAR) 
       [Publisher Database], 
       DistributionAgent.NAME 
       [Pub - DB - Publication - SUB - AgentID] 
FROM   distribution.dbo.msdistribution_agents DistributionAgent 
WHERE  DistributionAgent.subscriber_db <> 'virtual'

Berikut adalah outputnya:

Ringkasan

Dalam artikel ini, saya telah menjelaskan:

  1. Dasar dan manfaat Replikasi dan komponennya.
  2. Replikasi transaksional.
  3. Replikasi snapshot.
  4. Gabungkan Replikasi.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batasan hanya untuk satu catatan yang ditandai sebagai default

  2. Periksa apakah tabel ada di SQL Server

  3. T-SQL mendapatkan jumlah hari kerja antara 2 tanggal

  4. referensi yang belum terselesaikan ke objek [INFORMATION_SCHEMA].[TABLES]

  5. Cara membuat cadangan atau membuat tabel baru dari Tabel SQL Server yang Ada di SQL Server - Tutorial SQL Server / TSQL Bagian 105