旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

如安在一台windows主机上完成MySQL的主从复制?【MySQL教程】,windows,实现,机上

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:54评论:0


导读:MySQL的主从复制是经由过程binlog日记来完成的,主从复制中的“主”指的是MySQL主效劳器上的数据库,“从”指的是MySQL从效劳器上的数据库,且这类复制是基于数据库级别的...
MySQL的主从复制是经由过程binlog日记来完成的,主从复制中的“主”指的是MySQL主效劳器上的数据库,“从”指的是MySQL从效劳器上的数据库,且这类复制是基于数据库级别的,为此从效劳器中的数据库称号必需和主效劳器中的数据库称号保持一致,那末,要想完成主从复制,我们最少要有两个MySQL效劳器(最好是两个MySQL效劳器离别位于差别的主机上,或许在一个主机上装置两个MySQL,端口差别即可)。

平常来说,MySQL数据库的主库和从库是散布在差别的主机上。假如,如今我们只需一台主机,且是windows体系,怎样完成MySQL的主从复制呢?要领以下:

这里我们只引见 一主一从 的操纵要领。

我的电脑已装置了 xampp 集成环境(同wamp装置包相似),能够把它内里的MySQL效劳作为MySQL的主效劳器。那末,我们还需要在这台电脑上再装置一个MySQL,作为数据库的从效劳器。

我的电脑xampp中已装置的MySQL版本为 5.6.20,端口为3306。

我们需要再装置一个MySQL(最好装置同版本和邻近版本的,以避免出现问题),端口改成3307

数据库效劳器的参数:


  • 主效劳器(master): IP为127.0.0.1,端口为3306

  • 从效劳器(slave): IP为127.0.0.1,端口为3307

主效劳器设置:

修正主效劳器的数据库设置文件(E:\xampp\mysql\bin\my.ini),在 [mysqld] 标签的最下面,增加以下代码:

#需要备份的数据库

binlog-do-db=test

#不需要备份的数据库

binlog-ignore-db=mysql

#开启二进制日记

log-bin=mysql-bin

#效劳器id

server-id=1

保留退出,重启MySQL主效劳器。

binlog-do-db用于指定需要同步的数据库,binlog-ignore-db指定不需要同步的数据库,假如这两个参数都不设置,则从效劳器会复制主效劳器的一切数据库。

平常不必root账号作同步账号,为此,我们需要在主效劳器上建立一个新的用户(如 user01,暗码为123456)。

这里我们用敕令行的体式格局建立,要领以下:

翻开cmd,切换至 E:\xampp\mysql\bin,用 root 账户衔接MySQL主效劳器:

mysql -uroot -p -P3306

建立新用户:

create user 'user01'@'127.0.0.1' identified by '123456';

(@背面的ip地点为许可衔接的客户端的ip地点。)

然后,给新用户设置主从复制的权限:

grant replication slave on *.* to 'user01'@'127.0.0.1' identified by '123456';

(@背面的ip地点为许可衔接的客户端的ip地点,假如改成 '%',就示意客户端没有ip地点的限定)

假如主效劳器的数据库(test)中,已有数据,我们需要先手动把主效劳器中的数据复制到从效劳器。要领以下:

在本案例中,我们只备份一个数据库(test),test中有一个表basic_user,表中也已有了数据。为了防备我们复制数据的时刻,数据库test中的数据发作更新,我们需要先锁定数据库,敕令以下:

flush tables with read lock;

这个敕令是全局读锁定,它会给主效劳器中的一切数据库都加上读锁,这里趁便说一下读锁和写锁的区分:


  • read lock(读锁):也叫同享锁,许可一切的读操纵,但壅塞写操纵,即一切衔接只能够读数据,但不许可写数据。

  • write lock(写锁):也叫排它锁、独有锁,只许可当前衔接的读和写,不许可其他并发的读操纵和写操纵。


锁定主效劳器的数据库后,我们在从效劳器中,也建立一个数据库test,并将一切的表(包含表构造和表数据)都导入。

然后,我们实行下面的敕令,解锁:

unlock tables;

检察主效劳器的 master 状况:

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000008 | 498 | test | mysql | |

+------------------+----------+--------------+------------------+-------------------+

从效劳器设置:

修正从效劳器的数据库设置文件(E:\mysql\my.ini),在 [mysqld] 标签的最下面,增加以下代码:

#端口

port = 3307

#效劳器id

server_id = 2

#开启二进制日记(从效劳器不是必需要开启二进制日记)

log-bin=mysql-bin

保留退出,重启MySQL效劳。

衔接MySQL从效劳器:

mysql -uroot -p -P3307

设置复制的参数:

change master to master_host='127.0.0.1',master_user='user01',master_password='123456',master_port=3306,master_log_file='mysql-bin.000008',master_log_pos=498;

参数详解:

master_host: 主效劳器的IP
master_user: 主效劳器上新建立的用户名
master_password: 用户的暗码
master_port: 主效劳器的端口,假如不曾修正,默许即可。

master_log_file: 主效劳器二进制日记文件的称号,填写检察主效劳器的master状况时显现的File的值

master_log_pos: 日记的位置,填写检察主效劳器的master状况时显现的Position的值

启动从效劳器的slave复制功用:

start slave;

检察从效劳器的slave状况:

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 127.0.0.1

Master_User: user01

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000009

Read_Master_Log_Pos: 120

Relay_Log_File: hp-PC-relay-bin.000004

Relay_Log_Pos: 283

Relay_Master_Log_File: mysql-bin.000009

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

假如 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,则申明主从复制的一切设置已胜利,即从效劳器已能够自动与主效劳器的数据库数据完成同步了。

今后,只需主效劳器的数据有更新(比方:在 test数据库中新建了一张表或许表中的数据发作了变化),从效劳器都邑自动与主效劳器保持一致。但假如有人锐意改变了从效劳器的数据,主效劳器中的数据并不会同步更新,除非我们把这两个MySQL效劳器设置为互为主从。
以上是我整理到的有关在window环境下设置mysql的主从架构,感兴趣的小伙伴们能够去尝试看看。

相干文章:

windows下装置mysql-5.7.21

MySQL 基础知识小结

navicat for mysql下载装置以及简朴的运用

以上就是怎样在一台windows主机上完成MySQL的主从复制?的细致内容,更多请关注ki4网别的相干文章!

标签:windows实现机上


欢迎 发表评论: