前言

主从复制原理图

mysql主从 从库修改 mysql8.0 主从_数据库


原理描述:

  1. master 主库记录数据的更新信息(create,insert,update,delete,drop)到binlog中。
  2. slave 从库在一定时间间隔内如果发现master的binlog发生改变,则开启一个I/O线程请求master的binlog;
  3. 主库会生成一个log dump线程,根据从库的请求,会把binlog传给从库I/O线程;
  4. 从库的I/O线程把读取到的binlog写入到relay log(中继日志)中;
  5. 从库的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、查看主库master信息

#登录主机的mysql
 mysql -uroot -p

#查看master状态
 show master status;

记住这里的file和Position信息,后面从库的配置要使用

mysql主从 从库修改 mysql8.0 主从_数据库_02

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

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

可以查看你创建的用户

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

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

mysql主从 从库修改 mysql8.0 主从_mysql主从 从库修改_03

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

mysql主从 从库修改 mysql8.0 主从_数据库_04


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

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

FLUSH PRIVILEGES;

再试下 SHOW SLAVE STATUS\G

mysql主从 从库修改 mysql8.0 主从_配置信息_05


成功了!

8、测试

主库169创建一个user_info表,179会同步创建user_info表

mysql主从 从库修改 mysql8.0 主从_mysql主从 从库修改_06


mysql主从 从库修改 mysql8.0 主从_mysql主从 从库修改_07


往169的user_info表中插入一条数据, 179也同步了相同数据

mysql主从 从库修改 mysql8.0 主从_mysql_08

最后

本次的主从复制已搭建成功