MySQL:如何实现主从复制?
简介
MySQL主从复制是一个异步的复制过程,底层是基于MySQL数据库自带的二进制日志功能。
指一台或多台MySQL数据库(从库,slave)从另一台数据库(主库,master)进行日志的复制、日志解析,最终实现从库数据与主库数据保持一致。
原理
1、master将 改变 记录到二进制日志中。
2、slave将master的二进制日志拷贝到自己的中继日志中。
3、slave解析执行中继日志中的事件,实现改变统一。
步骤
一、配置主库(centos系统,mysql 8)
1、在主库的配置文件 my.cnf 中添加配置。
#服务器节点id,一般为服务器ip方便区分 server-id=106 ##开启日志文件 log-bin=mysql-bin
2、重启MySQL服务。
systemctl restart mysqld
3、查看配置是否成功,查看服务器id。
show variables like '%server_id%';
4、创建一个用户,并授予他从主库复制权限。
#创建用户 CREATE USER 'username'@'%' IDENTIFIED BY 'password'; #授予权限 GRANT REPLICATION SLAVE ON *.* TO 'username'@'%';
5、获取到此时主库的状态信息,记下File、Position字段的值,并保持主库状态静止。
show master status;
运行结果:
二、配置从库(Windows系统,mysql 8)
1、在从库的配置文件 my.ini 中添加配置。
//服务器唯一id service-id=101
2、重启服务
3、执行连接代码,参数为主库ip地址、之前创建的用户密码、之前记下的File、Position字段的值,mysql8使用了SSL/TLS加密,所以必须指定get_master_public_key,否则连接失败。
change master to master_host='主库ip地址',master_user='username',master_password='password',master_log_file='mysql-bin.000001',master_log_pos=699,get_master_public_key=1;
4、启动从库复制线程
start slave;
5、查看复制线程状态
show slave status;
运行结果:
表明监听主库变化的IO线程和准备执行修改同步的SQL线程都正常运行中。配置成功。