Operasi pemeliharaan penyedia sumber daya MySQL di Azure Stack Hub

Penting

Mulai dari Azure Stack Hub build 2108, penyedia sumber SQL dan MySQL ditawarkan untuk menjadi langganan yang telah diberikan akses. Jika Anda ingin mulai menggunakan fitur ini, atau jika Anda perlu meningkatkan versi sebelumnya, buka kasus dukungan dan teknisi dukungan kami akan memandu Anda melewati proses penyebaran dan peningkatan.

Penyedia sumber daya MySQL berjalan pada mesin virtual (VM) yang terkunci. Untuk mengaktifkan operasi pemeliharaan, Anda perlu memperbarui keamanan mesin virtual. Untuk melakukan hal ini dengan menggunakan prinsip hak istimewa minimal (POLP), Anda dapat menggunakan titik akhir PowerShell Just Enough Administration (JEA) DBAdapterMaintenance. Paket penginstalan penyedia sumber daya memasukkan skrip untuk operasi ini.

Penerapan patch dan Pembaruan

Penyedia sumber daya MySQL tidak dilayani sebagai bagian dari Azure Stack Hub karena merupakan komponen add-on. Microsoft menyediakan pembaruan penyedia sumber daya MySQL jika perlu.

Untuk MySQL RP V1, Ketika penyedia sumber daya MySQL Server yang telah diperbarui dirilis, sebuah skrip disediakan untuk menerapkan pembaruan. Skrip ini membuat mesin virtual penyedia sumber daya baru, memigrasikan status mesin virtual penyedia lama ke mesin virtual baru.

Untuk MySQL RP V2, penyedia sumber daya diperbarui menggunakan fitur pembaruan yang sama dengan yang digunakan untuk menerapkan pembaruan Azure Stack Hub.

Untuk informasi selengkapnya, lihat Memperbarui penyedia sumber daya MySQL.

Memperbarui mesin virtual penyedia

MySQL RP V1 berjalan di mesin virtual pengguna sehingga Anda harus menerapkan patch dan pembaruan yang diperlukan saat dirilis. Anda dapat menginstal paket Windows Update selama penginstalan atau pembaruan penyedia sumber daya.

MySQL RP V2 berjalan pada Server Windows terkelola yang disembunyikan. Anda tidak perlu menerapkan patch atau memperbarui mesin virtual penyedia sumber daya. Mesin virtual akan diperbarui secara otomatis ketika Anda memperbarui RP.

Memperbarui definisi Windows Defender mesin virtual

Petunjuk ini hanya berlaku untuk SQL RP V1 yang berjalan di Sistem Terintegrasi Azure Stack Hub.

Untuk memperbarui definisi Defender, ikuti langkah-langkah berikut:

  1. Unduh pembaruan definisi Windows Defender dari Definisi Windows Defender.

    Pada halaman definisi, gulir ke bawah ke "Mengunduh dan menginstal definisi secara manual". Unduh file 64-bit "Antivirus Windows Defender untuk Windows 10 dan Windows 8.1".

    Atau, gunakan tautan langsung ini untuk mengunduh/menjalankan file fpam-fe.exe.

  2. Buka sesi PowerShell ke titik akhir pemeliharaan pada mesin virtual adapter penyedia sumber daya MySQL.

  3. Salin file pembaruan definisi ke mesin virtual adapter penyedia sumber daya menggunakan sesi titik akhir pemeliharaan.

  4. Pada sesi PowerShell pemeliharaan, jalankan perintah Update-DBAdapterWindowsDefenderDefinitions.

  5. Setelah Anda menginstal definisi tersebut, kami menyarankan Anda untuk menghapus file pembaruan definisi dengan menggunakan perintah Remove-ItemOnUserDrive).

Contoh skrip PowerShell untuk memperbarui definisi.

Anda dapat mengedit dan menjalankan skrip berikut untuk memperbarui definisi Defender. Gantikan nilai dalam skrip dengan nilai dari lingkungan Anda.

# Set credentials for the local admin on the resource provider VM.
$vmLocalAdminPass = ConvertTo-SecureString '<local admin user password>' -AsPlainText -Force
$vmLocalAdminUser = "<local admin user name>"
$vmLocalAdminCreds = New-Object System.Management.Automation.PSCredential `
    ($vmLocalAdminUser, $vmLocalAdminPass)

# Provide the public IP address for the adapter VM.
$databaseRPMachine  = "<RP VM IP address>"
$localPathToDefenderUpdate = "C:\DefenderUpdates\mpam-fe.exe"

# Download Windows Defender update definitions file from https://www.microsoft.com/en-us/wdsi/definitions.  
Invoke-WebRequest -Uri 'https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64' `
    -Outfile $localPathToDefenderUpdate  

# Create a session to the maintenance endpoint.
$session = New-PSSession -ComputerName $databaseRPMachine `
    -Credential $vmLocalAdminCreds -ConfigurationName DBAdapterMaintenance `
    -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)

# Copy the defender update file to the adapter VM.
Copy-Item -ToSession $session -Path $localPathToDefenderUpdate `
     -Destination "User:\"

# Install the update definitions.
Invoke-Command -Session $session -ScriptBlock `
    {Update-AzSDBAdapterWindowsDefenderDefinition -DefinitionsUpdatePackageFile "User:\mpam-fe.exe"}

# Cleanup the definitions package file and session.
Invoke-Command -Session $session -ScriptBlock `
    {Remove-AzSItemOnUserDrive -ItemPath "User:\mpam-fe.exe"}
$session | Remove-PSSession

Mengonfigurasi ekstensi Azure Diagnostics untuk penyedia sumber daya MySQL

Petunjuk ini hanya berlaku untuk SQL RP V1 yang berjalan di Sistem Terintegrasi Azure Stack Hub.

Ekstensi Azure Diagnostics diinstal pada mesin virtual adapter penyedia sumber daya MySQL secara default. Langkah-langkah berikut menunjukkan cara menyesuaikan ekstensi untuk mengumpulkan log peristiwa operasional penyedia sumber daya MySQL dan log IIS untuk tujuan pemecahan masalah dan pengauditan.

  1. Masuk ke portal administrator Azure Stack Hub.

  2. Pilih Mesin virtual dari panel sebelah kiri, cari mesin virtual adapter penyedia sumber daya MySQL dan pilih mesin virtual.

  3. Di pengaturan Diagnostik dari mesin virtual, buka tab Log dan pilih Sesuaikan untuk menyesuaikan log peristiwa yang dikumpulkan.

    Buka pengaturan diagnostik

  4. Tambahkan Microsoft-AzureStack-DatabaseAdapter/Operational!* untuk mengumpulkan log peristiwa operasional penyedia sumber daya MySQL.

    Tambah log peristiwa

  5. Untuk mengaktifkan kumpulan log IIS, periksa log IIS dan Log permintaan gagal.

    Tambah log IIS

  6. Terakhir, pilih Simpan untuk menyimpan semua pengaturan diagnostik.

Setelah kumpulan log peristiwa dan log IIS dikonfigurasi untuk penyedia sumber daya MySQL, log dapat ditemukan di akun penyimpanan sistem bernama mysqladapterdiagaccount.

Untuk mempelajari lebih lanjut tentang ekstensi Azure Diagnostics, lihat Tentang ekstensi Azure Diagnostics .

Rotasi rahasia

Petunjuk ini hanya berlaku untuk Sistem Terintegrasi Azure Stack Hub.

Saat menggunakan penyedia sumber daya SQL dan MySQL dengan sistem terintegrasi Azure Stack Hub, operator Azure Stack Hub bertanggung jawab untuk merotasi rahasia infrastruktur penyedia sumber daya berikut untuk memastikan bahwa masa berlakunya tidak berakhir:

  • Sertifikat SSL eksternal yang disediakan saat penyebaran.
  • Kata sandi akun administrator lokal pada mesin virtual penyedia sumber daya yang disediakan selama penyebaran.
  • Kata sandi pengguna diagnostik penyedia sumber daya (dbadapterdiag).
  • (versi >= 1.1.47.0) Sertifikat Key Vault yang dihasilkan selama penyebaran.

Contoh PowerShell untuk merotasi rahasia

Mengubah semua rahasia secara bersamaan:

.\SecretRotationMySQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -DiagnosticsUserPassword $passwd `
    -DependencyFilesLocalPath $certPath `
    -DefaultSSLCertificatePassword $certPasswd `  
    -VMLocalCredential $localCreds `
    -KeyVaultPfxPassword $keyvaultCertPasswd

Mengubah kata sandi pengguna diagnostik:

.\SecretRotationMySQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -DiagnosticsUserPassword  $passwd

Mengubah kata sandi akun admin lokal mesin virtual:

.\SecretRotationMySQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -VMLocalCredential $localCreds

Merotasi sertifikat SSL

.\SecretRotationMySQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -DependencyFilesLocalPath $certPath `
    -DefaultSSLCertificatePassword $certPasswd

Merotasi sertifikat Key Vault

.\SecretRotationSQLProvider.ps1 `
    -Privilegedendpoint $Privilegedendpoint `
    -CloudAdminCredential $cloudCreds `
    -AzCredential $adminCreds `
    -KeyVaultPfxPassword $keyvaultCertPasswd

Parameter SecretRotationMySQLProvider.ps1

Parameter Deskripsi Komentar
LingkunganAzure Lingkungan Azure dari akun administrator layanan yang digunakan untuk menyebarkan Azure Stack Hub. Diperlukan hanya untuk penyebaran Microsoft Entra. Nama lingkungan yang didukung adalah AzureCloud, AzureUSGovernment, atau jika menggunakan ID Microsoft Entra Tiongkok, AzureChinaCloud. Opsional
AzCredential Kredensial akun administrator layanan Azure Stack Hub. Skrip akan gagal jika akun yang Anda gunakan di AzCredential memerlukan autentikasi multifaktor (MFA). Wajib
CloudAdminCredential Kredensial akun domain administrator cloud Azure Stack Hub. Wajib
PrivilegedEndpoint Titik Akhir Istimewa untuk mengakses Get-AzureStackStampInformation. Wajib
KataSandiPenggunaDiagnostik Kata sandi akun pengguna diagnostik. Opsional
KredensialLokalVM Akun administrator lokal di mesin virtual MySQLAdapter. Opsional
KataSandiSertifikatSSLDefault Kata sandi Sertifikat SSL Default (.pfx). Opsional
JalurLokalFileDependensi Jalur lokal file dependensi. Opsional
KataSandiKeyFaultPfx Kata sandi yang digunakan untuk menghasilkan sertifikat Key Vault untuk adapter database. Opsional

Petunjuk ini hanya berlaku untuk SQL RP V2 yang berjalan di Sistem Terintegrasi Azure Stack Hub.

Catatan

Rotasi rahasia untuk penyedia sumber daya (RP) nilai tambah saat ini hanya didukung melalui PowerShell.

Seperti infrastruktur Azure Stack Hub, penyedia sumber daya nilai tambah menggunakan rahasia internal dan eksternal. Sebagai operator, Anda bertanggung jawab untuk:

  • Memberikan rahasia eksternal yang diperbarui, seperti sertifikat TLS baru yang digunakan untuk mengamankan titik akhir penyedia sumber daya.

  • Mengelola rotasi rahasia penyedia sumber daya secara teratur.

Ketika masa rahasia hampir berakhir, peringatan berikut akan dimunculkan di portal administrator. Menyelesaikan rotasi rahasia akan menyelesaikan pemberitahuan ini:

  • Tanggal kedaluwarsa sertifikat internal tertunda

  • Tanggal kedaluwarsa sertifikat eksternal tertunda

Prasyarat

Dalam persiapan untuk proses rotasi:

  1. Jika Anda belum melakukannya, Instal modul PowerShell Az untuk Azure Stack Hub sebelum melanjutkan. Versi 2.0.2-pratinjau atau yang lebih baru diperlukan untuk rotasi rahasia Azure Stack Hub. Untuk informasi selengkapnya, lihat Bermigrasi dari AzureRM ke Azure PowerShell Az di Azure Stack Hub.

  2. Instal modul Azs.Deployment.Admin 1.0.0: PowerShell Gallery | Azs.Deployment.Admin 1.0.0

Install-Module -Name Azs.Deployment.Admin
  1. Jika masa sertifikat eksternal hampir berakhir, tinjau persyaratan sertifikat infrastruktur kunci umum (PKI) Azure Stack Hub untuk mengetahui informasi prasyarat penting sebelum memperoleh/memperbarui sertifikat X509 Anda, termasuk detail tentang format PFX yang diperlukan. Tinjau juga persyaratan yang ditentukan di bagian sertifikat PaaS opsional, untuk penyedia sumber daya nilai tambah khusus Anda.

Menyiapkan sertifikat TLS baru untuk rotasi sertifikat eksternal

Catatan

Jika masa sertifikat internal saja yang hampir berakhir, Anda dapat melewati bagian ini.

Selanjutnya, buat atau perpanjang sertifikat TLS Anda untuk mengamankan titik akhir penyedia sumber daya nilai tambah:

  1. Selesaikan langkah-langkah di Membuat permintaan penandatanganan sertifikat (CSR) untuk perpanjangan sertifikat untuk penyedia sumber daya Anda. Di sini, Anda menggunakan alat Pemeriksa Kesiapan Azure Stack Hub untuk membuat CSR. Pastikan untuk menjalankan cmdlet yang benar untuk penyedia sumber daya Anda, di langkah "Membuat permintaan sertifikat untuk layanan Azure Stack Hub lainnya". Misalnya New-AzsDbAdapterCertificateSigningRequest digunakan untuk RP SQL dan MySQL. Setelah selesai, Anda dapat mengirimkan file .REQ yang dihasilkan ke Otoritas Sertifikat (CA) Anda untuk menerima sertifikat baru.

  2. Setelah Anda menerima file sertifikat dari CA, selesaikan langkah-langkah di Menyiapkan sertifikat untuk penyebaran atau rotasi. Anda menggunakan alat Pemeriksa Kesiapan lagi, untuk memproses file yang ditampilkan dari CA.

  3. Terakhir, selesaikan langkah-langkah di Memvalidasi sertifikat PKI Azure Stack Hub. Anda menggunakan alat Pemeriksa Kesiapan sekali lagi, untuk melakukan uji validasi pada sertifikat baru Anda.

Merotasi sertifikat internal

Buka konsol PowerShell yang ditinggikan dan selesaikan langkah-langkah berikut untuk merotasi rahasia eksternal penyedia sumber daya:

  1. Masuk ke lingkungan Azure Stack Hub Anda menggunakan info masuk operator Anda. Lihat Menyambungkan ke Azure Stack Hub dengan PowerShell untuk skrip masuk PowerShell. Pastikan untuk menggunakan cmdlet PowerShell Az (bukan AzureRM), dan ganti semua nilai placeholder, seperti URL titik akhir dan nama penyewa direktori.

  2. Tentukan id produk penyedia sumber daya. Jalankan Get-AzsProductDeployment cmdlet untuk mengambil daftar penyebaran penyedia sumber daya terbaru. Kumpulan "value" yang ditampilkan berisi elemen untuk setiap penyedia sumber daya yang disebarkan. Temukan penyedia sumber daya yang menarik dan catat nilai untuk properti ini:

    • "name" - berisi ID produk penyedia sumber daya di dalam segmen kedua dari nilainya.

    Misalnya, penyebaran MySQL RP dapat berisi ID produk "microsoft.mysqlrp".

  3. Jalankan cmdlet Invoke-AzsProductRotateSecretsAction untuk merotasi sertifikat internal:

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

Merotasi sertifikat eksternal

Anda harus terlebih dahulu mencatat nilai untuk parameter berikut.

Tempat penampung Deskripsi Contoh nilai
<product-id> ID produk dari penyebaran penyedia sumber daya terbaru. microsoft.mysqlrp
<installed-version> Versi penyebaran penyedia sumber daya terbaru. 2.0.0.2
<package-id> ID paket dibangun dengan menggabungkan id produk dan versi terinstal. microsoft.mysqlrp.2.0.0.2
<cert-secret-name> Nama tempat rahasia sertifikat disimpan. SSLCert
<cert-pfx-file-path> Jalur ke file PFX sertifikat Anda. C:\dir\dbadapter-cert-file.pfx
<pfx-password> Kata sandi yang ditetapkan ke file .PFX sertifikat Anda. strong@CertSecret6

Buka konsol PowerShell yang ditinggikan dan selesaikan langkah-langkah berikut:

  1. Masuk ke lingkungan Azure Stack Hub Anda menggunakan info masuk operator Anda. Lihat Menyambungkan ke Azure Stack Hub dengan PowerShell untuk skrip masuk PowerShell. Pastikan untuk menggunakan cmdlet PowerShell Az (bukan AzureRM), dan ganti semua nilai placeholder, seperti URL titik akhir dan nama penyewa direktori.

  2. Dapatkan nilai parameter id produk. Jalankan Get-AzsProductDeployment cmdlet untuk mengambil daftar penyebaran penyedia sumber daya terbaru. Kumpulan "value" yang ditampilkan berisi elemen untuk setiap penyedia sumber daya yang disebarkan. Temukan penyedia sumber daya yang menarik dan catat nilai untuk properti ini:

    • "name" - berisi ID produk penyedia sumber daya di segmen kedua pada nilainya.
    • "properties"."deployment"."version" - berisi nomor versi yang saat ini disebarkan.

    Misalnya, penyebaran MySQL RP dapat berisi ID produk "microsoft.mysqlrp" dan versi "2.0.0.2".

  3. Buat ID paket penyedia sumber daya, dengan menggabungkan ID produk dan versi penyedia sumber daya. Misalnya, dengan menggunakan nilai yang berasal dari langkah sebelumnya, maka ID paket SQL RP-nya adalah microsoft.mysqlrp.2.0.0.2.

  4. Menggunakan ID paket yang berasal dari langkah sebelumnya, jalankan Get-AzsProductSecret -PackageId untuk mengambil daftar jenis rahasia yang digunakan oleh penyedia sumber daya. Dalam kumpulan value yang ditampilkan, temukan elemen yang berisi nilai "Certificate" untuk properti "properties"."secretKind". Elemen ini berisi properti untuk rahasia sertifikat RP. Catat nama yang ditetapkan untuk rahasia sertifikat ini, yang diidentifikasi oleh segmen terakhir dari properti "name", tepat di atas "properties".

    Misalnya, kumpulan rahasia yang dikembalikan untuk SQL RP berisi "Certificate" nama rahasia SSLCert.

  5. Gunakan Set-AzsProductSecret cmdlet untuk mengimpor sertifikat baru Anda ke Key Vault, yang akan digunakan oleh proses rotasi. Ganti nilai tempat penampung variabel dengan sesuai sebelum menjalankan skrip.

    $productId = '<product-id>'
    $packageId = $productId + '.' + '<installed-version>'
    $certSecretName = '<cert-secret-name>' 
    $pfxFilePath = '<cert-pfx-file-path>'
    $pfxPassword = ConvertTo-SecureString '<pfx-password>' -AsPlainText -Force   
    Set-AzsProductSecret -PackageId $packageId -SecretName $certSecretName -PfxFileName $pfxFilePath -PfxPassword $pfxPassword -Force
    
  6. Terakhir, gunakan cmdlet Invoke-AzsProductRotateSecretsAction untuk merotasi rahasia:

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

Memantau proses rotasi rahasia

Anda dapat memantau kemajuan rotasi rahasia di konsol PowerShell, atau di portal administrator dengan memilih penyedia sumber daya di layanan Marketplace:

Layar rotasi rahasia sedang dalam proses.

Catatan

Rotasi rahasia dapat memakan waktu lebih dari 10 menit. Setelah selesai, Status penyedia sumber daya akan berubah menjadi "Terinstal".

Mengumpulkan log diagnostik

Azure Stack Hub memiliki beberapa cara untuk mengumpulkan, menyimpan, dan mengirim log diagnostik ke Dukungan Microsoft. Mulai dari versi 1.1.93, Penyedia Sumber Daya MySQL mendukung cara standar pengumpulan log dari lingkungan Azure Stack Hub Anda. Untuk informasi selengkapnya, lihat Kumpulan log diagnostik.

Mulai dari versi 1.1.93, Penyedia Sumber Daya MySQL mendukung cara standar pengumpulan log dari lingkungan Azure Stack Hub Anda. Jika Anda menggunakan versi yang lebih lama, disarankan untuk memperbarui Penyedia Sumber Daya MySQL Anda ke versi terbaru.

Untuk mengumpulkan log dari mesin virtual yang terkunci, gunakan titik akhir PowerShell Just Enough Administration (JEA) DBAdapterDiagnostics. Titik akhir ini menyediakan perintah berikut:

  • Get-AzsDBAdapterLog. Perintah ini membuat paket zip dari log diagnostik penyedia sumber daya dan menyimpan file di drive pengguna sesi. Anda dapat menjalankan perintah ini tanpa parameter apa pun dan mengumpulkan log dari empat jam terakhir.

  • Remove-AzsDBAdapterLog. Perintah ini menghapus paket log yang ada di mesin virtual penyedia sumber daya.

Persyaratan dan proses titik akhir

Ketika penyedia sumber daya diinstal atau diperbarui, akun pengguna dbadapterdiag akan dibuat. Anda dapat menggunakan akun ini untuk mengumpulkan log diagnostik.

Catatan

Kata sandi akun dbadapterdiag sama dengan kata sandi yang digunakan untuk administrator lokal di mesin virtual dan dibuat selama penyebaran atau pembaruan penyedia sumber daya.

Untuk menggunakan perintah DBAdapterDiagnostics, buat sesi PowerShell jarak jauh ke mesin virtual penyedia sumber daya dan jalankan perintah Get-AzsDBAdapterLog.

Anda dapat mengatur rentang waktu pengumpulan log dengan menggunakan parameter FromDate dan ToDate. Jika Anda tidak menentukan salah satu atau kedua parameter ini, default berikut akan digunakan:

  • FromDate adalah empat jam sebelum waktu saat ini.
  • ToDate adalah waktu saat ini.

Contoh skrip PowerShell untuk mengumpulkan log:

Skrip berikut menunjukkan cara mengumpulkan log diagnostik dari mesin virtual penyedia sumber daya.

# Create a new diagnostics endpoint session.
$databaseRPMachineIP = '<RP VM IP address>'
$diagnosticsUserName = 'dbadapterdiag'
$diagnosticsUserPassword = '<Enter Diagnostic password>'
$diagCreds = New-Object System.Management.Automation.PSCredential `
        ($diagnosticsUserName, (ConvertTo-SecureString -String $diagnosticsUserPassword -AsPlainText -Force))
$session = New-PSSession -ComputerName $databaseRPMachineIP -Credential $diagCreds `
        -ConfigurationName DBAdapterDiagnostics -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)

# Sample that captures logs from the previous hour.
$fromDate = (Get-Date).AddHours(-1)
$dateNow = Get-Date
$sb = {param($d1,$d2) Get-AzSDBAdapterLog -FromDate $d1 -ToDate $d2}
$logs = Invoke-Command -Session $session -ScriptBlock $sb -ArgumentList $fromDate,$dateNow

# Copy the logs to the user drive.
$sourcePath = "User:\{0}" -f $logs
$destinationPackage = Join-Path -Path (Convert-Path '.') -ChildPath $logs
Copy-Item -FromSession $session -Path $sourcePath -Destination $destinationPackage

# Cleanup the logs.
$cleanup = Invoke-Command -Session $session -ScriptBlock {Remove-AzsDBAdapterLog}
# Close the session.
$session | Remove-PSSession

Batasan yang diketahui dari penyedia sumber daya MySQL Server Versi 1

Batasan:
Ketika skrip penyebaran, peningkatan, atau rotasi rahasia gagal, beberapa log tidak dapat dikumpulkan oleh mekanisme pengumpulan log standar.

Solusi sementara:
Selain menggunakan mekanisme pengumpulan log standar, buka folder Log di folder yang diekstrak, tempat skrip tersimpan, untuk menemukan lebih banyak log.

Langkah berikutnya

Menambahkan server hosting MySQL Server