1.找到本地集成环境中的mysql文件夹,复制一份到其他文件夹,作为从库,本地环境 mysql 8.0.12
2.修改配置文件 my.ini
我这里master和slave端口分别为 3308和3309
[mysql]
default-character-set=utf8
[mysqld]
port=3308
default_authentication_plugin=mysql_native_password
basedir=D:\mysql\master\MySQL8.0.12
datadir=D:\mysql\master\MySQL8.0.12/data/
character-set-server=utf8
default-storage-engine=InnoDB
#新增 (注意:server-id,不能重复)
server-id=1
#开启了二进制文件
log-bin=mysql-bin
#主从复制的数据库 (注意:两个参与主从复制的数据库名子相同)
binlog_do_db=text
#不参与主从复制的数据库,例如mysql
binlog_ignore_db=mysql
3.启动两个mysql
在mysql的bin目录中,在地址栏输入cmd,启动控制台,输入mysqld,启动mysql服务
在Navicat mysql工具中,分别连接两个数据库,注意端口
4.配置master服务
在master数据库中,查看master状态
show master STATUS
5.配置slave服务
修改slave的配置,file和pos的数值参考master的状态
CHANGE MASTER TO master_host = '127.0.0.1',
master_port = 3308,
master_user = 'root',
master_password = 'root',
master_log_file = 'mysql-bin.000010',
master_log_pos = 155;
开始slave服务
start SLAVE
查看slave状态
show slave status
如果Slave_IO_Running和Slave_SQL_Running的状态都是yes,则说明配置成功。
6.验证
1、在master中查询 show slave hosts,可以看到slave的信息
show slave hosts
2、在master中创建表students,查看slave中是否成功。
CREATE TABLE students (
id INT (11),
NAME VARCHAR (25),
sex TINYINT (1),
age TINYINT (2)
);
***出现错误和解决办法
1、Slave_IO_Running 显示为no,查询mysql的日志文件,寻找错误原因。
原因:master and slave have equal MySQL server UUIDs,因为我两个mysql是复制出来的,所以需要更改一下mysql的uuids。
select UUID();
在mysql运行,select UUID() ,获得新的uuid:536959b4-852c-11ea-bc5b-408d5c6e8e40
在mysql的data文件中,找到auto.cnf,把里面的uuid更换成新的,并重启mysql。