|LoadBalancer settings: $wgDBservers|
|Settings for the database load balancer (database servers and load ratios).
|Introduced in version:||1.2.0|
|Removed in version:||still in use|
|Allowed values:||see below|
|Other settings: Alphabetical | By function|
Database load balancer. This is a two-dimensional array, an array of server info structures. Fields are:
- Host name (see $wgDBserver). For MySQL, it can contain a port or socket path after a colon.
- Default database name (see $wgDBname)
- DB user (see $wgDBuser)
- DB password (see $wgDBpassword)
- "mysql" or "pgsql" (see $wgDBtype)
- ratio of DB_REPLICA load, must be >=0, the sum of all loads must be >0
- array of load ratios, the key is the query group name. A query may belong to several groups, the most specific group defined here is used. (introduced in 1.4.3)
- bit field:
- DBO_DEFAULT -- turns on DBO_TRX only if $wgCommandLineMode != true (recommended)
- DBO_DEBUG -- equivalent of $wgDebugDumpSql
- DBO_TRX -- automatically start transactions (see Database transactions)
- DBO_IGNORE -- ignore errors (not useful in LocalSettings.php)
- DBO_NOBUFFER -- turn off buffering (not useful in LocalSettings.php)
- DBO_SSL -- use a secure connection
- DBO_COMPRESS -- compress communication
- DBO_PERSISTENT -- enable persistent connections
Leave at false to use the single-server variables listed above.
The master must be the first entry in the array.
$wgDBservers = [ [ 'host' => "master.serv.er", 'dbname' => "wikidb", 'user' => "wikiuser", 'password' => "secret", 'type' => "mysql", 'flags' => DBO_DEFAULT, 'load' => 0, ], [ 'host' => "replica1.serv.er", 'dbname' => "wikidb", 'user' => "wikiuser", 'password' => "secret", 'type' => "mysql", 'flags' => DBO_DEFAULT, 'load' => 1, ], [ 'host' => "replica2.serv.er", 'dbname' => "wikidb", 'user' => "wikiuser", 'password' => "secret", 'type' => "mysql", 'flags' => DBO_DEFAULT, 'load' => 1, ], ];
This would configure one master and two replicas, each replica getting an equal amount of read access load.
- max lag
- (optional) Maximum replication lag before a replica will be taken out of rotation
- max threads
- ((removed in 1.23) optional) Maximum number of running threads
These and any other user-defined properties will be assigned to the mLBInfo member variable of the Database object.
MySQL specific options
- Set to one of (Seconds_Behind_Master,pt-heartbeat). pt-heartbeat assumes the table is at heartbeat.heartbeat and uses UTC timestamps in the heartbeat.ts column. (https://www.percona.com/doc/percona-toolkit/2.2/pt-heartbeat.html)
- If using pt-heartbeat, this can be set to an array map to change the default behavior. Normally, the heartbeat row with the server ID of this server's master will be used. Set the "conds" field to override the query conditions, e.g. ['shard' => 's1'].
- Use GTID methods like MASTER_GTID_WAIT() when possible.
- Path to key file.
- Path to certificate file.
- Path to a single certificate authority PEM file. 1.30+
- Path to certificate authority PEM directory.
- Array list of allowable ciphers.
MSSQL specific options
- Port to connect to the server.
- Use Integrated Windows Authentication for authentication to the database instead of username/password.
PostgreSQL specific options
- Port to connect to the server.
- Map of reserved table names to alternative table names to use
SQLite specific options
- Path to the database file.
- Path to the directory containing the database file. Only needed if dbFilePath is not specified, and requires dbname.
- Name of the database (without the .sqlite extension). Only needed if dbFilePath is not specified, and requires dbDirectory.
- Transaction mode. One of DEFERRED, IMMEDIATE or EXCLUSIVE.
Versions of MediaWiki prior to 1.4.0 used a single-dimensional array, listing the server names, e.g. array("larousse", "pliny"), which was used in conjunction with $wgDBloads. From 1.4.0 onwards, $wgDBloads is deprecated and the above method must be used.
The groupLoads field was added in 1.4.3.
max lag and max threads (and the use of other user-defined properties) was added in 1.6.0