Wie richte ich die Master-Slave-Replikation in Mysql5.7 ein? Der folgende Artikel stellt Ihnen die Schritte zum Erstellen einer Mysql5.7-Master-Slave-Replikation vor. Freunde in Not können mehr darüber erfahren. ~
Um eine Nichtverfügbarkeit des Dienstes zu vermeiden und die Sicherheit und Zuverlässigkeit der Daten zu gewährleisten, müssen wir mindestens zwei oder mehr Server zum Speichern von Datenbankdaten bereitstellen, das heißt, wir müssen die Daten kopieren und darauf bereitstellen Mehrere verschiedene Server Im Internet können andere Server weiterhin Dienste bereitstellen.
MySQL bietet eine Master-Slave-Replikationsfunktion, um die Dienstverfügbarkeit sowie die Datensicherheit und -zuverlässigkeit zu verbessern ist in einen Master-Server und einen Slave-Server unterteilt, der Master-Server ist nur für das Lesen verantwortlich und wird auch als Master/Slave bezeichnet Der Master und der Slave sind der Slave, dies ist jedoch nicht zwingend erforderlich, was bedeutet, dass der Slave auch schreiben und der Master auch lesen kann, aber im Allgemeinen tun wir dies nicht. 2. Master-Slave-Replikationsarchitektur Daten auf dem Master-Server Wenn eine Änderung auftritt, wird die Änderung in die binäre Ereignisprotokolldatei geschriebenSchließlich gehen der E/A-Thread und der SQL-Thread in den Ruhezustand und warten auf das nächste Mal, wenn sie geweckt werdensalve Der Slave-Server erkennt innerhalb eines bestimmten Zeitintervalls das Binärprotokoll auf dem Master-Server, um festzustellen, ob es sich geändert hat Server wird erkannt Wenn das binäre Ereignisprotokoll des Servers das empfangene binäre Ereignisprotokoll in seiner lokalen Relay-Protokolldatei speichert
salve Der Slave-Server startet SQL Thread, um das binäre Protokoll aus dem Relay-Protokoll zu lesen und es lokal wiederzugeben, um seine Daten zu erstellen konsistent mit dem Master-Server;
3. Eine Master- und mehrere Slave-Konstruktion: 1. Linux-Version CentOS Release 6.9 (Final)
2. Download-Adresse<img src="https://img.php.cn/upload/article/000/000/024/025996d0f98ca9f194419e6b8bef644e-0.png" alt="Bringen Sie Ihnen Schritt für Schritt bei, wie Sie die Master-Slave-Replikation in Mysql5.7 einrichten"><br><strong> 1. Entpacken Sie mysql-5.7.26-linux-glibc2. 12-x86_64.tar.gz. Erstellen Sie ein Multi-Instanz-Datenverzeichnis .cn/upload/article/000/000/024/bf43aae7345b9cd82d062d194ef92414- 2.png" alt="Bildbeschreibung hier einfügen"/></strong><br>3. Datenbankinitialisierung<img src="https://img.php.cn/upload/article/000/000/024/025996d0f98ca9f194419e6b8bef644e-1.png" alt="Bringen Sie Ihnen Schritt für Schritt bei, wie Sie die Master-Slave-Replikation in Mysql5.7 einrichten"><br><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">#/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</pre><div class="contentsignin">Nach dem Login kopieren</div></div><strong>Wenn ein Fehler auftritt, führen Sie </strong><code>yum aus installiere libaio-devel.x86_64
yum - und installiere numactl
Hinweis:
1. Es wird empfohlen Erstellen Sie die Datei unter Linux, um die Codierungsinkonsistenz zwischen Windows und Linux zu verhindern.
2. Ändern Sie die Portnummer, wenn Sie verschiedene Instanzen konfigurieren
3. Platzieren Sie die geänderte Datei „my.cnf“. 3306 bzw. 3307 Ordner
cd /usr/local/mysql mkdir data cd data #主 mkdir 3306 #从 mkdir 3307
#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
6. Datenbankinitialisierungskonfiguration 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
[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
2.创建多实例数据目录
#其中 --defaults-file 是指定配置文件,& 符合表示后台启动 ./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf & ./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
3.数据库初始化
#客户端连接 ./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;
若出现错误执行yum install libaio-devel.x86_64
yum -y install numactl
4.创建各个数据库的配置文件my.cnf
注意:
1.建议在linux下创建文件防止windows 与 linux 编码不一致
2.不同的实例下配置要修改端口号
3.将修改好的my.cnf分别放至3306、3307文件夹内
#/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编号,编号要唯一 建议和端口保持一致
5.多实例启动
切换到/usr/local/mysql-5.7.24/bin目录下,使用 msyqld_safe 命令指定配置文件并启动MySQL服务:
./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf & ./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
6.数据库初始化配置
分别在各个实例内进行配置 如3306:
#在/usr/local/mysql/bin目录下执行 ./mysql -uroot -p -P3306 -h127.0.0.1 grant replication slave on *.* to 'copy'@'%' identified by 'root';
客户端连接测试
7.数据库唯一id配置
1.确定各个实例正常启动无误后进行主从配置
2.关闭实例分别在各个实例的my.cnf文件加入以下配置
# mysql主服务器默认初始值: # File:mysql-bin.000001 # Position:154 show master status;
加入完毕后启动各个实例
reset master;
7.主机设置1.在主服务器上创建复制数据的账号并授权
#在/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;
7.从机设置
1.需要登录到 3306|3307|3308的从机客户端
change master to master_host='主机ip',master_user='copy', master_port=主机端口,master_password='连接主机密码', master_log_file='mysql-bin.000001',master_log_pos=154;
2.查看从机状态
start slave;
3.若不是初始状态,重置一下
show slave status \G;
4.设置从机设置主机配置
stop slave; set global sql_slave_skip_counter =1; start slave; show slave status\G;
5.执行 开始复制命令
slave-parallel-type=LOGICAL_CLOCK slave-parallel-workers=16 master_info_repository=TABLE relay_log_info_repository=TABLE relay_log_recovery=ON
6.查看从机状态
in jeder Instanz als 3306 konfigurieren:
Client-Verbindungstest
🎜🎜🎜7. Konfiguration der eindeutigen Datenbank-ID🎜🎜🎜1. Bestätigen Sie, dass jede Instanz normal startet und führen Sie die Master-Slave-Konfiguration durch
🎜 2. Schließen Sie die Instanz und fügen Sie die folgende Konfiguration zur my.cnf-Datei jeder Instanz hinzu
🎜rrreee🎜< code>Starten Sie jede Instanz, nachdem Sie sie hinzugefügt haben🎜rrreee🎜🎜7. Host-Einstellungen🎜🎜< code>1 Erstellen Sie ein Konto zum Replizieren von Daten auf dem Hauptserver und autorisieren Sie es🎜rrreee🎜 2. Überprüfen Sie den Status des Hauptservers
🎜rrreee🎜3. Wenn der Hauptdienststatus nicht der Anfangsstatus ist, müssen Sie den Status zurücksetzen
🎜rrreee🎜🎜7 🎜🎜1.Müssen Sie sich beim Slave-Client von 3306|3307|3308 anmelden
🎜rrreee🎜2 .Überprüfen Sie den Slave-Status
🎜rrreee🎜3 Wenn Es ist nicht der Ausgangszustand, setzen Sie ihn zurück
🎜rrreee🎜4. Legen Sie die Slave-Einstellungen und die Host-Konfiguration fest
🎜rrreee🎜 Führen Sie den Startkopierbefehl aus
🎜 rrreee🎜6. Überprüfen Sie den Slave-Status
🎜show slave status \G;
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
相关学习推荐:mysql教程(视频)
Das obige ist der detaillierte Inhalt vonBringen Sie Ihnen Schritt für Schritt bei, wie Sie die Master-Slave-Replikation in Mysql5.7 einrichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!