Saya membaca pertanyaan ini replikasi master / slave MySQL tidak berfungsi dan jawabannya:
Menggunakan database slave hampir tidak diimplementasikan dalam inti Drupal. Jika Anda mengembangkan modul Anda sendiri maka panggilan ke db_query perlu menentukan bahwa mereka ingin menggunakan database slave menggunakan array $ options. Lihat DatabaseConnection :: defaultOptions untuk cara mengatur array ini.
Adakah cara tanpa membunuh anak kucing yang meretas inti untuk mendapatkan db_query()
dan db_select()
membuat lebih banyak permintaan SELECT budak?
Secara default, fungsi-fungsi ini akan meminta master kecuali jika secara khusus diberitahu untuk meminta budak (lihat API mereka) Anda harus menulis db_query($query, $args, array('target' => 'slave'))
untuk meminta budak dan inti (dan semua modul) tidak ditulis untuk mencapai ini.
Hanya pencarian (lihat bagian slave) dan agregator yang tampaknya memanfaatkan ini.
Sunting: Okt, 25
Saya melihat pressflow 7 keluar tapi saya tidak yakin apakah itu banyak membantu saat ini.
Saya belum menemukan sesuatu yang relevan jadi mari kita coba sedikit karunia untuk membantu ini mendapatkan jawaban.
Sunting: Okt, 31
Saya terutama khawatir tentang komentar Crell mengenai topik ini: Apa yang harus dilakukan dengan budak? .
Terutama, apakah ada masalah jika saya mengirim SELECT
pertanyaan ke slave, apa yang terjadi dengan keterlambatan dalam replikasi dan fakta bahwa saya mungkin ingin melakukan node_load()
sesaat setelah menyimpan node baru.
sumber
SELECT
permintaan? Bagaimana Anda menangani keterlambatan dalam replikasi dan fakta bahwa memuat simpul setelah disimpan dapat menyebabkan masalah?The AutoSlave pengalihan modul
SELECT
query untuk read-only database replicant, dan dibutuhkan dalam replikasi akun lag.Menurut dokumen modul, itu hanya menggunakan replant baca-saja ketika semua kondisi berikut ini benar:
sumber
dari apa yang saya dengar di Drupal BADcamp Pressflow baru-baru ini adalah cara untuk pergi jika Anda ingin konfigurasi master / slave. Anda akan terbatas pada Mysql sebagai DB. Juga, keluar dari " grup berkinerja tinggi " saat bekerja
sumber
Terlepas dari semua pekerjaan luar biasa yang dilakukan pada lapisan abstraksi basis data di Drupal 7, ini masih sangat sulit dilakukan dengan inti Drupal di luar kotak. Seperti yang telah disebutkan orang lain, AutoSlave adalah sebuah pilihan, meskipun bukan yang saya coba karena penolakan keras kepala saya untuk percaya bahwa itu harus sulit untuk melakukan ini.
Solusi sederhana yang saya temukan adalah sebagai berikut. Untuk merutekan semua
SELECT
s ke server slave, Anda membuat file berjudulselect.inc
di dalamincludes/database/mysql
direktori inti dengan konten berikut:Ada beberapa risiko dengan metode ini:
SELECT
dan mengarahkan mereka ke budak, yang tidak diragukan lagi akan menyebabkan masalah jika Anda memiliki keterlambatan dalam replikasi. Baca kalimat itu lagi.includes/database/mysql/select.inc
, file Anda akan ditimpa selama peningkatan, dan Anda harus mulai mempertahankan versi tambalan Anda sendiri yang dipilih.Jika Anda tidak memiliki server slave yang ditentukan di settings.php, kode di atas tidak akan menyebabkan masalah. Itu masih akan dengan anggun menurunkan menggunakan server master .
sumber
target => 'slave'
opsi yang ditetapkan, itu akan tetap berjalan pada koneksi default. Ini menyebalkan itu tidak mudah untuk menetapkan target koneksi lebih mudah diquery_alter
tingkat.