Manuel:$wgLBFactoryConf
Paramètre du partage de charge: $wgLBFactoryConf | |
---|---|
Configuration pour le service ILBFactory |
|
Introduit dans la version : | 1.13.0 (r32578) |
Retiré dans la version : | Encore utilisé |
Valeurs autorisées : | (tableau) |
Valeur par défaut : | (voir ci-dessous) |
Autres paramètres : Alphabétique | Par fonction |
Détails
Pour mettre en place une ferme de wikis multi-maîtres, initialisez la classe ici à quelque chose qui peut renvoyer un Wikimedia\Rdbms\LBFactory avec un maître approprié, sur l'appel de getMainLB()
.
La classe identifiée ici est responsable de lire $wgDBservers
, $wgDBserver
, etc., donc l'écraser peut faire que ces variables globales sont ignorées.
La classe Wikimedia\Rdbms\LBFactoryMulti est fournie dans ce but; la configuration pour cette classe est fournie ci-dessous :
- sectionsByDB
- Une table correspondance des noms de bases de données et des noms de sections
- sectionLoads
- Une table de correspondance à deux dimensions. Pour chaque section, elle donne la liste des noms des serveurs et les ratios de charge associés. Par exemple:
array( 'section1' => array( 'db1' => 100, 'db2' => 100 ) )
- serverTemplate
- Un tableau associatif d'informations de serveur, comme documenté pour
$wgDBservers
. L'hôte, le hostName et les entrées de charge seront écrasées. - groupLoadsBySection
- Une table de correspondance à trois dimensions donnant les ratios de charge des serveurs pour chaque section et groupe. Par exemple:
array( 'section1' => array( 'group1' => array( 'db1' => 100, 'db2' => 100 ) ) )
- groupLoadsByDB
- Une table de correspondance à trois dimensions donnant les ratios de charge des serveurs par nom de base de données.
- hostsByName
- Une table de noms d'hôtes vers les adresses IP associées.
- externalLoads
- Une carte des noms de grappe de stockage externe vers la carte de charge du serveur.
- externalTemplate
- Une structure d'information du serveur utilisée pour les serveurs de stockage externe
- templateOverridesByServer
- Une table de correspondance à deux dimensions écrasant mainTemplate ou externalTemplate sur une base serveur par serveur.
- templateOverridesByCluster
- Une carte 2D écrasant externalTemplate par grappe
- masterTemplateOverrides
- Un tableau d'annulation pour mainTemplate et externalTemplate pour tous les serveurs maître.
Valeurs par défaut
Version de MediaWiki : | ≥ 1.39 |
$wgLBFactoryConf = [
'class' => 'Wikimedia\\Rdbms\\LBFactorySimple',
];
Versions de MediaWiki : | 1.31 – 1.38 |
$wgLBFactoryConf = [ 'class' => \Wikimedia\Rdbms\LBFactorySimple::class ];
Versions de MediaWiki : | 1.23 – 1.30 |
$wgLBFactoryConf = [ 'class' => 'LBFactorySimple' ];
Versions de MediaWiki : | 1.13 – 1.22 |
$wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );
Exemples simples
3 wikis utilisant tous Localhost comme serveur de base de données
Voici comment une configuration simple devrait fonctionner, dans laquelle vous avez trois wikis (wikidb1, wikidb2 et wikidb3), qui utilisent tous le même serveur de base de données (mais avec des noms de base différents), et qui ont tous un seul serveur maître qui est le même que votre serveur web (c'est à dire Localhost)
$wgDBuser = 'your db username'; //doit être identique pour les 3 wikis dans cette configuration simplifiée
$wgDBpassword = 'pass'; // Le même ''pass'' doit être utilisable pour les 3 wikis
$wgLBFactoryConf = array(
'class' => 'LBFactoryMulti',
'sectionsByDB' => array(
'wikidb1' => 'DEFAULT', // suppose que le nom de la base de données du premier wiki est wikidb1
'wikidb2' => 'DEFAULT', // et ainsi de suite.
'wikidb3' => 'DEFAULT',
),
'sectionLoads' => array(
'DEFAULT' => array(
'localhost' => 0, // tout sur la section DEFAULT, qui a un seul primaire, sur localhost.
),
),
'serverTemplate' => array(
'dbname' => $wgDBname,
'user' => $wgDBuser,
'password' => $wgDBpassword,
'type' => 'mysql',
'flags' => DBO_DEFAULT,
'max lag' => 30,
),
);
3 wikis utilisant des hôtes différents comme base de données avec une base de données esclave
Disons que votre wik a grossi un peu. Choisissons de séparer maintenant le serveur de base de données du serveur web. Et vous avez un serveur esclave sur lequel vous avez déclaré la réplication. Et maintenant vous mettez wikidb3 sur un serveur complètement séparé.
Donc maintenant disons que nous avons wikidb1 et wikidb2 qui se partagent un serveur maître (db1) et un esclave répliqué (db2). Wikidb3 a sons propre serveur de base de données db3 (et pas d'esclave). Vous auriez quelque chose comme ceci :
$wgDBuser = 'your db username'; //doit être identique pour les 3 wikis dans cette configuration simplifiée
$wgDBpassword = 'pass'; // Le même ''pass'' doit être utilisable pour les 3 wikis
$wgLBFactoryConf = array(
'class' => 'LBFactoryMulti',
'sectionsByDB' => array(
'wikidb1' => 'DEFAULT', // Suppose que le nom de la base de données du premier wiki est wikidb1
'wikidb2' => 'DEFAULT', // ainsi de suite.
'wikidb3' => 's1',
),
'sectionLoads' => array(
'DEFAULT' => array(
'db1' => 0,
'db2' => 50, /* 50 est le poids (des serveurs de réplication). C'est important si vous en avez plusieurs */
),
's1' => array(
'db3' => 0
),
),
'serverTemplate' => array(
'dbname' => $wgDBname,
'user' => $wgDBuser,
'password' => $wgDBpassword,
'type' => 'mysql',
'flags' => DBO_DEFAULT,
'max lag' => 30,
),
);
Configuration de Wikimedia
Pour voir comment Wikimedia utilise $wgLBFactoryConf
pour configurer ses wikis, voyez:
Une grande partie des informations de ce fichier a été enregistrée dans un dépôt etcd (clé - valeur). Pour un exemple plus ancien, voir db-eqiad.php de 2019.
La configuration de Wikimedia utilise aussi $wgCdnReboundPurgeDelay .