Maison  >  Article  >  base de données  >  Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?

Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?

青灯夜游
青灯夜游avant
2021-09-06 18:58:382267parcourir

Comment configurer la réplication maître-esclave dans Mysql5.7 ? L'article suivant vous guidera à travers les étapes pour créer une réplication maître-esclave dans Mysql5.7. J'espère qu'il vous sera utile !

Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?

1. Présentation

La réplication maître-esclave peut réaliser la sauvegarde de la base de données et la séparation lecture-écriture :

Afin d'éviter l'indisponibilité du service et d'assurer la sécurité et la fiabilité des données, nous devons déployer au moins deux ou deux serveurs ou plus pour stocker les données de la base de données, c'est-à-dire que nous devons copier les données et les déployer sur plusieurs serveurs différents. Même si un serveur tombe en panne, d'autres serveurs peuvent toujours continuer à fournir des services
MySQL fournit le maître. esclave La fonction de réplication améliore la disponibilité du service ainsi que la sécurité et la fiabilité des données.

La réplication maître-esclave signifie que le serveur est divisé en un serveur maître et un serveur esclave. Le serveur maître est responsable de la lecture et de l'écriture, et le serveur esclave est uniquement responsable. responsable de la lecture. La réplication maître-esclave est aussi appelée maître/esclave, le maître est le maître, et l'esclave est l'esclave, mais ce n'est pas obligatoire, c'est-à-dire que l'esclave peut aussi écrire, et le maître peut aussi. lire, mais en général nous ne le faisons pas. [Recommandations associées : Tutoriel vidéo MySQL]

2. Architecture de réplication maître-esclave

Architecture d'un maître et de plusieurs esclaves :
Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?
Architecture de plusieurs maîtres et plusieurs esclaves : Maître -principe de réplication esclave :
Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?
Lorsque les données sur le serveur maître changent, les modifications seront écrites dans le fichier journal des événements binaires salve Le serveur esclave détectera le journal binaire sur le serveur maître dans un certain intervalle de temps. Détection S'il a changé. S'il est détecté que le journal des événements binaires du serveur maître a changé, un thread d'E/S sera démarré pour demander le journal des événements binaires maître

    En même temps, le serveur maître démarrera un thread de dump pour chaque thread d'E/S. Utilisé pour lui envoyer des journaux d'événements binaires
  1. slave Le serveur esclave enregistrera le journal des événements binaires reçu dans son propre fichier journal de relais local
  2. salve Le serveur esclave démarrera SQL Thread pour lire le journal binaire du journal de relais localement. Rejouez pour rendre ses données cohérentes avec le serveur principal ;
  3. Enfin, le thread d'E/S et le thread SQL entreront en état de veille, en attendant d'être réveillés la prochaine fois
  4. 3. Un maître et construction de plusieurs esclaves
  5. Environnement de construction :

1. Version Linux CentOS version 6.9 (finale)

2. gzAdresse de téléchargement

1 .Décompressez mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
1. Linux 版本 CentOS release 6.9 (Final)
2. mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz下载地址

1.解压 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

#/usr/local下解压
tar xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
#重命名文件
mv mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql

2.创建多实例数据目录

cd /usr/local/mysql
mkdir data
cd data
#主
mkdir 3306
#从
mkdir 3307

Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?
3.数据库初始化

#mysql 安装bin目录下执行
#initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空

#初始化3306
./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3306 --user=mysql
#初始化3307
./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3307 --user=mysql

若出现错误执行
yum install libaio-devel.x86_64
yum -y install numactlUne brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?
4.创建各个数据库的配置文件my.cnf

注意:
1.建议在linux下创建文件防止windows 与 linux 编码不一致
2.不同的实例下配置要修改端口号
3.将修改好的my.cnf分别放至3306、3307文件夹内

[client]
port        = 3306
socket      = /usr/local/mysql/data/3306/mysql.sock
default-character-set=utf8

[mysqld]
port    = 3306
socket  = /usr/local/mysql/data/3306/mysql.sock
datadir = /usr/local/mysql/data/3306
log-error = /usr/local/mysql/data/3306/error.log
pid-file = /usr/local/mysql/data/3306/mysql.pid

character-set-server=utf8
lower_case_table_names=1
autocommit = 1

log-bin=mysql-bin
server-id=3306

5.多实例启动
切换到/usr/local/mysql-5.7.24/bin目录下,使用 msyqld_safe 命令指定配置文件并启动MySQL服务:

#其中 --defaults-file 是指定配置文件,& 符合表示后台启动
./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &

6.数据库初始化配置
分别在各个实例内进行配置 如3306:

#客户端连接
./mysql -uroot -p -P3306 -h127.0.0.1
#修改Mysql密码
alter user 'root'@'localhost' identified by 'root';
#授权远程访问(这样远程客户端才能访问)
grant all privileges on *.* to root@'%' identified by 'root';
#刷新配置
flush privileges;

客户端连接测试
Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?
7.数据库唯一id配置

1.确定各个实例正常启动无误后进行主从配置
2.关闭实例分别在各个实例的my.cnf文件加入以下配置

#/usr/local/mysql/bin 关闭实例
./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown
./mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown

#新加的配置
log-bin=mysql-bin   	#表示启用二进制日志
server-id=3307 		#表示server编号,编号要唯一 建议和端口保持一致

加入完毕后启动各个实例

./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf &

./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &

7.主机设置
1.在主服务器上创建复制数据的账号并授权

#在/usr/local/mysql/bin目录下执行 
 ./mysql -uroot -p -P3306 -h127.0.0.1
 grant replication slave on *.* to 'copy'@'%' identified by 'root';

2.查看主服务器状态

# mysql主服务器默认初始值:
#			File:mysql-bin.000001
#			Position:154

show master status;

3.如果主服务状态不是初始状态,需要重置状态

reset master;

7.从机设置
1.需要登录到 3306|3307|3308的从机客户端

#在/usr/local/mysql/bin目录下执行  多台从机‘|’分隔
./mysql -uroot -p -P3308|3309|3310 -h127.0.0.1

2.查看从机状态

#初始状态:Empty set 
show slave status;

3.若不是初始状态,重置一下

stop slave; 	#停止复制,相当于终止从服务器上的IO和SQL线程
reset slave;

4.设置从机设置主机配置

change master to 
master_host='主机ip',master_user='copy',
master_port=主机端口,master_password='连接主机密码',
master_log_file='mysql-bin.000001',master_log_pos=154;

🎜2 Créez un répertoire de données multi-instance🎜🎜
start slave;
🎜Insérer la description de l'image ici🎜🎜3. Initialisation de la base de données🎜🎜
show slave status \G;
🎜If une erreur se produit, exécutez 🎜yum install libaio-devel .x86_64🎜yum -y install numactlInsérer la description de l'image ici🎜🎜4. Créez le fichier de configuration my.cnf pour chaque base de données🎜🎜🎜Remarque : 🎜1. Il est recommandé de créer des fichiers sous Linux pour éviter que Windows ne soit incompatible avec l'encodage Linux🎜2. Le numéro de port doit être modifié pour différentes configurations🎜3. . Placez le my.cnf modifié dans les dossiers 3306 et 3307 respectivement🎜<pre class="brush:js;toolbar:false;">stop slave; set global sql_slave_skip_counter =1; start slave; show slave status\G;</pre>🎜🎜5. Démarrage multi-instance🎜🎜<code>Basculez vers le répertoire /usr/local/mysql-5.7.24/bin, utilisez la commande msyqld_safe pour spécifier le fichier de configuration et démarrer le service MySQL :🎜
 slave-parallel-type=LOGICAL_CLOCK
 slave-parallel-workers=16
 master_info_repository=TABLE
 relay_log_info_repository=TABLE
 relay_log_recovery=ON
🎜🎜6. Configuration d'initialisation de la base de données🎜🎜Configurez respectivement dans chaque instance, comme 3306 :🎜rrreee🎜 Test de connexion client🎜Insérer la description de l'image ici🎜🎜7. Configuration de l'identifiant unique de la base de données🎜🎜🎜1. Assurez-vous que chaque instance démarre normalement et effectuez la configuration maître-esclave🎜2. le fichier my.cnf de chaque instance🎜rrreee🎜Démarrez chaque instance une fois l'ajout terminé Exemple🎜rrreee🎜🎜7 Paramètres de l'hôte🎜🎜1. copier les données sur le serveur principal et l'autoriser🎜rrreee🎜2. Vérifiez l'état du serveur principal🎜rrreee🎜3. Si l'état du service principal n'est pas l'état initial, le le statut doit être réinitialisé🎜rrreee🎜🎜7. Paramètres de la machine esclave🎜🎜 1.Besoin de se connecter au client esclave 3306|3307|3308🎜rrreee🎜2. l'état de l'esclave🎜rrreee🎜3. Si ce n'est pas l'état initial, réinitialisez-le🎜rrreee🎜 4. Réglez la machine esclave et définissez la configuration de l'hôte 🎜
change master to 
master_host=&#39;主机ip&#39;,master_user=&#39;copy&#39;,
master_port=主机端口,master_password=&#39;连接主机密码&#39;,
master_log_file=&#39;mysql-bin.000001&#39;,master_log_pos=154;

5.执行 开始复制命令

start slave;

6.查看从机状态

show slave status \G;

Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?
7.测试主从复制

在主数据库中进行创建表,从库同步就算搭建成功了!
Une brève discussion sur la façon de configurer la réplication maître-esclave dans Mysql5.7 ?
若你在从库进行写操作,则从服务器不再同步主库数据,在从库中执行此命令即可解决!

stop slave;
set global sql_slave_skip_counter =1;
start slave;
show slave status\G;

若主从复制速度较慢的话,执行此命令

 slave-parallel-type=LOGICAL_CLOCK
 slave-parallel-workers=16
 master_info_repository=TABLE
 relay_log_info_repository=TABLE
 relay_log_recovery=ON

更多编程相关知识,请访问:编程入门!!

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer