MySQL8.0主从复制

主从复制原理图在这里插入图片描述

原理描述:

master 主库记录数据的更新信息(create,insert,update,delete,drop)到binlog中。
slave 从库在一定时间间隔内如果发现master的binlog发生改变,则开启一个I/O线程请求master的binlog;
主库会生成一个log dump线程,根据从库的请求,会把binlog传给从库I/O线程;
从库的I/O线程把读取到的binlog写入到relay log(中继日志)中;
从库的SQL线程会读取relay log文件中的日志,并解析成sql语句逐一执行;

1、环境信息准备

主机角色
192.168.0.169主机
192.168.0.179从机



2、修改主机my.cnf的配置信息

vi /etc/my.cnf   //编辑my.cnf文件

加入以下配置信息(修改完成后 重启数据库-主库) 

#修改service-id 一般是ip最后一段
server-id = 169
#开启二进制日志
log-bin = mysql-bin
#选择row模式 (STATEMENT, ROW, MIXED)
binlog-format=ROW
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-do-db=test
#不同步mysql系统数据库
binlog-ignore-db=mysql

3、修改从机my.cnf的配置信息

vi /etc/my.cnf   //编辑my.cnf文件

 加入以下配置信息(修改完成后 重启数据库-从库),你可以只修改service-id,不用开启binlog

#修改service-id 一般是ip最后一段
server-id = 179
#开启二进制日志
log-bin = mysql-bin
#选择row模式 (STATEMENT, ROW, MIXED)
binlog-format=ROW
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-do-db=test
#不同步mysql系统数据库
binlog-ignore-db=mysql
# log_slave_updates开启标识,从库同步的数据会写入binlog
# log_slave_updates = 1

4、重启从库!

stop slave

start slave

记住这里的file和Position信息,后面从库的配置要使用在这里插入图片描述

5、主库中创建用户信息并授权,用来作为从库连接主库做数据复制

# s1是用户名, %代表从任意远程主机登陆,如果你想只有从机能登陆就写成从库主机ip
CREATE USER 's1'@'%' IDENTIFIED BY '你的密码';
#授权
GRANT REPLICATION SLAVE ON *.* TO 's1'@'%';

 可以查看你创建的用户

#使用系统库
use mysql;
#查看系统用户信息
select user, host from user;

#删除用户信息的脚本语句
 drop user '用户名'@'授权访问的网络';

在这里插入图片描述

6、从库配置

#登录mysql
mysql -uroot -p
#执行命令(MASTER_HOST主机地址,MASTER_USER:上面创建的用户,MASTER_LOG_FILE和MASTER_LOG_POS 就是上面show master记录的信息)
CHANGE MASTER TO
MASTER_HOST='192.168.0.169',
MASTER_USER='s1',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=156;

 7、 查看从库状态

 SHOW SLAVE STATUS\G

在这里插入图片描述

 什么鬼没有连接上,报 Authentication requires secure connection. 回到主库,执行下面命令

ALTER USER 's1'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

FLUSH PRIVILEGES;

在这里插入图片描述

成功了!



8、测试

主库169创建一个user_info表,179会同步创建user_info表
在这里插入图片描述
在这里插入图片描述
往169的user_info表中插入一条数据, 179也同步了相同数据
在这里插入图片描述



10、表级别复制

从库需配置

read-only =1
replicate-ignore-db = mysql
replicate-do-db = test
replicate-ignore-db = information_schema
replicate-wild-do-table = test.t1

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值