Dans notre tutoriel précédent, nous avons appris comment installer et configurer MariaDB[1], et avons également appris quelques commandes de base pour gérer MariaDB[2]. Apprenons maintenant comment configurer une réplication maître-esclave sur un serveur MariaDB.
La réplication est utilisée pour créer plusieurs copies de notre base de données. Ces copies peuvent être utilisées pour exécuter des requêtes sur d'autres bases de données, comme certaines requêtes très lourdes qui peuvent affecter les performances du serveur de base de données principal, ou nous pouvons l'utiliser pour la redondance des données ou. les deux objectifs ci-dessus. Nous pouvons automatiser ce processus, c'est-à-dire que le processus de réplication du serveur maître vers le serveur esclave est automatiquement effectué. Effectuez des sauvegardes sans affecter les écritures sur le serveur principal.
Donc, configurons maintenant notre réplication maître-esclave, qui nécessite deux machines sur lesquelles MariaDB est installée. Leurs adresses IP sont les suivantes :
Avec MariaDB installée sur ces machines, continuons avec le tutoriel. Si vous avez besoin d'un tutoriel sur l'installation et la configuration de MariaDB, consultez ce tutoriel[3].
Nous entrons maintenant dans une base de données dans MariaDB nommée important qui sera copiée sur notre serveur esclave. Pour démarrer le processus, nous éditons un fichier appelé /etc/my.cnf qui est le fichier de configuration de MariaDB.
$ vi /etc/my.cnf
Recherchez la section [mysqld] dans ce fichier et saisissez ce qui suit :
[mysqld] log-bin server_id=1 replicate-do-db=important bind-address=192.168.1.120
Enregistrez et quittez ce fichier. Une fois terminé, vous devez redémarrer le service MariaDB.
$ systemctl restart mariadb
Ensuite, nous nous connectons à l'instance Mariadb sur notre serveur principal.
$ mysql -u root -p
Créez un nouvel utilisateur nommé slaveuser dessus pour la réplication maître-esclave, puis exécutez la commande suivante pour lui attribuer les autorisations requises :
STOP SLAVE; GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'iamslave'; FLUSH PRIVILEGES; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
Remarque : Nous avons besoin des valeurs de MASTER_LOG_FILE et MASTER_LOG_POS pour configurer la réplication maître-esclave, qui peut être obtenue par show master status, vous devez donc vous assurer d'écrire leurs valeurs.
Après avoir exécuté ces commandes, entrez exit pour quitter cette session.
Maintenant, nous devons créer une sauvegarde pour notre base de données important Vous pouvez utiliser la commande mysqldump pour sauvegarder.
$ mysqldump -u root -p important > important_backup.sql
Une fois la sauvegarde terminée, nous devons nous reconnecter à la base de données MariaDB et déverrouiller nos tables.
$ mysql -u root -p $ UNLOCK TABLES;
Puis quittez cette session. Maintenant, nous déplaçons notre sauvegarde vers le serveur esclave, dont l'adresse IP est : 192.168.1.130.
La configuration sur le serveur maître est terminée. Maintenant, nous commençons à configurer le serveur esclave.
我们再次去编辑(从服务器上的) /etc/my.cnf 文件,找到配置文件中的 [mysqld] 节,然后输入如下内容:
[mysqld] server-id = 2 replicate-do-db=important [ …]
现在,我们恢复我们主数据库的备份到从服务器的 MariaDB 上,运行如下命令:
$ mysql -u root -p < /data/ important_backup.sql
当这个恢复过程结束之后,我们将通过登入到从服务器上的 MariaDB,为数据库 important 上的用户 'slaveuser' 授权。
$ mysql -u root -p
GRANT ALL PRIVILEGES ON important.* TO 'slaveuser'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
接下来,为了这个变化生效,重启 MariaDB。
$ systemctl restart mariadb
记住,我们需要 MASTER_LOG_FILE 和 MASTER_LOG_POS 变量的值,它可以通过在主服务器上运行 SHOW MASTER STATUS 获得。现在登入到从服务器上的 MariaDB,然后通过运行下列命令,告诉我们的从服务器它应该去哪里找主服务器。
STOP SLAVE; CHANGE MASTER TO MASTER_HOST= '192.168.1.110′, MASTER_USER='slaveuser', MASTER_PASSWORD='iamslave', MASTER_LOG_FILE='mariadb-bin.000001′, MASTER_LOG_POS=460; SLAVE START; SHOW SLAVE STATUS\G;
注意: 请根据你的机器的具体情况来改变主服务器的配置。
我们将在我们的主服务器上创建一个新表来测试主从复制是否正常工作。因此,登入到主服务器上的 MariaDB。
$ mysql -u root -p
选择数据库为 important:
use important;
在这个数据库上创建一个名为 test 的表:
create table test (c int);
然后在这个表中插入一些数据:
insert into test (c) value (1);
检索刚才插入的值是否存在:
select * from test;
你将会看到刚才你插入的值已经在这个新建的表中了。
现在,我们登入到从服务器的数据库中,查看主从复制是否正常工作。
$ mysql -u root -p $ use important; $ select * from test;
你可以看到与前面在主服务器上的命令输出是一样的。因此,说明我们的主从服务工作正常,没有发生任何问题。
我们的教程结束了,请在下面的评论框中留下你的查询/问题。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!