Bagikan melalui


Terapkan layanan pisah-gabung juga untuk memindahkan data antar database yang dipecah

Berlaku untuk: Azure SQL Database

Alat pisah-gabung juga untuk memindahkan data antar database yang dipecah. Lihat Memindahkan data di antara database cloud yang diskalakan.

Catatan

Alat pisah-gabung dimaksudkan untuk bekerja dengan Cloud Services (Klasik) dan bukan App Services.

Mengunduh paket Pisah-Gabung

  1. Unduh versi NuGet terbaru dari NuGet.

  2. Buka perintah dan navigasikan ke direktori tempat Anda mengunduh nuget.exe. Unduhan mencakup perintah PowerShell.

  3. Unduh paket Split-Merge terbaru ke direktori saat ini dengan perintah berikut:

    nuget install Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge
    

File ditempatkan dalam direktori bernama Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge.<x.x.xxx.x> tempat <x.x.xxx.x> mencerminkan nomor versi. Temukan file layanan pisah-gabung di content\splitmerge\service subdirektori, dan skrip PowerShell Pisah-Gabung (dan DLL klien yang diperlukan) di content\splitmerge\powershell subdirektori.

Prasyarat

  1. Membuat database Azure SQL Database yang akan digunakan sebagai database status pisah-gabung. Buka portal Microsoft Azure. Buat Azure SQL Database baru. Beri nama database dan buat admin dan kata sandi baru. Pastikan untuk merekam nama dan kata sandi untuk digunakan nanti.

  2. Pastikan server Anda memperbolehkan Azure Services untuk menyambungkannya. Di portal, di Pengaturan Firewall, pastikanpengaturan Izinkan akses ke Layanan Azure diatur ke Aktif. Pilih ikon Simpan.

  3. Buat akun Azure Storage untuk output diagnostik.

  4. Buat Layanan Awan Azure untuk layanan Pisah-Gabung Anda.

Mengonfigurasi layanan Split-Merge Anda

Konfigurasi layanan Pisah-Gabung

  1. Di folder tempat Anda mengunduh rakitan Split-Merge, buat salinan ServiceConfiguration.Template.cscfg file yang dikirim bersama SplitMergeService.cspkg dan ganti namanya ServiceConfiguration.cscfg.

  2. Buka ServiceConfiguration.cscfg di editor teks seperti Visual Studio yang memvalidasi input seperti format thumbprint sertifikat.

  3. Buat database baru atau pilih database yang sudah ada untuk berfungsi sebagai database status operasi Pisah-Gabung dan ambil string koneksi database tersebut.

    Penting

    Saat ini, database status harus menggunakan kolase Latin (SQL_Latin1_General_CP1_CI_AS). Untuk informasi selengkapnya, lihat Nama Kolate Windows.

    Dengan Azure SQL Database, string koneksi biasanya dalam bentuk:

    Server=<serverName>.database.windows.net; Database=<databaseName>;User ID=<userId>; Password=<password>; Encrypt=True; Connection Timeout=30

  4. Masukkan string koneksi ini dalam .cscfg file di bagian peran SplitMergeWeb dan SplitMergeWorker di pengaturan ElasticScaleMetadata.

  5. Untuk peran SplitMergeWorker, masukkan string koneksi yang valid ke penyimpanan Azure untuk pengaturan.WorkerRoleSynchronizationStorageAccountConnectionString

Mengonfigurasi keamanan

Untuk instruksi terperinci untuk mengonfigurasi keamanan layanan, lihat konfigurasi keamanan Pisah-Gabung.

Untuk tujuan penyebaran pengujian sederhana untuk tutorial ini, serangkaian langkah konfigurasi minimal dilakukan untuk menyiapkan dan menjalankan layanan. Langkah-langkah ini hanya mengaktifkan satu mesin/akun yang mengeksekusinya untuk berkomunikasi dengan layanan.

Membuat sertifikat yang ditandatangani sendiri

Buat direktori baru dan dari direktori ini jalankan perintah berikut menggunakan jendela Perintah Developer untuk Visual Studio:

makecert ^
-n "CN=*.cloudapp.net" ^
-r -cy end -sky exchange -eku "1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2" ^
-a sha256 -len 2048 ^
-sr currentuser -ss root ^
-sv MyCert.pvk MyCert.cer

Pada permintaan kata sandi untuk melindungi kunci privat, masukkan kata sandi yang kuat dan konfirmasikan. Masukkan kata sandi lagi ketika diminta. Pilih Ya di akhir untuk mengimpornya ke penyimpanan Akar Otoritas Sertifikasi Tepercaya.

Membuat file PFX

Jalankan perintah berikut dari jendela yang sama di mana makecert dijalankan; gunakan kata sandi yang sama dengan yang Anda gunakan untuk membuat sertifikat:

pvk2pfx -pvk MyCert.pvk -spc MyCert.cer -pfx MyCert.pfx -pi <password>

Mengimpor sertifikat klien ke dalam penyimpanan pribadi

  1. Di Windows Explorer, klik MyCert.pfxdua kali .
  2. Di Wizard Impor Sertifikat, pilih Pengguna Saat Ini, lalu Berikutnya.
  3. Konfirmasi jalur file dan pilih Berikutnya.
  4. Ketik kata sandi, biarkan Sertakan semua properti yang diperluas dicentang, dan pilih Berikutnya.
  5. Biarkan Secara otomatis pilih penyimpanan sertifikat[...] dicentang, dan pilih Berikutnya.
  6. Pilih Selesai dan OK.

Mengunggah file PFX ke layanan awan

  1. Buka portal Microsoft Azure.
  2. Pilih Cloud Services.
  3. Pilih layanan cloud yang Anda buat sebelumnya untuk layanan Split-Merge.
  4. Pilih Sertifikat di menu atas.
  5. Pilih Unggah di bilah bawah.
  6. Pilih file PFX dan masukkan kata sandi yang sama seperti sebelumnya.
  7. Setelah selesai, salin thumbprint sertifikat dari entri baru dalam daftar.

Memperbarui file konfigurasi layanan

Tempelkan thumbprint sertifikat yang disalin sebelumnya ke atribut thumbprint/value dari pengaturan ini. Untuk peran pekerja:

<Setting name="DataEncryptionPrimaryCertificateThumbprint" value="" />
<Certificate name="DataEncryptionPrimary" thumbprint="" thumbprintAlgorithm="sha1" />

Untuk peran web:

<Setting name="AdditionalTrustedRootCertificationAuthorities" value="" />
<Setting name="AllowedClientCertificateThumbprints" value="" />
<Setting name="DataEncryptionPrimaryCertificateThumbprint" value="" />
<Certificate name="SSL" thumbprint="" thumbprintAlgorithm="sha1" />
<Certificate name="CA" thumbprint="" thumbprintAlgorithm="sha1" />
<Certificate name="DataEncryptionPrimary" thumbprint="" thumbprintAlgorithm="sha1" />

Untuk penyebaran produksi sertifikat terpisah harus digunakan untuk CA, untuk enkripsi, sertifikat Server dan sertifikat klien. Untuk instruksi mendetail tentang hal ini, lihat Konfigurasi Keamanan.

Terapkan layanan Anda

  1. Masuk ke portal Azure
  2. Pilih layanan awan yang Anda buat sebelumnya.
  3. Pilih Ikhtisar.
  4. Pilih lingkungan penahapan, lalu pilih Unggah.
  5. Dalam kotak dialog, masukkan label penyebaran. Untuk dan Package Configuration, pilih From Local dan pilih SplitMergeService.cspkg file dan file cscfg yang Anda konfigurasi sebelumnya.
  6. Pastikan bahwa kotak centang berlabel Sebarkan meskipun satu atau beberapa peran berisi satu instans dicentang.
  7. Tekan tombol centang di kanan bawah untuk memulai penyebaran. Proses ini akan memakan waktu beberapa menit untuk menyelesaikannya.

Pecahkan masalah kesalahan penyebaran

Jika peran web Anda gagal online, kemungkinan ada masalah dengan konfigurasi keamanan. Periksa apakah TLS/SSL dikonfigurasi seperti yang dijelaskan sebelumnya.

Jika peran pekerja Anda gagal online, tetapi peran web Anda berhasil, kemungkinan besar masalah menyambungkan ke database status yang Anda buat sebelumnya.

  • Pastikan bahwa string koneksi dalam cscfg Anda akurat.

  • Periksa apakah server dan database ada, dan id pengguna dan kata sandi sudah benar.

  • Untuk Azure SQL Database, string koneksi harus berupa:

    Server=<serverName>.database.windows.net; Database=<databaseName>;User ID=<user>; Password=<password>; Encrypt=True; Connection Timeout=30

  • Pastikan bahwa nama server tidak dimulai dengan https://.

  • Pastikan server Anda memperbolehkan Azure Services untuk menyambungkannya. Untuk melakukan ini, buka database Anda di portal dan pastikan bahwa pengaturan Izinkan akses ke Layanan Azure diatur ke On**.

Menguji penyebaran layanan

Sambungkan dengan browser web

Tentukan titik akhir web layanan Pisah Gabung Anda. Anda dapat menemukan ini di portal dengan membuka Gambaran Umum layanan cloud Anda dan melihat di bawah URL Situs di sisi kanan. Ganti http:// dengan https://, karena pengaturan keamanan default menonaktifkan titik akhir HTTP. Muat halaman untuk URL ini ke browser Anda.

Uji dengan skrip PowerShell

Penyebaran dan lingkungan Anda dapat diuji dengan menjalankan contoh skrip PowerShell yang disertakan.

Penting

Contoh skrip berjalan di PowerShell 5.1. Saat ini tidak berjalan di PowerShell 6 atau yang lebih baru.

File skrip yang disertakan adalah:

  1. SetupSampleSplitMergeEnvironment.ps1 - menyiapkan tingkat data pengujian untuk split-merge.

    1. Membuat database manajer peta shard.
    2. Membuat dua database shard.
    3. Membuat peta pecahan untuk database tersebut (menghapus peta pecahan yang ada pada database tersebut).
    4. Membuat tabel sampel kecil di kedua pecahan, dan mengisi tabel di salah satu pecahan.
    5. Mendeklarasikan SchemaInfo untuk tabel pecahan.
  2. ExecuteSampleSplitMerge.ps1 - menjalankan operasi pengujian pada tingkat data pengujian.

    1. Mengirim permintaan terpisah ke frontend web Layanan Pisah Gabung, yang membagi setengah data dari pecahan pertama ke pecahan kedua.
    2. Jajak pendapat frontend web untuk status permintaan pisah dan tunggu sampai permintaan selesai.
    3. Mengirim permintaan terpisah ke frontend web Layanan Pisah Gabung, yang memindahkan setengah data dari pecahan pertama ke pecahan kedua.
    4. Pilih frontend web untuk status permintaan gabung dan tunggu sampai permintaan selesai.
  3. GetMappings.ps1 - Skrip sampel tingkat atas yang mencetak status pemetaan shard saat ini.

  4. ShardManagement.psm1 - skrip pembantu yang membungkus API ShardManagement.

  5. SqlDatabaseHelpers.psm1 - skrip pembantu untuk membuat dan mengelola database di SQL Database.

Menggunakan PowerShell untuk memverifikasi penyebaran Anda

  1. Buka jendela PowerShell baru dan navigasikan ke direktori tempat Anda mengunduh paket Pisah-Gabung, lalu navigasikan ke direktori "PowerShell".

  2. Buat server (atau pilih server yang ada) di mana manajer peta pecahan dan pecahan akan dibuat.

    Catatan

    SetupSampleSplitMergeEnvironment.ps1 Skrip membuat semua database ini di server yang sama secara default untuk menjaga skrip tetap sederhana. Ini bukan batasan Layanan Pisah-Gabung itu sendiri.

    Login autentikasi SQL dengan akses baca/tulis ke database diperlukan agar layanan Pisah-Gabung memindahkan data dan memperbarui peta shard. Karena Layanan Pisah-Gabung berjalan di cloud, saat ini tidak mendukung Autentikasi Terintegrasi.

    Pastikan server dikonfigurasi untuk mengizinkan akses dari alamat IP mesin yang menjalankan skrip ini. Anda dapat menemukan pengaturan ini di bawah server SQL / Firewall dan jaringan virtual / Alamat IP klien.

  3. Jalankan SetupSampleSplitMergeEnvironment.ps1 skrip untuk membuat lingkungan sampel.

    Menjalankan skrip ini menghapus struktur data manajemen peta shard yang ada pada database manajer peta shard dan shard. Mungkin berguna untuk menjalankan ulang skrip jika Anda ingin menginisialisasi ulang peta shard atau pecahan.

    Sampel baris perintah:

    .\SetupSampleSplitMergeEnvironment.ps1 ^
    -UserName 'mysqluser' -Password 'MySqlPassw0rd' -ShardMapManagerServerName 'abcdefghij.database.windows.net'
    
  4. Jalankan skrip Getmappings.ps1 untuk melihat pemetaan yang saat ini ada di lingkungan sampel.

    .\GetMappings.ps1 ^
    -UserName 'mysqluser' -Password 'MySqlPassw0rd' -ShardMapManagerServerName 'abcdefghij.database.windows.net'
    
  5. Jalankan ExecuteSampleSplitMerge.ps1 skrip untuk menjalankan operasi terpisah (memindahkan setengah data pada shard pertama ke shard kedua) dan kemudian operasi penggabungan (memindahkan data kembali ke shard pertama). Jika Anda mengonfigurasi TLS dan membiarkan titik akhir http dinonaktifkan, pastikan Anda menggunakan titik akhir https://.

    Sampel baris perintah:

    .\ExecuteSampleSplitMerge.ps1 ^
    -UserName 'mysqluser' -Password 'MySqlPassw0rd' ^
    -ShardMapManagerServerName 'abcdefghij.database.windows.net' ^
    -SplitMergeServiceEndpoint 'https://mysplitmergeservice.cloudapp.net' ^
    -CertificateThumbprint '0123456789abcdef0123456789abcdef01234567'
    

    Jika Anda menerima kesalahan berikut, kemungkinan besar masalah dengan sertifikat titik akhir Web Anda. Coba sambungkan ke titik akhir Web dengan browser Web favorit Anda dan periksa apakah ada kesalahan sertifikat.

    Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLSsecure channel.

    Jika berhasil, output akan terlihat seperti output berikut:

    .\ExecuteSampleSplitMerge.ps1 -UserName 'mysqluser' -Password 'MySqlPassw0rd' -ShardMapManagerServerName 'abcdefghij.database.windows.net' -SplitMergeServiceEndpoint 'http://mysplitmergeservice.cloudapp.net' -CertificateThumbprint 0123456789abcdef0123456789abcdef01234567
    Sending split request
    Began split operation with id dc68dfa0-e22b-4823-886a-9bdc903c80f3
    Polling split-merge request status. Press Ctrl-C to end
    Progress: 0% | Status: Queued | Details: [Informational] Queued request
    Progress: 5% | Status: Starting | Details: [Informational] Starting split-merge state machine for request.
    Progress: 5% | Status: Starting | Details: [Informational] Performing data consistency checks on target     shards.
    Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from     source to target shard.
    Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Waiting for reference tables copy     completion.
    Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from     source to target shard.
    Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Moving key range [100:110) of     Sharded tables
    Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Successfully copied key range     [100:110) for table [dbo].[MyShardedTable]
    ...
    ...
    Progress: 90% | Status: Completing | Details: [Informational] Successfully deleted shardlets in table     [dbo].[MyShardedTable].
    Progress: 90% | Status: Completing | Details: [Informational] Deleting any temp tables that were created     while processing the request.
    Progress: 100% | Status: Succeeded | Details: [Informational] Successfully processed request.
    Sending merge request
    Began merge operation with id 6ffc308f-d006-466b-b24e-857242ec5f66
    Polling request status. Press Ctrl-C to end
    Progress: 0% | Status: Queued | Details: [Informational] Queued request
    Progress: 5% | Status: Starting | Details: [Informational] Starting split-merge state machine for request.
    Progress: 5% | Status: Starting | Details: [Informational] Performing data consistency checks on target     shards.
    Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from     source to target shard.
    Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Moving key range [100:110) of     Sharded tables
    Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Successfully copied key range     [100:110) for table [dbo].[MyShardedTable]
    ...
    ...
    Progress: 90% | Status: Completing | Details: [Informational] Successfully deleted shardlets in table     [dbo].[MyShardedTable].
    Progress: 90% | Status: Completing | Details: [Informational] Deleting any temp tables that were created     while processing the request.
    Progress: 100% | Status: Succeeded | Details: [Informational] Successfully processed request.
    
  6. Bereksperimenlah dengan jenis data lainnya. Semua skrip ini mengambil parameter opsional-ShardKeyType yang memungkinkan Anda menentukan jenis kunci. Defaultnya adalah Int32, tetapi Anda juga dapat menentukan Int64, Guid, atau Biner.

Membuat permintaan

Layanan ini dapat digunakan baik dengan menggunakan UI web, atau dengan mengimpor dan menggunakan SplitMerge.psm1 modul PowerShell, yang mengirimkan permintaan Anda melalui peran web.

Layanan ini dapat memindahkan data dalam tabel yang dipecah dan tabel referensi. Tabel yang dipecah memiliki kolom kunci pemecah dan memiliki data baris yang berbeda pada setiap pecahan. Tabel referensi tidak dipecah sehingga berisi data baris yang sama pada setiap shard. Tabel referensi berguna untuk data yang tidak sering berubah dan digunakan untuk JOIN dengan tabel pecahan dalam kueri.

Untuk melakukan operasi pisah-gabung, Anda harus mendeklarasikan tabel pecahan dan tabel referensi yang ingin Anda pindahkan. Operasi ni dicapai dengan API SchemaInfo. API ini berada di Microsoft.Azure.SqlDatabase.ElasticScale.ShardManagement.Schema namespace layanan.

  1. Untuk setiap tabel yang dipecah, buat objek ShardedTableInfo yang menjelaskan nama skema induk tabel (opsional, default ke "dbo"), nama tabel, dan nama kolom dalam tabel yang berisi kunci pemecah.
  2. Untuk setiap tabel referensi, buat objek ReferenceTableInfo yang menjelaskan nama skema induk tabel (opsional, default ke "dbo") dan nama tabel.
  3. Tambahkan objek TableInfo sebelumnya ke objek SchemaInfo baru.
  4. Dapatkan referensi ke objek ShardMapManager, dan hubungi GetSchemaInfoCollection.
  5. Tambahkan SchemaInfo ke SchemaInfoCollection, menyediakan nama peta pecahan.

Contohnya dapat dilihat dalam skrip SetupSampleSplitMergeEnvironment.ps1.

Layanan Pisah-Gabung tidak membuat database target (atau skema untuk tabel apa pun dalam database) untuk Anda. Mereka harus dibuat sebelumnya sebelum mengirim permintaan ke layanan.

Pemecahan Masalah

Anda mungkin melihat pesan berikut saat menjalankan contoh skrip PowerShell:

Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

Kesalahan ini berarti bahwa sertifikat TLS/SSL Anda tidak dikonfigurasi dengan benar. Ikuti instruksi di bagian Sambungkan dengan browser web.

Jika Anda tidak dapat mengirimkan permintaan, Anda mungkin melihat ini:

[Exception] System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'dbo.InsertRequest'.

Dalam hal ini, periksa file konfigurasi Anda, khususnya pengaturan untuk WorkerRoleSynchronizationStorageAccountConnectionString. Kesalahan ini biasanya menunjukkan bahwa peran pekerja tidak berhasil menginisialisasi database metadata pada penggunaan pertama.

Sumber Daya Tambahan:

Belum menggunakan alat database elastis? Lihat Panduan Memulai kami. Jika memiliki pertanyaan, hubungi kami di halaman pertanyaan Tanya Jawab Microsoft untuk SQL Database dan untuk permintaan fitur, tambahkan ide-ide baru atau ambil suara terbanyak untuk ide yang sudah ada di forum umpan balik SQL Database.