Ceci est une ancienne révision du document !
Table des matières
Version: 2021/11/01 15:52
SER406 - 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 © 2021 Hugh Norris. </center> </html>