Windows上MySQL主从复制的配置

43 阅读2分钟

1. 去官网下载MySQL并解压(这个就不演示了)

image.png 5.7以上的版本是没有data和my.ini文件的,需要先创建my.ini。

2. 主库创建my.ini文件

[client]
# 端口号,默认是3306,同一个环境下不同的mysql实例端口号不能相同
port=3307
default-character-set=utf8

[mysqld] 
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index

# 设置为自己MYSQL的安装目录
basedir=D:/MySQL/master
# 设置为MYSQL的数据目录,data文件夹由mysql自动生成
datadir=D:/MySQL/master/data
port=3307
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER

# 开启查询缓存
explicit_defaults_for_timestamp=true

3. 主库MySQL初始化、安装与密码修改(管理员身份运行CMD)

初始化

mysqld --initialize --user=mysql --console

初始化成功后会出现密码,记录下来

image.png

开始安装MySQL

mysqld install MySQL-master --defaults-file="D:\MySQL\master\my.ini"

MySQL-master是安装的服务名(可以自行设置,主从库的服务名记得不要起一样的)

defaults-file后面的是my.ini文件的目录(根据自己的目录进行设置)

安装成功后会一下字样 image.png

服务中是可以看到安装完的服务的

image.png

启动MySQL

名字是之前安装时的服务名

image.png

登录MySQL

mysql -u root -P3307 -p

输入之前记录下来的密码 image.png

修改初始密码

set password=password('新密码');

image.png

之后就可以使用Navicat进行操作了。

4. 从库MySQL初始化、安装与密码修改(管理员身份运行CMD)

只有my.ini的文件是不一样的,其他的操作一模一样。参考步骤3

[client]
port=3308
default-character-set=utf8

[mysqld] 
#从库配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

# 设置为自己MYSQL的安装目录 
basedir=D:/MySQL/slave
# 设置为MYSQL的数据目录 
datadir=D:/MySQL/slave/data
port=3308
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#开启查询缓存
explicit_defaults_for_timestamp=true

5. 使用Navicat进行操作

连接MySQL

image.png

获取主库MySQL二进制文件信息

image.png

登录从库进行主从库关联

change master to 
#ip
master_host='127.0.0.1',
#端口
master_port=3307,
#主库用户
master_user='root',
#主库密码
master_password='root',
#上一步操作主库获取到的File名称
master_log_file='master-bin.000002',
#上一步操作主库获取到的Position名称
master_log_pos=1621;

执行成功后开启后,从库执行start slave;命令

start slave;

然后从库执行show slave status;命令查看信息

show slave status;

以下两个配置都开启后即可实现主从复制 image.png

6. 主从复制原理

MySQL中有一个binlog文件。

binlog文件记录了数据库所有执行的DDL和DML语句(除了数据查询语句select、show等)。

  • 主库会向从库推送自己的binlog

  • 从库接收主库发送过来的binlog,并记录到relaylog中

  • 从库读取relaylog中的信息并执行,完成同步

  • 从库记录自己的binglog