Menyambungkan ke Azure Database for MySQL dengan pengalihan

BERLAKU UNTUKAzure Database for MySQL - Server Tunggal

Penting

Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?

Artikel ini menjelaskan cara menyambungkan aplikasi ke server Azure Database for MySQL Anda dengan mode pengalihan. Pengalihan mengurangi latensi jaringan antara aplikasi klien dan server MySQL dengan memungkinkan aplikasi terhubung langsung ke node server backend.

Sebelum Anda mulai

Masuk ke portal Azure. Buat server Azure Database for MySQL dengan mesin versi 5.6, 5.7 atau 8.0.

Untuk detailnya, lihat cara membuat server Azure Database for MySQL menggunakan portal Microsoft Azure atau Azure CLI.

Penting

Pengalihan saat ini tidak didukung dengan Private Link untuk Azure Database for MySQL.

Aktifkan pengalihan

Di server Azure Database for MySQL Anda, redirect_enabled konfigurasikan parameter ON untuk memungkinkan koneksi dengan mode pengalihan. Untuk memperbarui parameter server ini, gunakan portal Microsoft Azure atau Azure CLI.

PHP

Dukungan untuk pengalihan dalam aplikasi PHP tersedia melalui ekstensi mysqlnd_azure, yang dikembangkan oleh Microsoft.

Ekstensi mysqlnd_azure tersedia untuk ditambahkan ke aplikasi PHP melalui PECL, dan sangat disarankan untuk menginstal dan mengonfigurasi ekstensi melalui paket PECL yang diterbitkan secara resmi.

Penting

Dukungan untuk pengalihan di PHP mysqlnd_azure saat ini dalam pratinjau.

Logika pengalihan

Penting

Logika pengalihan/perilaku awal versi 1.1.0 diperbarui dan disarankan untuk menggunakan versi 1.1.0+.

Perilaku pengalihan ditentukan oleh nilai mysqlnd_azure.enableRedirect. Tabel di bawah ini memberi kerangka perilaku pengalihan berdasarkan nilai parameter ini dimulai pada versi 1.1.0+.

Jika Anda menggunakan versi ekstensi mysqlnd_azure yang lebih lama (versi 1.0.0-1.0.3), perilaku pengalihan ditentukan oleh nilai mysqlnd_azure.enabled. Nilai yang valid adalah off (bertindak sama seperti perilaku yang dikerangkakan dalam tabel di bawah) dan on (bertindak seperti preferred dalam tabel di bawah).

mysqlnd_azure.enable Nilairedirect Perilaku
off atau 0 Pengalihan tidak akan digunakan.
on atau 1 - Jika koneksi tidak menggunakan SSL di sisi driver, tidak ada koneksi yang dibuat. Kesalahan berikut dikembalikan: "mysqlnd_azure.enableRedirect aktif, tetapi opsi SSL tidak diatur dalam string koneksi. Pengalihan hanya dimungkinkan dengan SSL."
- Jika SSL digunakan di sisi driver, tetapi pengalihan tidak didukung di server, koneksi pertama dibatalkan, dan kesalahan berikut dikembalikan: "Koneksi ion dibatalkan karena pengalihan tidak diaktifkan di server MySQL atau paket jaringan tidak memenuhi protokol pengalihan."
- Jika server MySQL mendukung pengalihan, tetapi koneksi yang dialihkan gagal karena alasan apa pun, batalkan juga koneksi proksi pertama. Kembalikan kesalahan koneksi yang dialihkan.
preferred atau 2
(nilai default)
- mysqlnd_azure akan menggunakan pengalihan jika memungkinkan.
- Jika koneksi tidak menggunakan SSL di sisi driver, server tidak mendukung pengalihan, atau koneksi yang dialihkan gagal terhubung karena alasan nonfatal saat koneksi proksi masih valid, koneksi tersebut kembali ke koneksi proksi pertama.

Agar koneksi yang berhasil ke server tunggal Azure Database for MySQL menggunakan mysqlnd_azure.enableRedirect, Anda harus mengikuti langkah-langkah wajib untuk menggabungkan sertifikat akar Anda sesuai persyaratan kepatuhan. Untuk detail selengkapnya, silakan kunjungi tautan.

Bagian berikutnya dari dokumen menguraikan cara menginstal mysqlnd_azure ekstensi menggunakan PECL dan mengatur nilai parameter ini.

Prasyarat

  • PHP versi 7.2.15+ dan 7.3.2+
  • PHP PEAR
  • php-mysql
  • Server Azure Database for MySQL
  1. Pasang mysqlnd_azure dengan PECL. Disarankan untuk menggunakan versi 1.1.0+.

    sudo pecl install mysqlnd_azure
    
  2. Temukan direktori ekstensi (extension_dir) dengan menjalankan hal di bawah ini:

    php -i | grep "extension_dir"
    
  3. Ubah direktori ke folder yang dikembalikan dan pastikan mysqlnd_azure.so berada di dalam folder ini.

  4. Temukan folder untuk .ini dengan menjalankan hal di bawah ini:

    php -i | grep "dir for additional .ini files"
    
  5. Ubah direktori ke folder yang dikembalikan ini.

  6. Buat file .ini baru untuk mysqlnd_azure. Pastikan urutan alfabet nama setelah mysqnld, karena modul dimuat sesuai dengan urutan nama file ini. Misalnya, jika mysqlnd .ini bernama 10-mysqlnd.ini, beri nama mysqlnd ini sebagai 20-mysqlnd-azure.ini.

  7. Dalam file .ini baru, tambahkan baris berikut untuk mengaktifkan pengalihan.

    extension=mysqlnd_azure
    mysqlnd_azure.enableRedirect = on/off/preferred
    

Konfirmasi pengalihan

Anda juga dapat mengonfirmasi pengalihan dikonfigurasi dengan contoh kode PHP di bawah ini. Buat file yang dengan nama mysqlConnect.php dan tempelkan kode di bawah ini ke dalamnya. Perbarui nama server, nama pengguna, dan kata sandi dengan nama server Anda sendiri.

<?php
$host = '<yourservername>.mysql.database.azure.com';
$username = '<yourusername>@<yourservername>';
$password = '<yourpassword>';
$db_name = 'testdb';
  echo "mysqlnd_azure.enableRedirect: ", ini_get("mysqlnd_azure.enableRedirect"), "\n";
  $db = mysqli_init();
  //The connection must be configured with SSL for the redirection test
  $link = mysqli_real_connect ($db, $host, $username, $password, $db_name, 3306, NULL, MYSQLI_CLIENT_SSL);
  if (!$link) {
     die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
  }
  else {
    echo $db->host_info, "\n"; //if redirection succeeds, the host_info will differ from the hostname you used used to connect
    $res = $db->query('SHOW TABLES;'); //test query with the connection
    print_r ($res);
    $db->close();
  }
?>

Langkah berikutnya

  • Untuk informasi selengkapnya tentang string koneksi, lihat String Koneksi.