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=699get_master_public_key=1;

  4、启动从库复制线程

start slave;

  5、查看复制线程状态

show slave status;

运行结果:

  表明监听主库变化的IO线程和准备执行修改同步的SQL线程都正常运行中。配置成功。

 

posted @ 2023-05-05 17:41  在博客做笔记的路人甲  阅读(271)  评论(0编辑  收藏  举报