Ceci est une ancienne révision du document !


Version: 2020/01/30 03:29

DBA106 - Sauvegardes et Replication

Sauvegardes

mysqlhotcopy

mysqlhotcopy est un script perl qui ne fonctionne que sous Linux. Ce script permet de prendre une copie à chaud d'une ou plusieurs bases de données.

[root@centos7 tmp]# cd ~
[root@centos7 ~]# which mysqlhotcopy
/bin/mysqlhotcopy

Pour exécuter le script en sauvegardant une base vers le répertoire /tmp, saisissez la commande suivante:

[root@centos7 ~]# mysqlhotcopy -u root -p fenestros1 ligue1 /tmp
Flushed 2 tables with read lock (`ligue1`.`equipe`, `ligue1`.`rencontre`) in 0 seconds.
Locked 1 views (`ligue1`.`V_EQUIPE`) in 0 seconds.
Copying 12 files...
Copying indices for 0 files...
Unlocked tables.
mysqlhotcopy copied 3 tables (12 files) in 0 seconds (0 seconds overall).

Consultez le répertoire /tmp:

[root@centos7 ~]# ls -l /tmp | grep ligue
drwxr-x---. 2 mysql   mysql        280 Nov  3 12:28 ligue1

En effet mysqlhotcopy a créé un répertoire au nom de la base de données. A l'intérieur de ce répertoire, vous constaterez la présence des fichiers de la base de données:

[root@centos7 ~]# ls -l /tmp/ligue1/
total 64
-rw-rw----. 1 mysql mysql   65 Oct 31 10:19 db.opt
-rw-rw----. 1 mysql mysql 8818 Oct 31 11:12 equipe.frm
-rw-rw----. 1 mysql mysql  296 Nov  3 11:47 equipe.MYD
-rw-rw----. 1 mysql mysql 2048 Nov  3 11:51 equipe.MYI
-rw-rw----. 1 mysql mysql  297 Oct 31 11:05 equipe.TRG
-rw-rw----. 1 mysql mysql 8800 Oct 31 10:20 rencontre.frm
-rw-rw----. 1 mysql mysql  120 Nov  3 11:47 rencontre.MYD
-rw-rw----. 1 mysql mysql 2048 Nov  3 11:51 rencontre.MYI
-rw-rw----. 1 mysql mysql  603 Oct 31 11:07 rencontre.TRG
-rw-rw----. 1 mysql mysql   38 Oct 31 11:05 TGR_BI_EQUIPE.TRN
-rw-rw----. 1 mysql mysql   41 Oct 31 11:07 TGR_BU_RENCONTRE.TRN
-rw-rw----. 1 mysql mysql  971 Oct 31 11:14 V_EQUIPE.frm

mysqldump

Le client mysql vous permet de traiter des commandes SQL se trouvant dans un fichier. Pour cela lancez mysql de la manière suivante :

# mysql [options] database < file.sql

Toutes les commandes SQL contenues dans file.sql seront alors appliquées à la base de données spécifiée. Le fichier ne doit pas nécessairement se terminer par .sql – ce qui compte, c'est le contenu. Il faut absolument que les commandes soient délimitées par des points-virgules. Si vous le souhaitez, vous pouvez configurer un autre séparateur de commandes à l'aide de la commande DELIMITER. Cela s'avère nécessaire lorsque les fichiers SQL contient des commandes CREATE FUNCTION, PROCEDURE ou TRIGGER, qui contiennent des points-virgules.

Sauvegarder avec mysqldump

Mysqldump crée une sauvegarde d'une base de données. Le fichier de sauvegarde résultant contient des commandes SQL permettant de créer des tables et d'ajouter des données. La syntaxe de mysqldump est la suivante :

# mysqldump [option] dbname > backupfile.sql

Important - Les routines ne sont pas sauvegardées par défaut lors de l'utilisation de la commande mysqldump. Pour les sauvegarder il convient de passer l'option –routines à mysqldump.

Restauration avec mysqldump

Dans la pratique, vous rencontrerez souvent les fichiers *.sql comportant une sauvegarde de bases de données créée avec mysqldump. Pour lire ces fichiers, vous devez normalement créer la nouvelle base de données avec mysqladmin. Les deux commandes suivantes illustrent la procédure :

# mysqladmin -u root -p create dbname [Entrée]
Password : ********** [Entrée]
# mysql -u root -p dbname < backupfile.sql [Entrée]
Password : ********** [Entrée]

Les sauvegardes de base de données créées avec une version récente de mysqldump comporte des commandes SQL pour activer le jeu de caractères utilisé dans le fichier de sauvegarde. Ne vous préoccupez donc pas du jeu de caractères. Cette information manque dans les sauvegardes créées avec d'anciennes versions de mysqldump ou d'autres programmes comme phpMyadmin.

Important - Notez que les sauvegardes réalisées avec les versions récentes de phpMyadmin utilisent par défaut le jeu de caractères UTF-8.

Pour qu'une ancienne sauvegarde puisse être correctement lue, vous devez utiliser l'option –default-character-set= …. Si vous ne connaissez pas le jeu de caractères utilisés, saisissez latin1. Ce jeu de caractères était employé par défaut par les versions de MySQL 4.0 et antérieures.

Par exemple:

# mysql –u –root –p –default_character_set=latin1 dbname < backup.sql [Entrée]

Réplication

Présentation

Le réplication a lieu en générale entre une machine maître et une machine esclave. Dans notre cas, nous allons créer ultérieurement un clone de la VM utilisée jusqu'à maintenant pour servir de machine esclave.

Quand la réplication est mise en place, deux threads sont démarrés sur l'esclave :

  • IO_THREAD - copie les informations des journaux binaires du maître dans son relay log,
  • SQL-THREAD - exécute les modifications sur la ou les bases de données de l'esclave.

Un troisième thread est ouvert sur le serveur maître par l'IO_THREAD pour le transfert des journaux.

Un esclave ne peut avoir qu'un seul maître mais un maître peut avoir plusieurs esclaves.

Dans une réplication Maître - esclave, ceci permet d'être évolutif en lecture mais pas en écriture. Trop de requêtes en écriture vont “inondées” le ou les esclaves.

Dans une réplication Maître-Maître il est possible d'avoir deux modes de fonctionnement :

  • actif-passif,
    • un des maîtres est utilisé pour les écritures/lectures tandis que l'autre est un backup en cas de défaillance du premier,
  • actif-actif,
    • les deux maîtres sont utilisés pour les écritures/lectures.

Il existe deux types de réplications :

  • SBR - Statement Based Replication,
    • les requêtes SQL sont ré-exécutées sur l'esclave. Cette méthode crée des problèmes quand la requête est dynamique ( par exemple dans le cas d'une fonction ),
  • RBR - Row Based Replication,
    • les modifications et les valeurs des enregistrements sont répliqués. Cette méthode est plus lente à cause de la quantité de données à répliquer.

A partir de la version 5.6 de MySQL, il est possible de choisir un mode mixed. Le serveur va choisir la méthode approprié pour chaque cas.

Il est possible de fixer la valeur de plusieurs variable pour choisir quelles bases de données vont être répliquées :

  • binlog-do-db et binlog-ignore-db sur le maître,
  • replicate-do-db et replicate-ignore-db sur l'esclave.

Dans le premier cas cela nécessite le re-démarrage du serveur maître. Il est donc préférable d'utiliser les variables sur l'esclave.

LAB #1 - Mise en Place de la Réplication Maître/Esclave

Création du compte de réplication

Saisissez la commande suivante pour créer l'utilisateur replicant et y associer un mot de passe et les permissions adéquates :

GRANT REPLICATION SLAVE, REPLICATION CLIENT
    ON *.*
    TO 'replicant'@'%'
    IDENTIFIED BY 'password';

Vous obtiendrez un résultat similaire à celui-ci :

[root@centos7 ~]# mysql -u root -p
Enter password: fenestros1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> GRANT REPLICATION SLAVE, REPLICATION CLIENT
    ->     ON *.*
    ->     TO 'replicant'@'%'
    ->     IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 

Imporatnt - Dans le cas de deux machines physiques, cette commande doit être saisie sur le maître et l'esclave. Le compte doit avoir les droits de REPLICATION SLAVE (avant MySQL 4.0.2, il devait avoir les droits de FILE). Le mot de passe password est à modifier mais doit être identique sur le serveur maître et le serveur esclave.

Vérifiez ensuite la création de votre utilisateur replicant :

MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SELECT user, password FROM user;
+-----------+-------------------------------------------+
| user      | password                                  |
+-----------+-------------------------------------------+
| root      | *F3E048E28ED63F281CF8A403F96F5D283C8700E6 |
| root      |                                           |
| root      |                                           |
| root      |                                           |
| user2     | *9296FFD029BFAE29EDDC1E57E53F4A8E555895B8 |
| user1     | *34D3B87A652E7F0D1D371C3DBF28E291705468C4 |
| fenestros | *00269BA49BEC800F9CCF34C20C1FD83E0236B89A |
| replicant | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-----------+-------------------------------------------+
8 rows in set (0.01 sec)

MariaDB [mysql]> 

Création d'un clone de la VM

Arrêtez votre VM :

MariaDB [mysql]> exit
Bye
[root@centos7 ~]# shutdown -h now

Créez deux clônes, maitre et esclave dans VirtualBox.

Configurer le maître

Pour chacune des VM maître et esclave, configurez l'interface Carte 1 en mode Réseau Interne (Intnet) via l'interface VirtualBox de votre système d'exploitation hôte.

Lancez la VM maître.

Configurez la carte réseau en adresse IP fixe :

[root@centos7 ~]# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 192.168.1.10/24 gw4 10.0.2.2
Connection 'ip_fixe' (79198de5-9ea5-4598-8802-432f624d29df) successfully added.
[root@centos7 ~]# nmcli connection up ip_fixe
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@centos7 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:03:97:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::fbf4:c1e0:8f0e:80b/64 scope link 
       valid_lft forever preferred_lft forever

Ajoutez ensuite deux lignes dans la section mysqld du fichier /etc/my.cnf du maître:

[root@centos7 ~]# vi /etc/my.cnf
[root@centos7 ~]# cat /etc/my.cnf
[mysqld]
slow_query_log
slow_query_log_file = /var/log/mysql-slow.log
long-query-time = 2
log_output = TABLE
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#AJOUTER LA LIGNE SUIVANTE
server-id = 1
#AJOUTER LA LIGNE SUIVANTE
log-bin = mysql-bin
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

ssl-ca=/etc/pki/mysql/ca-cert.pem
ssl-cert=/etc/pki/mysql/server-cert.pem
ssl-key=/etc/pki/mysql/server-key.pem

[client]
ssl-ca=/etc/pki/mysql/ca-cert.pem
ssl-cert=/etc/pki/mysql/client-cert.pem
ssl-key=/etc/pki/mysql/client-key.pem

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Redémarrez le service mariadb :

[root@centos7 ~]# systemctl restart mariadb

Configurer l'esclave

Lancez la VM esclave.

[root@centos7 ~]# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 192.168.1.11/24 gw4 10.0.2.2
Connection 'ip_fixe' (35825b77-2829-4f38-9b32-13b07bfdf7da) successfully added.
[root@centos7 ~]# nmcli connection up ip_fixe
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@centos7 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:03:97:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.11/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::41c9:8520:1894:27b7/64 scope link 
       valid_lft forever preferred_lft forever

Vérifiez que vous voyez le maître sur le réseau :

[root@centos7 ~]# ping -c3 192.168.1.10
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=2.40 ms
64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=1.52 ms
64 bytes from 192.168.1.10: icmp_seq=3 ttl=64 time=1.49 ms

--- 192.168.1.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.493/1.809/2.407/0.425 ms

Ajoutez ensuite les lignes dans la section mysqld du fichier /etc/my.cnf de l'esclave:

server-id = 2
log-bin = /var/log/mysqld/bin.log
log-bin-index = /var/log/mysqld/log-bin.index
log-error = /var/log/mysqld/error.log
relay-log = /var/log/mysqld/relay.log
relay-log-info-file = /var/log/mysqld/relay-log.info
relay-log-index = /var/log/mysqld/relay-log.index

Vous obtiendrez :

[root@centos7 ~]# cat /etc/my.cnf
[mysqld]
slow_query_log
slow_query_log_file = /var/log/mysql-slow.log
long-query-time = 2
log_output = TABLE
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id = 2
log-bin = /var/log/mysqld/bin.log
log-bin-index = /var/log/mysqld/log-bin.index
log-error = /var/log/mysqld/error.log
relay-log = /var/log/mysqld/relay.log
relay-log-info-file = /var/log/mysqld/relay-log.info
relay-log-index = /var/log/mysqld/relay-log.index
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

ssl-ca=/etc/pki/mysql/ca-cert.pem
ssl-cert=/etc/pki/mysql/server-cert.pem
ssl-key=/etc/pki/mysql/server-key.pem
# ssl-cipher=CAMELLIA128-SHA

[client]
ssl-ca=/etc/pki/mysql/ca-cert.pem
ssl-cert=/etc/pki/mysql/client-cert.pem
ssl-key=/etc/pki/mysql/client-key.pem

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Créez maintenant le répertoire /var/log/mysqld et attribuez-le à l'utilisateur mysql du groupe mysql :

[root@centos7 ~]# mkdir /var/log/mysqld
[root@centos7 ~]# chown mysql:mysql /var/log/mysqld

Définir les paramètres de l'esclave :

[root@centos7 ~]# mysql -u root -p mysql
Enter password: fenestros1
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [mysql]> CHANGE MASTER TO MASTER_HOST ='192.168.1.10';
Query OK, 0 rows affected (0.39 sec)

MariaDB [mysql]> CHANGE MASTER TO MASTER_PORT =3306;
Query OK, 0 rows affected (0.02 sec)

MariaDB [mysql]> CHANGE MASTER TO MASTER_USER ='replicant';
Query OK, 0 rows affected (0.07 sec)

MariaDB [mysql]> CHANGE MASTER TO MASTER_PASSWORD ='password';
Query OK, 0 rows affected (0.05 sec)

MariaDB [mysql]> exit
Bye

Les valeurs de ces variables sont normalement stockées dans /var/lib/mysql/master.info :

[root@centos7 ~]# cat /var/lib/mysql/master.info
18

4
192.168.1.10
replicant
password
3306
60
0





0
1800.000

0
[root@centos7 ~]# 

A faire - Pour plus d'informations concernant CHANGE MASTER TO, consultez ce lien.

Redémarrez le service mariadb :

[root@centos7 ~]# systemctl restart mariadb

Ensuite démarrez l'esclave:

[root@centos7 ~]# mysql -u root -p mysql
Enter password: fenestros1
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [mysql]> START SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [mysql]> exit
Bye

Contrôler la réplication

Arrêtez le pare-feu iptables sur l'esclave :

[root@centos7 ~]# systemctl stop firewalld

Arrêtez le pare-feu iptables sur le maître :

[root@centos7 ~]# systemctl stop firewalld

Pour visualiser le statut de la réplication sur l'esclave, utilisez la commande suivante:

[root@centos7 ~]# mysql -u root -p 
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW SLAVE STATUS;
+----------------------+--------------+-------------+-------------+---------------+-----------------+---------------------+----------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------+------------------+
| Slave_IO_State       | Master_Host  | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master | Master_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error                                                                                                                                             | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Master_Server_Id |
+----------------------+--------------+-------------+-------------+---------------+-----------------+---------------------+----------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------+------------------+
| Connecting to master | 192.168.1.10 | replicant   |        3306 |            60 |                 |                   4 | relay.000001   |             4 |                       | Connecting       | Yes               |                 |                     |                    |                        |                         |                             |          0 |            |            0 |                   0 |             245 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                  NULL | No                            |          2003 | error connecting to master 'replicant@192.168.1.10:3306' - retry-time: 60  retries: 86400  message: Can't connect to MySQL server on '192.168.1.10' (113) |              0 |                |                             |                0 |
+----------------------+--------------+-------------+-------------+---------------+-----------------+---------------------+----------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------+------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>

Pour visualiser le statut de la réplication sur le maître, utilisez la commande suivante:

[root@centos7 ~]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |      245 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> 

Modifiez ensuite un enregistrement dans la base ligue1 du Maître :

MariaDB [(none)]> use ligue1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [ligue1]> show tables;
+------------------+
| Tables_in_ligue1 |
+------------------+
| V_EQUIPE         |
| equipe           |
| rencontre        |
+------------------+
3 rows in set (0.00 sec)

MariaDB [ligue1]> select * from equipe;
+-----------+------------------------+------------------+------------+--------+------+------------------+----------------+
| id_equipe | nom                    | stade            | ville      | points | buts | entraineur       | tel_entraineur |
+-----------+------------------------+------------------+------------+--------+------+------------------+----------------+
|         1 | FC Mandriva            | Parc des Princes | Paris      |      3 |    3 | Ricardo GOMES    | 06-56-56-56-56 |
|         2 | Debian AC              | Yankee Stadium   | New York   |      3 |    3 | Gérard Houllier  | 06-57-57-57-57 |
|         3 | Vista FC               | Qwest Field      | Redmond    |      0 |    0 | inconnu          | inconnu        |
|         4 | Racing Club Strasbourg | La Meinau        | STRASBOURG |      0 |    0 | inconnu          | inconnu        |
+-----------+------------------------+------------------+------------+--------+------+------------------+----------------+
4 rows in set (0.37 sec)

MariaDB [ligue1]> SELECT * FROM equipe WHERE id_equipe=1;
+-----------+-------------+------------------+-------+--------+------+---------------+----------------+
| id_equipe | nom         | stade            | ville | points | buts | entraineur    | tel_entraineur |
+-----------+-------------+------------------+-------+--------+------+---------------+----------------+
|         1 | FC Mandriva | Parc des Princes | Paris |      3 |    3 | Ricardo GOMES | 06-56-56-56-56 |
+-----------+-------------+------------------+-------+--------+------+---------------+----------------+
1 row in set (0.00 sec)

MariaDB [ligue1]> UPDATE equipe SET stade = 'La réplication fonctionne!!' WHERE id_equipe=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [ligue1]> SELECT * FROM equipe WHERE id_equipe=1;
+-----------+-------------+------------------------------+-------+--------+------+---------------+----------------+
| id_equipe | nom         | stade                        | ville | points | buts | entraineur    | tel_entraineur |
+-----------+-------------+------------------------------+-------+--------+------+---------------+----------------+
|         1 | FC Mandriva | La réplication fonctionne!!  | Paris |      3 |    3 | Ricardo GOMES | 06-56-56-56-56 |
+-----------+-------------+------------------------------+-------+--------+------+---------------+----------------+
1 row in set (0.00 sec)

MariaDB [ligue1]> 

Contrôlez la réplication sur la VM esclave :

MariaDB [(none)]> USE ligue1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [ligue1]> SELECT * FROM equipe WHERE id_equipe=1;
+-----------+-------------+------------------------------+-------+--------+------+---------------+----------------+
| id_equipe | nom         | stade                        | ville | points | buts | entraineur    | tel_entraineur |
+-----------+-------------+------------------------------+-------+--------+------+---------------+----------------+
|         1 | FC Mandriva | La réplication fonctionne!!  | Paris |      3 |    3 | Ricardo GOMES | 06-56-56-56-56 |
+-----------+-------------+------------------------------+-------+--------+------+---------------+----------------+
1 row in set (0.00 sec)

MariaDB [ligue1]>   

Annexe #1

Dans le cas de deux machines physiques, la base de données du Maître doit être transférer sur l'Esclave. Afin de permettre une sauvegarde complète des bases de données sur le maître, vous devez vous assurer que seulement root y a accès. Ceci est possible grâce à la directive max_connections.

Contrôlez d'abord la valeur actuelle de max_connections:

[root@centos7 ~]# mysql -u root -p mysql
Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [mysql]> SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)

MariaDB [mysql]> 

Notez la valeur et ensuite définissez-la à 1 pour n'avoir que la connexion de root :

MariaDB [mysql]> SET GLOBAL max_connections = 1;
Query OK, 0 rows affected

MariaDB [mysql]> SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 1     |
+-----------------+-------+
1 row in set (0.00 sec)

MariaDB [mysql]> 

Pour sauvegarder la totalité des bases de données sur le maître, il convient d'utiliser la commande suivante :

# mysqldump --user=root --password=fenestros1 --extended-insert --all-databases --master-data --event  > /tmp/backup.sql [Entrée]

Important - Notez que –master-data permet à mysqldump de récupérer les données du maître concernant la réplication.

Ensuite sur l'esclave, il convient d'injecter le fichier backup.sql en provenance du maître:

# mysql --user=root --password=fenestros < /tmp/backup.sql [Entrée]

Dernièrement, re-définissez à 151 connexions la valeur de max-connexions sur le maître et ensuite contrôlez la valeur de max_connections:

MariaDB [mysql]> SET GLOBAL max_connections = 151;
Query OK, 0 rows affected (0.01 sec)

MariaDB [mysql]> SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.37 sec)

MariaDB [mysql]> 

<html> <center> Copyright © 2011-2017 I2TCH LIMITED. </center> </html>

Menu