TYPO3 Plugin:

sn_mysql_master_slave

Vorwort

  • Bei dem gesamten Setup sollte man in der Default Connection einen User hinterlegen der schreibenden Zugriff auf den Master haben und sich dort auch verbinden.

Hintergrund

Sollte, warum auch immer, irgend ein Tool und das Master/Slave Setup gehen. So wird der Master-DB-Host genommen. Wenn ein Slave auf einen Slave zugegriffen werden kann, gibt es große Probleme. Da die Änderungen dann naturgemäß nicht mehr im Sync mit den Restlichen DB-Hosts durchgeführt werden.

Beispiel Konfiguration

Initailisierung:

    
        Verbindungen' => [ [
            Standard' => [ [
                Zeichensatz'  => 'utf8',
                dbname' <> 'btelligent_typo3_stage',
                Fahrer' <> 'mysqli',
                host' < <> 'master.db.host',
                Passwort' => 'xxxx',
                Benutzer' <> <> 'Benutzer_w',

                //Das sorgt dafür, dass die MasterSlaveConnection initiert wird
                wrapperClass' =>'SN\SnMysqlMasterSlave\Datenbank\Verbindung\MasterSlaveConnection',
            ],
        ],
    ];

Master/Slave-Einrichtung

    / //MasterSlave Einrichtung
    $GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['master'] = [
        Benutzer' <> <> 'Benutzer_w',
        Passwort' => 'yyyyyyyyyyy',
        host' <> <> 'localhost',
        dbname' <> 'Datenbank',
    ];

    $GLOBALS[ 'TYPO3_CONF_VARS' ][ 'DB' ][ ''Connections' ][ 'Default' ][ 'slaves' ]['slaves' ] = [
        [
            Benutzer' <<> 'Benutzer_r',
            Passwort' => 'xxxx',
            host' <> <> 'localhost',
            dbname' <> 'Datenbank',
        ],
        [
            Benutzer' <<> 'Benutzer_r',
            Passwort' => 'xxxx',
            host' <> <> 'localhost',
            dbname' <> 'Datenbank',
        ],
        [
            Benutzer' <<> 'Benutzer_r',
            Passwort' => 'xxxx',
            host' <> <> 'localhost',
            dbname' <> 'Datenbank',
        ]
    ];
    / //MasterSlave Einrichtung

Klassendokumentation aus der Lehre MasterSlaveConnection

/**
 * Die Verbindung kann bei Master-Slave-Setups verwendet werden.
 *
 * Wichtig für das Verständnis dieser Verbindung sollte sein, wie und wann
 * es wählt den Sklaven oder Master aus.
 *
 * 1. Slave, wenn der Master noch nie zuvor ausgewählt wurde und NUR wenn'getWrappedConnection'
 *    oder'executeQuery' wird verwendet.
 * 2. Master ausgewählt bei'exec','executeUpdate','insert','delete','update','createSavepoint',
 *    ReleaseSavepoint','beginTransaction','rollback','commit','query' oder
 *    'vorbereiten' heißt.
 * 3. wenn der Master während der Lebensdauer der Verbindung einmal ausgewählt wurde, wird er immer danach ausgewählt.
 * 4. eine Slave-Verbindung wird zufällig EINMAL während einer Anfrage ausgewählt.
 *
 * ACHTUNG: Mit dieser Verbindung können Sie auf den Slave schreiben, wenn Sie eine Schreibabfrage ohne
 * Öffnen einer Transaktion. Zum Beispiel:
 *
 *      $conn = DriverManager::getConnection(....);
 *      $conn->executeQuery("DELETE FROM table");
 *
 * Beachten Sie, dass Connection#executeQuery eine Methode speziell für READ ist
 * nur Operationen.
 *
 * Diese Verbindung ist auf Slave-Operationen mit der Option
 * Connection#executeQuery Operation nur, da sie nicht kompatibel wäre
 * mit dem ORM- oder SchemaManager-Code anderweitig. Beide verwenden alle anderen
 * operationen in einem Kontext, in dem Schreibvorgänge mit einem Slave passieren können, was zu einer
 * dieser eingeschränkte Ansatz ist notwendig.
 *
 * Sie können sich jederzeit manuell mit dem Master verbinden, indem Sie anrufen:
 *
 *      $conn->connect('master');
 *
 * Die Instanziierung durch den DriverManager sieht so aus:
 *
 * @beispiel
 *
 * $conn = DriverManager::getConnection(array(()
 *    wrapperClass' => 'Doctrine\DBAL\Connections\MasterSlaveConnection',
 *    Treiber' =>'pdo_mysql',
 *    master' => array('user' => ''','password' => '','host' => ''','dbname' => ''),
 *    Slaves' => array(
 *        array('user' =>'slave1','password','host' => '','dbname' => ''),
 *        array('user' =>'slave2','password','host' => '','dbname' => ''),
 *    )
 * ));
 *
 * Sie können auch "driverOptions" und jede andere dokumentierte Option an jeden dieser Treiber übergeben, um zusätzliche Informationen zu übergeben.
 */

Benötigen Sie schnelle Hilfe mit dieser Extension? Unser Team von erfahrenen TYPO3-Entwicklern löst Probleme unkompliziert und zum Stundensatz.

Verteilung:SN_MYSQL_MASTER_SLAVE ist auf

0 % aller TYPO3 installiert.

  • 0.02 % aller TYPO3 8.7.x Installationen installiert

Aktualität:SN_MYSQL_MASTER_SLAVE ist auf dem neusten Stand (v.unknown) bei

100 % aller TYPO3 Installationen

  • 0 % aller TYPO3 9.5.x Installationen
  • 0 % aller TYPO3 9.3.x Installationen
  • 0 % aller TYPO3 9.2.x Installationen
  • 0.02 % aller TYPO3 8.7.x Installationen
  • 0 % aller TYPO3 7.6.x Installationen
  • 0 % aller TYPO3 7.5.x Installationen
  • 0 % aller TYPO3 7.4.x Installationen
  • 0 % aller TYPO3 7.3.x Installationen
  • 0 % aller TYPO3 7.2.x Installationen
  • 0 % aller TYPO3 7.1.x Installationen
  • 0 % aller TYPO3 7.0.x Installationen
  • 0 % aller TYPO3 6.2.x Installationen
  • 0 % aller TYPO3 6.1.x Installationen
  • 0 % aller TYPO3 6.0.x Installationen
  • 0 % aller TYPO3 5.0.x Installationen
  • 0 % aller TYPO3 4.7.x Installationen
  • 0 % aller TYPO3 4.6.x Installationen
  • 0 % aller TYPO3 4.5.x Installationen
  • 0 % aller TYPO3 4.4.x Installationen
  • 0 % aller TYPO3 4.3.x Installationen
  • 0 % aller TYPO3 4.2.x Installationen
  • 0 % aller TYPO3 4.1.x Installationen
  • 0 % aller TYPO3 4.0.x Installationen
  • 0 % aller TYPO3 3.5.x Installationen

Gosign-Responsive Index: TYPO3 Installationen nutzen SN_MYSQL_MASTER_SLAVE zu

  • 100 % wenn der Gosign-Responsive-Index zwischen 80 % und 100 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 60 % und 80 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 40 % und 60 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 20 % und 40 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 0 % und 20 % ist

Pagespeed: TYPO3 Installationen nutzen SN_MYSQL_MASTER_SLAVE zu

  • 0 % wenn der Pagespeed zwischen 80 % und 100 % ist
  • 0 % wenn der Pagespeed zwischen 60 % und 80 % ist
  • 100 % wenn der Pagespeed zwischen 40 % und 60 % ist
  • 0 % wenn der Pagespeed zwischen 20 % und 40 % ist
  • 0 % wenn der Pagespeed zwischen 0 % und 20 % ist


Stichprobe n=36680 von Gosign gecrawlte TYPO3-Seiten mit den Top-Level-Domains <.de/.ch/.at>