当前位置:网站首页>MySQL:MySQL的集群——主从复制的原理和配置
MySQL:MySQL的集群——主从复制的原理和配置
2022-08-10 22:04:00 【_索伦】
前言
在实际生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实际需求的,一般要通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。
1、数据备份 - 热备份&容灾&高可用
2、读写分离,支持更大的并发
原理介绍
主从复制的流程:两个日志(binlog二进制日志&relay log日志)和三个线程(master的一个线程和
slave的二个线程)
1、主库的更新操作写入binlog二进制日志中。
2、master服务器创建一个binlog转储线程,将二进制日志内容发送到从服务器。
3、slave机器执行START SLAVE命令会在从服务器创建一个IO线程,接收master的binary log复制到其中继日志。
首先slave开始一个工作线程(I/O线程),I/O线程在master上打开一个普通的连接,然后开始
binlog dump process,binlog dump process从master的二进制日志中读取事件,如果已经跟上
master,它会睡眠并等待master产生新的事件,I/O线程将这些事件写入中继日志。
4、sql slave thread(sql从线程)处理该过程的最后一步,sql线程从中继日志中读取事件,并重放其
中的事件而更新slave机器的数据,使其与master的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于os缓存中,所以中继日志的开销很小。
问题
为什么不用I/O线程直接从主库的bin-log里读数据写入从库中,而是写入中继日志?
因为主库的bin-log内容可能很多,而一个I/O线程读取的缓慢,导致从库更新数据可能会和主库的内容差距越来越大,数据落后。
配置
master(centos7):192.168.131.129
slave(win10):192.168.0.6
保证master和slave之间的网络互通,并且保证3306端口是开放的。
master配置:
1、开启二进制日志 , 目录:/etc/my.cnf
配置log_bin和全局唯一的server-id。
2、创建一个用于主从库通信用的账号
mysql> CREATE USER ‘mslave’@‘192.168.131.1’ IDENTIFIED BY ‘[email protected]’;
mysql> GRANT REPLICATION SLAVE ON . to ‘mslave’@‘192.168.131.1’ IDENTIFIED BY ‘[email protected]’;
mysql> FLUSH PRIVILEGES;
3、获取binlog的日志文件名和position
mysql> show master status;
slave配置:
1、配置全局唯一的server-id(涉及修改配置文件,需要重启mysql57服务)
2、使用master创建的账户读取binlog同步数据(stop slave;start slave)
根据自己情况调整参数
示例,个人的主库bin-log到哪了就配置哪个
3、START SLAVE
通过show slave status命令查看主从复制状态。show processlist查看master和salve相关线程的运行
状态。
常见错误
- IO_ERROR
解决方案:
- 先使用ping命令查看网络通不通?
- 主库所在机器的3306端口是否正常? telnet xxx.xxx.xxx.xxx 3306
- 防火墙对端口有限制?
- 查看主库的错误日志 /var/log/mysql/mysqld.log
2.Last_Error
解决:查看配置信息是否写错,然后重启slave线程
3.SQL_Error
错误原因:
从库还没有同步mytest这个库,但主库使用了 drop database mytest的SQL,那么这条SQL会写到bin-log日志,然后I/O线程读到这个SQL,写入中继日志,从库从中继日志读到了这个SQL,执行后产生的错误。
解决:
可以先停止slave线程,跳过一个错误,然后重启slave
stop slave;
set global sql_slave_skip_counter = 1;
start slave;
边栏推荐
- Common interview questions for APP UI automation testing, maybe useful~
- 美味石井饭菜
- 阿里巴巴、蚂蚁集团推出分布式数据库 OceanBase 4.0,单机部署性能超 MySQL
- Extended Chinese Remainder Theorem
- LeetCode每日两题01:反转字符串 (均1200道)方法:双指针
- 深度学习之 12 循环神经网络RNN2
- 企业云存储日常运行维护实践经验分享
- Live Classroom System 09--Tencent Cloud VOD Management Module (1)
- 元宇宙社交应用,靠什么吸引用户「为爱发电」?
- String类的常用方法
猜你喜欢
随机推荐
服务——DHCP原理与配置
Service - DHCP principle and configuration
【640. 求解方程】
virtual address space
财务年报怎样翻译,为什么要选择专业翻译公司?
元宇宙社交应用,靠什么吸引用户「为爱发电」?
边缘与云计算:哪种解决方案更适合您的连接设备?
Shell programming specification and variables
高通平台开发系列讲解(应用篇)QCMAP应用框架介绍
Service - DNS forward and reverse domain name resolution service
make & cmake
APP UI自动化测试常见面试题,或许有用呢~
Shell编程规范与变量
阿里云新增三大高性能计算解决方案,助力生命科学行业快速发展
深度学习之 12 循环神经网络RNN2
HighTec快捷键(Keys)设置位置
Likou 221 questions, the largest square
黑猫带你学Makefile第12篇:常见Makefile问题汇总
文件IO-缓冲区
file IO-buffer