Ceci est une ancienne révision du document !
Table des matières
Version: 2022/11/10 15:10
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@centos8 ~]# which mysqlhotcopy /usr/bin/mysqlhotcopy
Pour exécuter le script en sauvegardant une base vers le répertoire /tmp, saisissez la commande suivante:
[root@centos8 ~]# 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@centos8 ~]# ls -l /tmp | grep ligue drwxr-x---. 2 mysql mysql 249 Nov 9 08:29 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]
Mariabackup
Installez le dépôt de Mariabackup :
[root@centos8 ~]# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash # [info] Checking for script prerequisites. # [info] MariaDB Server version 10.9 is valid # [info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo # [info] Adding trusted package signing keys... /etc/pki/rpm-gpg ~ ~ # [info] Successfully added trusted package signing keys # [info] Cleaning package cache... 46 files removed
Installez maintenant le paquet MariaDB-backup en utilisant dnf :
[root@centos8 ~]# dnf -y --allowerasing install MariaDB-backup
Téléchargez la base de données sakila :
[root@centos8 ~]# wget http://downloads.mysql.com/docs/sakila-db.tar.gz --2022-11-09 08:45:31-- http://downloads.mysql.com/docs/sakila-db.tar.gz Resolving downloads.mysql.com (downloads.mysql.com)... 184.87.189.31, 2a02:26f0:fd00:185::2e31, 2a02:26f0:fd00:194::2e31 Connecting to downloads.mysql.com (downloads.mysql.com)|184.87.189.31|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://downloads.mysql.com/docs/sakila-db.tar.gz [following] --2022-11-09 08:45:31-- https://downloads.mysql.com/docs/sakila-db.tar.gz Connecting to downloads.mysql.com (downloads.mysql.com)|184.87.189.31|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 732286 (715K) [application/x-gzip] Saving to: ‘sakila-db.tar.gz’ sakila-db.tar.gz 100%[====================================================================================================================>] 715.12K 3.09MB/s in 0.2s 2022-11-09 08:45:31 (3.09 MB/s) - ‘sakila-db.tar.gz’ saved [732286/732286]
Désarchivez l'archive :
[root@centos8 ~]# tar xvf sakila-db.tar.gz sakila-db/ sakila-db/sakila-data.sql sakila-db/sakila-schema.sql sakila-db/sakila.mwb
Importez les fichiers sakila-schema.sql et sakila-data.sql :
[root@centos8 ~]# mysql -uroot -p < sakila-db/sakila-schema.sql Enter password: ERROR 1728 (HY000) at line 477: Cannot load from mysql.proc. The table is probably corrupted [root@centos8 ~]# mysql -uroot -p < sakila-db/sakila-data.sql Enter password:
Vréez le répertoire mkdir /var/mariadb :
[root@centos8 ~]# mkdir /var/mariadb
Effectuez une sauvegarde des bases en utilisant mariabackup :
[root@centos8 ~]# mariabackup --backup --target-dir=/var/mariadb/backup/ --user=root --password=fenestros1 ..... mariabackup: Stopping log copying thread.[00] 2022-11-09 09:36:29 >> log scanned up to (7729884) [00] 2022-11-09 09:36:29 >> log scanned up to (7729884) [00] 2022-11-09 09:36:29 Executing BACKUP STAGE END [00] 2022-11-09 09:36:29 All tables unlocked [00] 2022-11-09 09:36:29 Backup created in directory '/var/mariadb/backup/' [00] 2022-11-09 09:36:29 Writing backup-my.cnf [00] 2022-11-09 09:36:29 ...done [00] 2022-11-09 09:36:29 Writing xtrabackup_info [00] 2022-11-09 09:36:29 ...done [00] 2022-11-09 09:36:29 Redo log (from LSN 1635022 to 7729884) was copied. [00] 2022-11-09 09:36:29 completed OK!
Consultez le contenu du répertoire /var/mariadb/backup/ :
[root@centos8 ~]# ls -l /var/mariadb/backup/ total 18296 -rw-r-----. 1 root root 16384 Nov 9 09:36 aria_log.00000001 -rw-r-----. 1 root root 52 Nov 9 09:36 aria_log_control -rw-r-----. 1 root root 285 Nov 9 09:36 backup-my.cnf -rw-r-----. 1 root root 12582912 Nov 9 09:36 ibdata1 -rw-r-----. 1 root root 6107150 Nov 9 09:36 ib_logfile0 drwx------. 2 root root 249 Nov 9 09:36 ligue1 drwx------. 2 root root 4096 Nov 9 09:36 mysql drwx------. 2 root root 58 Nov 9 09:36 Nombres drwx------. 2 root root 20 Nov 9 09:36 performance_schema drwx------. 2 root root 4096 Nov 9 09:36 sakila -rw-r-----. 1 root root 77 Nov 9 09:36 xtrabackup_checkpoints -rw-r-----. 1 root root 450 Nov 9 09:36 xtrabackup_info
Créez maintenant une base de données dénommée world :
[root@centos8 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 6 Server version: 10.9.4-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE world; Query OK, 1 row affected (0.000 sec) MariaDB [(none)]> exit Bye
Téléchargez la nase de données world-db.tar.gz :
[root@centos8 ~]# wget http://downloads.mysql.com/docs/world-db.tar.gz URL transformed to HTTPS due to an HSTS policy --2022-11-09 09:40:41-- https://downloads.mysql.com/docs/world-db.tar.gz Resolving downloads.mysql.com (downloads.mysql.com)... 184.87.189.31, 2a02:26f0:fd00:185::2e31, 2a02:26f0:fd00:194::2e31 Connecting to downloads.mysql.com (downloads.mysql.com)|184.87.189.31|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 92916 (91K) [application/x-gzip] Saving to: ‘world-db.tar.gz’ world-db.tar.gz 100%[====================================================================================================================>] 90.74K --.-KB/s in 0.05s 2022-11-09 09:40:42 (1.80 MB/s) - ‘world-db.tar.gz’ saved [92916/92916]
Désarchivez le fichier :
[root@centos8 ~]# tar xvf world-db.tar world-db/ world-db/world.sql
Importez le fichier world.sl :
[root@centos8 ~]# mysql -uroot -p world < world-db/world.sql Enter password:fenestros1
Procédez maintenant à une sauvegarde incrémentale avec mariabackup :
[root@centos8 ~]# mariabackup --backup --target-dir=/var/mariadb/inc1/ --incremental-basedir=/var/mariadb/backup/ --user=root --password=fenestros1 ... mariabackup: Stopping log copying thread.[00] 2022-11-09 09:45:04 >> log scanned up to (8510078) [00] 2022-11-09 09:45:05 >> log scanned up to (8510078) [00] 2022-11-09 09:45:05 Executing BACKUP STAGE END [00] 2022-11-09 09:45:05 All tables unlocked [00] 2022-11-09 09:45:05 Backup created in directory '/var/mariadb/inc1/' [00] 2022-11-09 09:45:05 Writing backup-my.cnf [00] 2022-11-09 09:45:05 ...done [00] 2022-11-09 09:45:05 Writing xtrabackup_info [00] 2022-11-09 09:45:05 ...done [00] 2022-11-09 09:45:05 Redo log (from LSN 1635022 to 8510078) was copied. [00] 2022-11-09 09:45:05 completed OK!
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@centos8 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.9.4-MariaDB MariaDB Server Copyright (c) 2000, 2018, 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.031 sec) MariaDB [(none)]>
Important - 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.
Configurer le maître
Ajoutez ensuite deux lignes dans la section mysqld du fichier /etc/my.cnf.d/server.cnf du maître:
[root@centos8 ~]# cat /etc/my.cnf.d/server.cnf # # These groups are read by MariaDB server. # Use it for options that only the server (but not clients) should see # # See the examples of server my.cnf files in /usr/share/mysql/ # # this is read by the standalone daemon and embedded servers [server] # this is only for the mysqld standalone daemon [mysqld] # # * Galera-related settings # [galera] # Mandatory settings #wsrep_on=ON #wsrep_provider= #wsrep_cluster_address= #binlog_format=row #default_storage_engine=InnoDB #innodb_autoinc_lock_mode=2 # # Allow server to accept connections on all interfaces. # #bind-address=0.0.0.0 # # Optional setting #wsrep_slave_threads=1 #innodb_flush_log_at_trx_commit=0 #AJOUTER LA LIGNE SUIVANTE server-id = 1 #AJOUTER LA LIGNE SUIVANTE log-bin = mysql-bin # this is only for embedded server [embedded] # This group is only read by MariaDB servers, not by MySQL. # If you use the same .cnf file for MySQL and MariaDB, # you can put MariaDB-only options here [mariadb] # This group is only read by MariaDB-10.8 servers. # If you use the same .cnf file for MariaDB of different versions, # use this group for options that older servers don't understand [mariadb-10.8]
Redémarrez le service mariadb :
[root@centos8 ~]# systemctl restart mariadb
Configurer l'esclave
Connectez-vous à la VM esclave au 10.0.2.46. Vérifiez que vous voyez le maître sur le réseau :
[root@centos7 ~]# ping -c3 10.0.2.45 PING 10.0.2.45 (10.0.2.45) 56(84) bytes of data. 64 bytes from 10.0.2.45: icmp_seq=1 ttl=64 time=2.40 ms 64 bytes from 10.0.2.45: icmp_seq=2 ttl=64 time=1.52 ms 64 bytes from 10.0.2.45: icmp_seq=3 ttl=64 time=1.49 ms --- 10.0.2.45 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
Configurez le dépôt de MariaDB et installez mariadb, mariadb-server et MariaDB-backup :
[root@centos8 ~]# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash [root@centos8 ~]# dnf install mariadb mariadb-server MariaDB-backup
Démarrez le service mariadb et exéctuez le script mariadb-secure-installation :
[root@centos8 ~]# systemctl start mariadb [root@centos8 ~]# mariadb-secure-installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n ... skipping. You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] Y New password: fenestros Re-enter new password: fenestros Password updated successfully! Reloading privilege tables.. ... Success! ...
Connectez-vous à MariaDB :
[root@centos8 ~]# mysql -uroot -p Enter password: fenestros Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 11 Server version: 10.9.4-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
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 :
MariaDB [(none)]> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicant'@'%' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.031 sec) MariaDB [(none)]>exit Bye
La base de données du Maître doit être transférée 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.
Pour sauvegarder la totalité des bases de données sur le maître, il convient d'utiliser la commande suivante :
[root@centos8 ~]# mysqldump --user=root --password=fenestros1 --extended-insert --all-databases --master-data > /tmp/backup.sql;
Important - Notez que –master-data permet à mysqldump de récupérer les données du maître concernant la réplication.
Transférez le fichier backup.sql vers le serveur esclave :
[root@centos8 ~]# scp /tmp/backup.sql root@10.0.2.46:/tmp The authenticity of host '10.0.2.46 (10.0.2.46)' can't be established. ECDSA key fingerprint is SHA256:Q7T/CP0SLiMbMAIgVzTuEHegYS/spPE5zzQchCHD5Vw. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.0.2.46' (ECDSA) to the list of known hosts. root@10.0.2.46's password: backup.sql 100% 4044KB 35.2MB/s 00:00 [root@centos8 ~]#
Ensuite sur l'esclave, il convient d'injecter le fichier backup.sql en provenance du maître:
[root@centos8 ~]# mysql --user=root --password=fenestros < /tmp/backup.sql ERROR 1050 (42S01) at line 3057: Table 'user' already exists
Ajoutez ensuite les lignes dans la section mysqld du fichier /etc/my.cnf.d/server.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@centos8 ~]# vi /etc/my.cnf.d/server.cnf [root@centos8 ~]# cat /etc/my.cnf.d/server.cnf # # These groups are read by MariaDB server. # Use it for options that only the server (but not clients) should see # # See the examples of server my.cnf files in /usr/share/mysql/ # # this is read by the standalone daemon and embedded servers [server] # this is only for the mysqld standalone daemon [mysqld] 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 # # * Galera-related settings # [galera] # Mandatory settings #wsrep_on=ON #wsrep_provider= #wsrep_cluster_address= #binlog_format=row #default_storage_engine=InnoDB #innodb_autoinc_lock_mode=2 # # Allow server to accept connections on all interfaces. # #bind-address=0.0.0.0 # # Optional setting #wsrep_slave_threads=1 #innodb_flush_log_at_trx_commit=0 # this is only for embedded server [embedded] # This group is only read by MariaDB servers, not by MySQL. # If you use the same .cnf file for MySQL and MariaDB, # you can put MariaDB-only options here [mariadb] # This group is only read by MariaDB-10.8 servers. # If you use the same .cnf file for MariaDB of different versions, # use this group for options that older servers don't understand [mariadb-10.8]
Créez maintenant le répertoire /var/log/mysqld et attribuez-le à l'utilisateur mysql du groupe mysql :
[root@centos8 ~]# mkdir /var/log/mysqld [root@centos8 ~]# chown mysql:mysql /var/log/mysqld
Définir les paramètres de l'esclave :
[root@centos8 ~]# mysql -uroot -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 13 Server version: 10.9.4-MariaDB MariaDB Server Copyright (c) 2000, 2018, 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 ='10.0.2.45'; 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@centos8 ~]# cat /var/lib/mysql/master.info 33 4 10.0.2.45 replicant password 3306 60 0 0 30.000 0 0 using_gtid=0 do_domain_ids=0 ignore_domain_ids=0 END_MARKER
A faire - Pour plus d'informations concernant CHANGE MASTER TO, consultez ce lien.
Redémarrez le service mariadb :
[root@centos8 ~]# systemctl restart mariadb
Ensuite démarrez l'esclave:
[root@centos8 ~]# mysql -uroot -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 7 Server version: 10.9.4-MariaDB-log MariaDB Server Copyright (c) 2000, 2018, 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.000 sec) MariaDB [mysql]> SHOW warnings; +-------+------+--------------------------+ | Level | Code | Message | +-------+------+--------------------------+ | Note | 1254 | Slave is already running | +-------+------+--------------------------+ 1 row in set (0.000 sec) MariaDB [mysql]> exit Bye
Contrôler la réplication
Arrêtez le pare-feu iptables sur l'esclave :
[root@centos7 ~]# systemctl stop firewalld
Pour visualiser le statut de la réplication sur l'esclave, utilisez la commande suivante:
[root@centos8 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.9.4-MariaDB-log MariaDB Server Copyright (c) 2000, 2018, 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 | Master_SSL_Crl | Master_SSL_Crlpath | Using_Gtid | Gtid_IO_Pos | Replicate_Do_Domain_Ids | Replicate_Ignore_Domain_Ids | Parallel_Mode | SQL_Delay | SQL_Remaining_Delay | Slave_SQL_Running_State | Slave_DDL_Groups | Slave_Non_Transactional_Groups | Slave_Transactional_Groups | +----------------------+-------------+-------------+-------------+---------------+-----------------+---------------------+----------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------+------------------+----------------+--------------------+------------+-------------+-------------------------+-----------------------------+---------------+-----------+---------------------+--------------------------------------------------------+------------------+--------------------------------+----------------------------+ | Connecting to master | 10.0.2.45 | replicant | 3306 | 60 | | 4 | relay.000001 | 4 | | Connecting | Yes | | | | | | | 0 | | 0 | 0 | 256 | None | | 0 | No | | | | | | NULL | No | 2003 | error connecting to master 'replicant@10.0.2.45:3306' - retry-time: 60 maximum-retries: 100000 message: Can't connect to server on '10.0.2.45' (113 "No route to host") | 0 | | | 0 | | | No | | | | optimistic | 0 | NULL | Slave has read all relay log; waiting for more updates | 0 | 0 | 0 | +----------------------+-------------+-------------+-------------+---------------+-----------------+---------------------+----------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------+----------------+-----------------------------+------------------+----------------+--------------------+------------+-------------+-------------------------+-----------------------------+---------------+-----------+---------------------+--------------------------------------------------------+------------------+--------------------------------+----------------------------+ 1 row in set (0.000 sec) MariaDB [(none)]>
Retournez vers le maître est arrêter le pare-feu :
[root@centos8 ~]# systemctl stop firewalld
Pour visualiser le statut de la réplication sur le maître, utilisez la commande suivante:
[root@centos8 ~]# mysql -u root -p Enter password: fenestros1 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 6 Server version: 10.9.4-MariaDB-log MariaDB Server Copyright (c) 2000, 2018, 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 | 328 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.000 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]> UPDATE equipe SET stade = 'La réplication fonctionne!!' WHERE id_equipe=1; Query OK, 1 row affected (0.001 sec) Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [ligue1]>
Contrôlez la réplication sur la VM esclave :
[root@centos8 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 11 Server version: 10.9.4-MariaDB-log MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 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.000 sec) MariaDB [ligue1]>
Copyright © 2022 Hugh Norris.