Manual:$wgLBFactoryConf

From MediaWiki.org
Jump to navigation Jump to search
Translate this page; This page contains changes which are not marked for translation.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎polski • ‎português • ‎português do Brasil • ‎中文 • ‎日本語
LoadBalancer settings: $wgLBFactoryConf
Load balancer factory configuration.
Introduced in version:1.13.0 (r32578)
Removed in version:still in use
Allowed values:(array)
Default value:array( 'class' => 'LBFactorySimple' )
Other settings: Alphabetical | By function

Details[edit]

To set up a multi-master wiki farm, set the class here to something that can return a Wikimedia\Rdbms\LBFactory with an appropriate master on a call to getMainLB(). The class identified here is responsible for reading $wgDBserversManual:$wgDBservers, $wgDBserverManual:$wgDBserver, etc., so overriding it may cause those globals to be ignored.

The Wikimedia\Rdbms\LBFactoryMulti class is provided for this purpose, the configuration for this class is provided below:

Warning Warning: If you use this class, all previous settings like $wgDBserversManual:$wgDBservers, $wgExternalServersManual:$wgExternalServers, ... will be ignored.
sectionsByDB
A map of database names to section names
sectionLoads
A 2-d map. For each section, gives a map of server names to load ratios. For example: array( 'section1' => array( 'db1' => 100, 'db2' => 100 ) )
serverTemplate
A server info associative array as documented for $wgDBservers. The host, hostName and load entries will be overridden.
groupLoadsBySection
A 3-d map giving server load ratios for each section and group. For example: array( 'section1' => array( 'group1' => array( 'db1' => 100, 'db2' => 100 ) ) )
groupLoadsByDB
A 3-d map giving server load ratios by DB name.
hostsByName
A map of hostname to IP address.
externalLoads
A map of external storage cluster name to server load map
externalTemplate
A server info structure used for external storage servers
templateOverridesByServer
A 2-d map overriding mainTemplate or externalTemplate on a server-by-server basis.
templateOverridesByCluster
A 2-d map overriding externalTemplate by cluster
masterTemplateOverrides
An override array for mainTemplate and externalTemplate for all master servers.

Simple Examples[edit]

3 wikis all using localhost as db server[edit]

Here is how a simple configuration would work, where you have three wikis (wikidb1, wikidb2 and wikidb3), all of which using the same database server (but with different database names), and all of them having a single master server which is the same as your webserver (localhost)

$wgDBuser = 'your db username'; //must be same for all 3 wikis in this simplified setup
$wgDBpassword = 'pass'; // Same pass must be usable for all 3 wikis
$wgLBFactoryConf = array(

'class' => 'LBFactoryMulti',

'sectionsByDB' => array(
    'wikidb1' => 's1', // Assumes db name for first wiki is wikidb1
    'wikidb2' => 's1', // and so on.
    'wikidb3' => 's1',
),

'sectionLoads' => array(
    's1' => array(
        'localhost'  => 0, // All on section s1, which has single master, at localhost.
    ),
),


'serverTemplate' => array(
    'dbname'      => $wgDBname,
    'user'          => $wgDBuser,
    'password'      => $wgDBpassword,
    'type'          => 'mysql',
    'flags'          => DBO_DEFAULT,
    'max lag'      => 30,
),
);

3 wikis using different hosts as db and one slave database[edit]

Say your wiki has grown a bit. Lets say you want to separate your db server from your webserver. And you have a slave server for which you have set up replication. And you now put wikidb3 on an entirely separate server.

So say we have wikidb1 and wikidb2 share a master server (db1) and a slave replica (db2). Wikidb3 has its own db server db3 (and no slave). You would do something like:

$wgDBuser = 'your db username'; //must be same for all 3 wikis in this simplified setup
$wgDBpassword = 'pass'; // Same pass must be usable for all 3 wikis
$wgLBFactoryConf = array(

'class' => 'LBFactoryMulti',

'sectionsByDB' => array(
    'wikidb1' => 's1', // Assumes db name for first wiki is wikidb1
    'wikidb2' => 's1', // and so on.
    'wikidb3' => 's2',
),

'sectionLoads' => array(
    's1' => array(
        'db1'  => 0,
        'db2'  => 50, /* the 50 is the weight (of slave servers). Would matter if you had multiple */
    ),
    's2' => array(
        'db3' => 0
    ),
),


'serverTemplate' => array(
    'dbname'      => $wgDBname,
    'user'          => $wgDBuser,
    'password'      => $wgDBpassword,
    'type'          => 'mysql',
    'flags'          => DBO_DEFAULT,
    'max lag'      => 30,
),
);

Wikimedia configuration[edit]

To see how Wikimedia uses $wgLBFactoryConf to configure its wikis see:

Wikimedia configuration uses also $wgCdnReboundPurgeDelayManual:$wgCdnReboundPurgeDelay.