MySQL8主从配置
最近在看MySQL的主从配置,罗列一下过程。
一、环境介绍
我使用的是两个MySQL8.0.13Windows版,Master和Slave安装的在一个机器上,Master库的端口为3306,Slave库的端口为3308。
二、简单原理
如下图,Master库会将数据更新写入二进制日志(log-bin)中。Slave库会有一个I/O线程读取二进制日志并写入自己的relay日志中。同时Slave库会有一个读取、处理SQL的线程,将relay日志中的SQL更新到Slave库中。
三、配置过程
1.首先需要安装两个MySQL数据库,个人在使用过程中,碰到一个坑。一天电脑上使用命令行连接的时候,一定要指定端口,如:mysql -u root -p -P3308。2
2.在所选择的Master数据库中配置(my.ini/my.cnf):
server_id = 1
#打开二进制日志
log-bin = master-bin
log-bin-index = master-bin.index
3.在master库中创建供slave库连接的用户,并授权。
//127.0.0.1是Slave设备的地址,123456是用户密码。
//如果主从数据库不在一个服务器上,假如配置成192.168.0.%,这里%表示通配符,代表192.168.0.0-192.168.0.255的Slave库都可以repl用户登录Master服务器。
create user 'repl'@'127.0.0.1' identified by '123456' ;
//配置slave库的地址,slave库以用户repl访问时赋予的权限REPLICATION SLAVE
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1';
4.在slave数据库中配置(my.cnf/my.ini):
server_id = 2
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
5.在slave库中配置连接的master库的地址、端口、口令、master日志文件等。
change master to master_host='127.0.0.1',master_port=3306,master_user='repl',master_password='123456',master_log_file='master-bin.000001',master_log_pos=0;