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 navigasi ke direktori tempat Anda mengunduh nuget.exe. Unduhan mencakup perintah PowerShell.

  3. Unduh paket Pisah-Gabung ke direktori saat ini dengan perintah di bawah ini:

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

File ditempatkan dalam direktori bernama Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge.x.x.xxx.x di mana x.x.xxx.x mencerminkan nomor versi. Temukan file Layanan pisah-gabung di sub-direktori content\splitmerge\service, dan skrip Pisah-Gabung PowerShell (dan dll klien yang diperlukan) di sub-direktori content\splitmerge\powershell.

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. Klik 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. Dalam folder tempat Anda mengunduh rakitan Pisah-Gabung, buat salinan file ServiceConfiguration.Template.cscfg yang dikirim bersama SplitMergeService.cspkg dan ganti namanya menjadi 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 Kolase Windows (Transact-SQL).

    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 file .cscfg di bagian peran SplitMergeWebdan SplitMergeWorker di pengaturan ElasticScaleMetadata.

  5. Untuk peran SplitMergeWorker, masukkan untai 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 akan dilakukan untuk membuat layanan berjalan. 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

Anda dimintai kata sandi untuk melindungi kunci privat. Masukkan kata sandi yang kuat dan konfirmasikan. Anda kemudian diminta agar kata sandi digunakan sekali lagi setelah itu. Klik Ya di bagian 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 dua kali MyCert.pfx.
  2. Dalam Wizard Impor Sertifikat pilih Pengguna Saat Ini dan klik Berikutnya.
  3. Konfirmasi jalur file dan klik Berikutnya.
  4. Ketik kata sandi, centang Sertakan semua properti yang diperluas dan klik Berikutnya.
  5. Centang Secara otomatis pilih penyimpanan sertifikat[...] dan klik Berikutnya.
  6. Klik Selesai dan OK.

Mengunggah file PFX ke layanan awan

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

Memperbarui file konfigurasi layanan

Tempelkan thumbprint sertifikat yang disalin di atas ke atribut thumbprint/nilai 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" />

Harap dicatat bahwa untuk penyebaran produksi sertifikat terpisah harus digunakan untuk OS, 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. Klik Ringkasan.
  4. Pilih lingkungan penyiapan, lalu klik Unggah.
  5. Dalam kotak dialog, masukkan label penyebaran. Untuk 'Paket' dan 'Konfigurasi', klik 'Dari Lokal' dan pilih file SplitMergeService.cspkg 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 masalah dengan konfigurasi keamanan. Periksa apakah TLS/SSL dikonfigurasi seperti yang dijelaskan di atas.

Jika peran pekerja Anda gagal online, tetapi peran web Anda berhasil, kemungkinan besar terdapat 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. Skrip tersebut saat ini tidak berjalan di PowerShell 6 atau yang lebih baru.

File skrip yang disertakan adalah:

  1. SetupSampleSplitMergeEnvironment.ps1 - menyiapkan tingkat data pengujian untuk Pisah/Gabung (lihat tabel di bawah ini untuk deskripsi terperinci)

  2. ExecuteSampleSplitMerge.ps1 - menjalankan operasi pengujian pada tingkat data pengujian (lihat tabel di bawah ini untuk deskripsi terperinci)

  3. GetMappings.ps1, skrip sampel tingkat atas yang mencetak status pemetaan terpecah saat ini.

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

  5. SqlDatabaseHelpers.psm1, skrip pembantu untuk membuat dan mengelola database di Microsoft Azure SQL Database

    File PowerShell Langkah-langkah
    SetupSampleSplitMergeEnvironment.ps1 1. Membuat database manajer peta pecahan
    2. Membuat 2 database pecahan.
    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 yang dipecah.
    File PowerShell Langkah-langkah
    ExecuteSampleSplitMerge.ps1 1. Mengirim permintaan terpisah ke ujung depan web Layanan Pisah-Gabung, yang membagi setengah data dari hard pertama ke pecahan kedua.
    2. Polling ujung depan web untuk status permintaan pisah dan tunggu sampai permintaan selesai.
    3. Mengirim permintaan terpisah ke ujung depan web Layanan Pisah-Gabung, yang memindahkan setengah data dari pecahan pertama ke pecahan kedua.
    4. Polling ujung depan web untuk status permintaan gabung dan tunggu sampai permintaan selesai.

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

    SkripSetupSampleSplitMergeEnvironment.ps1 membuat semua database ini di server yang sama secara default untuk menjaga skrip tetap sederhana. Skrip ini bukan pembatasan layanan Pisah-Gabung itu sendiri.

    Login autentikasi SQL dengan akses baca/tulis ke DB akan diperlukan untuk Pisah-Gabung untuk memindahkan data dan memperbarui peta pecahan. Karena layanan Split-Merge berjalan di cloud, saat ini tidak mendukung Autentikasi Terpadu.

    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 skrip SetupSampleSplitMergeEnvironment.ps1 untuk membuat lingkungan sampel.

    Menjalankan skrip ini akan menghapus struktur data manajemen peta pecahan yang ada pada database manajer peta pecahan dan pecahan. 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 untuk menjalankan operasi pemisahan (memindahkan setengah data pada pecahan pertama ke pecahan kedua) dan kemudian operasi penggabungan (memindahkan data kembali ke pecahan 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 di bawah ini, kemungkinan besar terdapat 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 di bawah ini:

    > .\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 antarmuka pengguna web atau dengan mengimpor dan menggunakan modul SplitMerge.psm1 PowerShell yang akan 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 ditaitkan sehingga berisi data baris yang sama pada setiap pecahan. Tabel referensi berguna untuk data yang tidak sering berubah dan digunakan untuk GABUNG dengan tabel pecahan dalam kueri.

Untuk melakukan operasi penggabungan terpisah, Anda harus mendeklarasikan tabel pecahan dan tabel referensi yang ingin Anda pindahkan. Operasi ni dicapai dengan API SchemaInfo. API ini berada di ruang nama Microsoft.Azure.SqlDatabase.ElasticScale.ShardManagement.Schema.

  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 di atas 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 di bawah ini 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. Silakan ikuti instruksi di bagian 'Menghubungkan 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.