Master/Master/Slave (High availability/High performance)

Last updated on
30 April 2025

The following setup has 2 masters and 2 slaves. The two master will also be used as slaves. The setup will prefer master1 as the master, and switch to master2 if master1 fails.

<?php
$databases['default']['master1'] = array (
  'database' => 'mydatabase',
  'username' => 'readwrite',
  'password' => 'readwrite',
  'host' => 'master1',
  'port' => '',
  'driver' => 'mysql',
  'prefix' => '',
);
$databases['default']['master2'] = array (
  'database' => 'mydatabase',
  'username' => 'readwrite',
  'password' => 'readwrite',
  'host' => 'master2',
  'port' => '',
  'driver' => 'mysql',
  'prefix' => '',
);

$databases['default']['slave'][] = array (
  'database' => 'mydatabase',
  'username' => 'readonly',
  'password' => 'readonly',
  'host' => 'slave1',
  'port' => '',
  'driver' => 'mysql',
  'prefix' => '',
  'readonly' => TRUE,
);
$databases['default']['slave'][] = array (
  'database' => 'mydatabase',
  'username' => 'readonly',
  'password' => 'readonly',
  'host' => 'slave2',
  'port' => '',
  'driver' => 'mysql',
  'prefix' => '',
  'readonly' => TRUE,
);
$databases['default']['slave'][] = $databases['default']['master1'];
$databases['default']['slave'][] = $databases['default']['master2'];

$databases['default']['default'] = array (
  'driver' => 'autoslave',
  'master' => array('master1', 'master2'),
  'slave' => array('slave'),
);
?>

Help improve this page

Page status: Not set

You can: