Manual:$wgLBFactoryConf/zh
负载均衡设置: $wgLBFactoryConf | |
---|---|
Configuration for the ILBFactory service |
|
引进版本: | 1.13.0 (r32578) |
移除版本: | 仍在使用 |
允许的值: | (数组) |
默认值: | (参见下方) |
其他设置: 按首字母排序 | 按功能排序 |
详情
To set up a multi-primary (formerly called multi-master) wiki farm, set the class here to something that can return a Wikimedia\Rdbms\LBFactory with an appropriate primary on a call to getMainLB()
.
The class identified here is responsible for reading $wgDBservers
, $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:
- sectionsByDB
- 数据库名称至章节名称的映射
- 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
- 主机名至IP地址的映射。
- 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 primary servers.
Default values
MediaWiki版本: | ≥ 1.39 |
$wgLBFactoryConf = [
'class' => 'Wikimedia\\Rdbms\\LBFactorySimple',
];
MediaWiki版本: | 1.31 – 1.38 |
$wgLBFactoryConf = [ 'class' => \Wikimedia\Rdbms\LBFactorySimple::class ];
MediaWiki版本: | 1.23 – 1.30 |
$wgLBFactoryConf = [ 'class' => 'LBFactorySimple' ];
MediaWiki版本: | 1.13 – 1.22 |
$wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );
Simple Examples
3 wikis all using localhost as db server
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 primary 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' => 'DEFAULT', // Assumes db name for first wiki is wikidb1
'wikidb2' => 'DEFAULT', // and so on.
'wikidb3' => 'DEFAULT',
),
'sectionLoads' => array(
'DEFAULT' => array(
'localhost' => 0, // All on section DEFAULT, which has single primary, 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 replica database
Say your wiki has grown a bit. Lets say you want to separate your db server from your webserver. And you have a replica 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 primary server (db1) and a replica (db2). Wikidb3 has its own db server db3 (and no replica). 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' => 'DEFAULT', // Assumes db name for first wiki is wikidb1
'wikidb2' => 'DEFAULT', // and so on.
'wikidb3' => 's1',
),
'sectionLoads' => array(
'DEFAULT' => array(
'db1' => 0,
'db2' => 50, /* The 50 is the weight (of replica servers). Would matter if you had multiple */
),
's1' => array(
'db3' => 0
),
),
'serverTemplate' => array(
'dbname' => $wgDBname,
'user' => $wgDBuser,
'password' => $wgDBpassword,
'type' => 'mysql',
'flags' => DBO_DEFAULT,
'max lag' => 30,
),
);
维基媒体配置
要查看维基媒体如何使用$wgLBFactoryConf
配置wiki:
Much of the information in this file has been moved into an etcd (key-value) store. For an older example see e.g. db-eqiad.php from 2019.
维基媒体配置也使用$wgCdnReboundPurgeDelay 。