MySQL主从复制

MySQL集群

在实际生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实际需求的,一般要通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。

1、数据备份 - 热备份&容灾&高可用

2、读写分离,支持更大的并发

主从复制原理介绍

在这里插入图片描述

主从复制的流程:两个日志(binlog二进制日志&relay log日志)和三个线程(master的一个线程和slave的二个线程)

1、主库的更新操作写入binlog二进制日志中。

2、master服务器创建一个binlog转储线程(线程1),将二进制日志内容发送到从服务器。

3、slave机器执行 START SLAVE 命令会在从服务器创建一个IO线程(线程2),接收masterbinary log复制到其中继日志(Relay log)。

首先slave开始一个工作线程(I/O线程),I/O线程在master上建立一个普通的连接,然后开始 binlog dump process,binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件,I/O线程将这些事件写入中继日志。

4、sql slave thread(sql从线程,线程3)处理该过程的最后一步,sql线程从中继日志中读取事件,并重放其中的事件而更新slave机器的数据,使其与master的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于os缓存中,所以中继日志的开销很小。

MySQL主从复制实践

网络配置

master(ubuntu): 192.168.200.152

slave(win10):192.168.200.1

在这里插入图片描述

注意win上是用这个VM提供的虚拟网卡地址

master配置

1、开启二进制日志:

往配置文件中设置相关属性:进入/etc/mysql/mysql.conf.d/mysqld.cnf

将配置修改为如下

在这里插入图片描述

2、创建一个用于主从库通信用的账号

CREATE USER 'mslave'@'192.168.200.1' IDENTIFIED BY '1qaz@WSX';
GRANT REPLICATION SLAVE ON *.* to 'mslave'@'192.168.200.1' IDENTIFIED BY '1qaz@WSX';
FLUSH PRIVILEGES;

3、获取binlog的日志文件名和position

mysql> show master status;

mysql-bin.000004   1489

从库设置

1、配置全局唯一的server-id

win下配置修改:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 进行修改:server-id=2

然后任务管理器重启MySQL服务

2、使用master创建的账户读取binlog同步数据

CHANGE MASTER TO MASTER_HOST='192.168.200.152',
MASTER_PORT=3306,
MASTER_USER='mslave',
MASTER_PASSWORD='1qaz@WSX',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=1489;

3、START SLAVE

通过show slave status命令查看主从复制状态。

show processlist查看master和salve相关线程的运行状态。

在这里插入图片描述

在这里插入图片描述

可能的问题

在这里插入图片描述

注意要保证网络互通,端口开放,用户的IP地址正确,server-uuid不同,binlogposition正确

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值