Maison > Tutoriel système > Linux > Comment configurer la réplication maître-esclave dans MariaDB

Comment configurer la réplication maître-esclave dans MariaDB

WBOY
Libérer: 2024-05-01 13:49:01
avant
537 Les gens l'ont consulté

如何在 MariaDB 中配置主从复制

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 :

  • Serveur maître - 192.168.1.120 Nom d'hôte - master.ltechlab.com
  • Serveur esclave - 192.168.1.130 Nom d'hôte - slave.ltechlab.com

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].

Étape 1 - Configuration du serveur maître

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
Copier après la connexion

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
Copier après la connexion

Enregistrez et quittez ce fichier. Une fois terminé, vous devez redémarrer le service MariaDB.

$ systemctl restart mariadb
Copier après la connexion
Copier après la connexion

Ensuite, nous nous connectons à l'instance Mariadb sur notre serveur principal.

$ mysql -u root -p
Copier après la connexion
Copier après la connexion
Copier après la connexion

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;
Copier après la connexion

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.

Étape 2 - Créez une sauvegarde de base de données et déplacez-la vers le serveur esclave

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
Copier après la connexion

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;
Copier après la connexion

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.

Étape 3 : Configurer le serveur esclave

我们再次去编辑(从服务器上的) /etc/my.cnf 文件,找到配置文件中的 [mysqld] 节,然后输入如下内容:

[mysqld]
server-id = 2
replicate-do-db=important
[ …]
Copier après la connexion

现在,我们恢复我们主数据库的备份到从服务器的 MariaDB 上,运行如下命令:

$ mysql -u root -p < /data/ important_backup.sql
Copier après la connexion

当这个恢复过程结束之后,我们将通过登入到从服务器上的 MariaDB,为数据库 important 上的用户 'slaveuser' 授权。

$ mysql -u root -p
Copier après la connexion
Copier après la connexion
Copier après la connexion
GRANT ALL PRIVILEGES ON important.* TO 'slaveuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Copier après la connexion

接下来,为了这个变化生效,重启 MariaDB。

$ systemctl restart mariadb
Copier après la connexion
Copier après la connexion
第 4 步:启动复制

记住,我们需要 MASTER_LOG_FILEMASTER_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;
Copier après la connexion

注意: 请根据你的机器的具体情况来改变主服务器的配置。

第 5 步:测试复制

我们将在我们的主服务器上创建一个新表来测试主从复制是否正常工作。因此,登入到主服务器上的 MariaDB。

$ mysql -u root -p
Copier après la connexion
Copier après la connexion
Copier après la connexion

选择数据库为 important

use important;
Copier après la connexion

在这个数据库上创建一个名为 test 的表:

create table test (c int);
Copier après la connexion

然后在这个表中插入一些数据:

insert into test (c) value (1);
Copier après la connexion

检索刚才插入的值是否存在:

select * from test;
Copier après la connexion

你将会看到刚才你插入的值已经在这个新建的表中了。

现在,我们登入到从服务器的数据库中,查看主从复制是否正常工作。

$ mysql -u root -p
$ use important;
$ select * from test;
Copier après la connexion

你可以看到与前面在主服务器上的命令输出是一样的。因此,说明我们的主从服务工作正常,没有发生任何问题。

我们的教程结束了,请在下面的评论框中留下你的查询/问题。


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!

source:linuxprobe.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal