Ajout d'infos
This commit is contained in:
parent
d7381a68c7
commit
8f6c578778
|
@ -21,10 +21,10 @@ Il faut :
|
|||
|
||||
Il faut également :
|
||||
|
||||
* autoriser les connexions MySQL distantes ;
|
||||
* activer les logs binaires sur chaque serveur : _log_bin mixed_ ;
|
||||
* autoriser la connexion du serveur MySQL SLAVE vers le serveur MASTER ;
|
||||
* 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) ;
|
||||
* 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
|
||||
|
@ -37,22 +37,15 @@ Sur le serveur SLAVE, exécuter :
|
|||
|
||||
~~~
|
||||
mysql> CHANGE MASTER TO
|
||||
MASTER_HOST='$MASTER_IP',
|
||||
MASTER_HOST='192.168.0.33',
|
||||
MASTER_USER='repl',
|
||||
MASTER_PASSWORD='XXX',
|
||||
MASTER_PASSWORD='PASSWORD',
|
||||
MASTER_LOG_FILE='mysql-bin.NNNNNN',
|
||||
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**
|
||||
|
||||
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`.
|
||||
|
||||
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) :
|
||||
<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
|
||||
|
||||
Pour une réplication MASTER/MASTER, il faut simplement activer deux réplications MASTER/SLAVE entre les deux serveurs concernés.
|
||||
|
|
Loading…
Reference in New Issue