Ketika traffic meningkat, database sering jadi bottleneck. Read replica adalah solusi yang proven untuk scale read traffic.
Konsep Master-Replica
Primary/Master: Handles semua write operations
Replica/Slave: Handles read operations, sync dari primary
Satu primary bisa punya banyak replica
Kapan Butuh Read Replica?
Ratio read:write sangat tinggi (misal 95:5)
Query berat untuk reporting/analytics
Butuh backup tanpa impact ke production
Konfigurasi di Laravel
// config/database.php
'mysql' => [
'read' => [
'host' => [
'192.168.1.2', // replica 1
'192.168.1.3', // replica 2
],
],
'write' => [
'host' => '192.168.1.1', // primary
],
'sticky' => true, // read-your-writes consistency
'driver' => 'mysql',
'database' => env('DB_DATABASE'),
// ...
],
Dengan konfigurasi ini, Laravel otomatis mengirim SELECT ke replica dan INSERT/UPDATE/DELETE ke primary.
Force Query ke Primary
Kadang Anda perlu baca data yang baru saja diwrite:
// Gunakan sticky connection setelah write
User::create([...]); // write ke primary
User::find($id); // read dari primary karena sticky=true
Monitoring Replication Lag
-- Di replica server
SHOW SLAVE STATUS\G
-- Perhatikan Seconds_Behind_Master