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
    评论
MySQL 8.0中的主从复制是一种常用的数据库复制技术,用于将一个MySQL实例(主服务器)的数据复制到另一个MySQL实例(从服务器)。这种复制的配置分为以下几个步骤: 1. 配置主服务器: - 在主服务器的配置文件(通常是my.cnf或my.ini)中,启用二进制日志(binary logging)功能,设置参数`log_bin=ON`。 - 重启主服务器以使配置生效。 2. 创建一个用于复制的专用用户: - 在主服务器上创建一个用户并授予复制权限,以便从服务器可以连接并获取复制日志。例如,可以使用以下命令创建用户:`CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';`,然后使用`GRANT`语句授予权限。 3. 备份主服务器的数据: - 在主服务器上执行全量备份,可以使用`mysqldump`命令或其他备份工具进行备份。 4. 配置从服务器: - 在从服务器的配置文件中,启用从服务器功能,设置参数`server_id`为唯一的整数,并启用中继日志(relay log)功能。 - 重启从服务器以使配置生效。 5. 连接从服务器到主服务器: - 在从服务器上执行连接主服务器的操作:`CHANGE MASTER TO MASTER_HOST='master_server_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='binlog_file', MASTER_LOG_POS=log_position;`。 - 这里需要提供主服务器的IP地址、复制用户的用户名和密码,以及主服务器当前的二进制日志文件和位置。 6. 启动从服务器的复制进程: - 在从服务器上执行`START SLAVE;`命令来启动从服务器的复制进程。 7. 检查复制状态: - 可以使用命令`SHOW SLAVE STATUS\G;`检查从服务器的复制状态,确保没有错误和延迟。 一旦以上步骤完成,并且主服务器有新数据插入或更新时,从服务器将自动接收并应用这些更改。这样,主从复制就建立起来了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值