Ajout d'infos
This commit is contained in:
parent
d7381a68c7
commit
8f6c578778
|
@ -21,10 +21,10 @@ Il faut :
|
||||||
|
|
||||||
Il faut également :
|
Il faut également :
|
||||||
|
|
||||||
* autoriser les connexions MySQL distantes ;
|
* autoriser la connexion du serveur MySQL SLAVE vers le serveur MASTER ;
|
||||||
* activer les logs binaires sur chaque serveur : _log_bin mixed_ ;
|
* activer les [binlogs](/HowtoMySQL#gestion-des-binlogs) sur le serveur MASTER (on conseille le type _mixed_ en général) ;
|
||||||
* positionner un _server-id_ différent sur chaque serveur (ne pas utiliser 0) ;
|
* positionner un _server-id_ différent sur chaque serveur (ne pas utiliser 0) ;
|
||||||
* créer un utilisateur dédié pour la réplication : `GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'PASSWORD';`.
|
* créer un utilisateur dédié pour la réplication sur le serveur MASTER : `GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'PASSWORD';`.
|
||||||
|
|
||||||
|
|
||||||
## Activation d'une réplication MASTER/SLAVE
|
## Activation d'une réplication MASTER/SLAVE
|
||||||
|
@ -37,22 +37,15 @@ Sur le serveur SLAVE, exécuter :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
mysql> CHANGE MASTER TO
|
mysql> CHANGE MASTER TO
|
||||||
MASTER_HOST='$MASTER_IP',
|
MASTER_HOST='192.168.0.33',
|
||||||
MASTER_USER='repl',
|
MASTER_USER='repl',
|
||||||
MASTER_PASSWORD='XXX',
|
MASTER_PASSWORD='PASSWORD',
|
||||||
MASTER_LOG_FILE='mysql-bin.NNNNNN',
|
MASTER_LOG_FILE='mysql-bin.NNNNNN',
|
||||||
MASTER_LOG_POS=NNN;
|
MASTER_LOG_POS=NNN;
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
/!\\ **Bien que non obligatoire, on recommande de toujours indiquer les directives *MASTER_LOG_FILE* et *MASTER_LOG_POS* pour éviter des problèmes**
|
/!\\ **Bien que non obligatoire, on recommande de toujours indiquer les directives *MASTER_LOG_FILE* et *MASTER_LOG_POS* pour éviter des problèmes**
|
||||||
|
|
||||||
Pour exclure une base de la réplication :
|
|
||||||
|
|
||||||
~~~{.ini}
|
|
||||||
[mysqld]
|
|
||||||
binlog-ignore-db = mysql
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Puis démarrer la réplication sur le serveur B avec la commande : `START SLAVE`.
|
Puis démarrer la réplication sur le serveur B avec la commande : `START SLAVE`.
|
||||||
|
|
||||||
Enfin, exécuter `SHOW SLAVE STATUS` pour vérifier le bon fonctionnement.
|
Enfin, exécuter `SHOW SLAVE STATUS` pour vérifier le bon fonctionnement.
|
||||||
|
@ -93,6 +86,60 @@ log-slave-updates
|
||||||
**Astuce 3** : Sauter une requête déjà présente dans les binlog sur le slave (à tester) :
|
**Astuce 3** : Sauter une requête déjà présente dans les binlog sur le slave (à tester) :
|
||||||
<https://stackoverflow.com/questions/17701524/mysql-replication-skip-statement-is-it-possible>
|
<https://stackoverflow.com/questions/17701524/mysql-replication-skip-statement-is-it-possible>
|
||||||
|
|
||||||
|
## Configuration avancée
|
||||||
|
|
||||||
|
<https://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html>
|
||||||
|
|
||||||
|
### Configuration de la réplication via fichier de configuration
|
||||||
|
|
||||||
|
La configuration d'une réplication via la commande `CHANGE MASTER TO […]` est persistente, elle est notamment conservée en cas de redémarrage de MySQL car conservée dans le fichier `master.info` situé par défaut dans le datadir (**y compris le mot de passe en clair !**). Nous conseillons cette méthode, mais on peut également configurer via la configuration de MySQL ainsi :
|
||||||
|
|
||||||
|
~~~{.ini}
|
||||||
|
master-host = 192.0.2.33
|
||||||
|
master-user = repl
|
||||||
|
master-password = PASSWORD
|
||||||
|
#master-port = 3306
|
||||||
|
#master-connect-retry = 60
|
||||||
|
#master-info-file = master.info
|
||||||
|
~~~
|
||||||
|
|
||||||
|
### Configuration d'une réplication partielle
|
||||||
|
|
||||||
|
Une manière d'avoir une réplication peut être de ne pas écrire toutes les requêtes dans les [binlogs](/HowtoMySQL#gestion-des-binlogs) sur le serveur MASTER via les options *binlog_do_db*/*binlog_ignore_db* mais ce n'est pas conseillé car les binlogs ont souvent d'autres utilités (vérifier les requêtes, ou servir pour d'autres serveurs SLAVE).
|
||||||
|
|
||||||
|
Une manière différente (ou complémentaire) est d'utiliser les directives *replicate-do-db*/*replicate-ignore-db*/*replicate-do-table*/*replicate-ignore-table*/*replicate-wild-do-table*/*replicate-wild-ignore-table* sur le serveur SLAVE.
|
||||||
|
|
||||||
|
/!\\ Ces directives ne sont pas parfaites, notamment les requêtes « croisées » du type `USE foo; UPDATE bar.baz SET […]` ne seront pas comprises, ce qui peut poser des problèmes !
|
||||||
|
|
||||||
|
Pour ignorer les requêtes concernant la base _mysql_ :
|
||||||
|
|
||||||
|
~~~{.ini}
|
||||||
|
[mysqld]
|
||||||
|
replicate-ignore-db = mysql
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Pour n'inclure que les requêtes concernant les bases _foo_ et _bar_ :
|
||||||
|
|
||||||
|
~~~{.ini}
|
||||||
|
[mysqld]
|
||||||
|
replicate-do-db = foo
|
||||||
|
replicate-do-db = bar
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Pour n'inclure que les requêtes concernant les tables _foo.baz_ et _foo.qux_ :
|
||||||
|
|
||||||
|
~~~{.ini}
|
||||||
|
[mysqld]
|
||||||
|
replicate-do-db = foo
|
||||||
|
replicate-do-table = foo.baz
|
||||||
|
replicate-do-table = foo.qux
|
||||||
|
~~~
|
||||||
|
|
||||||
|
/!\\ **On conseille de toujours utiliser *replicate-do-db* en complément de *replicate-do-table*/*replicate-wild-do-table* sinon les requêtes non spécifiques aux tables ne sont pas filtrées (…par exemple les DROP DATABASE venant du serveur MASTER !!)**
|
||||||
|
|
||||||
|
Les directives *replicate-wild-do-table*/*replicate-wild-ignore-table* permettent d'utiliser des expressions régulières avec `%` et `_` (comme pour l'opérateur SQL _LIKE_).
|
||||||
|
|
||||||
|
|
||||||
## Réplication MASTER/MASTER
|
## Réplication MASTER/MASTER
|
||||||
|
|
||||||
Pour une réplication MASTER/MASTER, il faut simplement activer deux réplications MASTER/SLAVE entre les deux serveurs concernés.
|
Pour une réplication MASTER/MASTER, il faut simplement activer deux réplications MASTER/SLAVE entre les deux serveurs concernés.
|
||||||
|
|
Loading…
Reference in a new issue