Réplication des bases de données

NOTE
Cette fonctionnalité est disponible uniquement pour les instances Adobe Commerce.
IMPORTANT
La fonctionnalité de base de données partagée était obsolète dans la version 2.4.2 d’Adobe Commerce. Voir Rétablir d’une base de données partagée vers une base de données unique.

La configuration de la réplication de base de données offre les avantages suivants :

  • Sauvegarde des données
  • Active l’analyse des données sans affecter la base de données principale
  • Évolutivité

Les bases de données MySQL se répliquent de manière asynchrone, ce qui signifie que les esclaves n’ont pas besoin d’être connectés de manière permanente pour recevoir les mises à jour du maître.

Configuration de la réplication de base de données

Ce guide ne vise pas à approfondir la question de la réplication des bases de données. Pour le configurer, vous pouvez consulter une ressource du type :

Commerce fournit des exemples de configurations MySQL pour vos bases de données esclaves. Une configuration simple est fournie avec la classe ResourceConnections README.md.

Les éléments suivants sont plus avancés et ne sont fournis qu’à titre d’information :

   return array (
      //...
      'db' =>
         array (
            'connection' =>
               array (
                  'indexer' =>
                     array (
                        'host' => 'default-master-host',
                        'dbname' => 'magento',
                        'username' => 'magento',
                        'password' => 'magento',
                        'active' => '1',
                        'persistent' => NULL,
                     ),
                  'default' =>
                     array (
                        'host' => 'default-master-host',
                        'dbname' => 'magento',
                        'username' => 'magento',
                        'password' => 'magento',
                        'active' => '1',
                     ),
                  'checkout' =>
                     array (
                        'host' => 'checkout-master-host',
                        'dbname' => 'checkout',
                        'username' => 'magento',
                        'password' => 'magento',
                        'model' => 'mysql4',
                        'engine' => 'innodb',
                        'initStatements' => 'SET NAMES utf8;',
                        'active' => '1',
                     ),
                  'sales' =>
                     array (
                        'host' => 'sales-master-host',
                        'dbname' => 'sales',
                        'username' => 'magento',
                        'password' => 'magento',
                        'model' => 'mysql4',
                        'engine' => 'innodb',
                        'initStatements' => 'SET NAMES utf8;',
                        'active' => '1',
                     ),
               ),
            'slave_connection' =>
               array (
                  'default' =>
                     array (
                        'host' => 'default-slave-host',
                        'dbname' => 'magento',
                        'username' => 'read_only',
                        'password' => 'password',
                        'active' => '1',
                     ),
                  'checkout' =>
                     array (
                        'host' => 'checkout-slave-host',
                        'dbname' => 'checkout',
                        'username' => 'read_only',
                        'password' => 'password',
                        'model' => 'mysql4',
                        'engine' => 'innodb',
                        'initStatements' => 'SET NAMES utf8;',
                        'active' => '1',
                     ),
                  'sales' =>
                     array (
                        'host' => 'sales-slave-host',
                        'dbname' => 'sales',
                        'username' => 'read_only',
                        'password' => 'password',
                        'model' => 'mysql4',
                        'engine' => 'innodb',
                        'initStatements' => 'SET NAMES utf8;',
                        'active' => '1',
                     ),
                  ),
               'table_prefix' => '',
   ),
   //.......

Amélioration des performances

Pour améliorer les performances de la réplication maître-esclave, vous pouvez filtrer certaines tables sur des instances esclaves. Nous vous recommandons de filtrer toutes les tables temporaires avec le modèle de nom search\_tmp\_% utilisées pour la recherche de catalogue.

Pour ce faire, ajoutez la ligne suivante à votre fichier my.cnf sur vos instances esclaves :

replicate-wild-ignore-table=%.search\_tmp\_%
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c