MySQL 配置主从复制实践分享
本篇文章给大家分享《MySQL 配置主从复制实践分享》,覆盖了数据库的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。
一、检测通信
查看主库(master)和从库(slave)的ip地址,并检测是否可以通信

保证master和slave之间网络是互通的,用ping命令检测

到这里我们知道,master的ip为192.168.131.129,slave的ip为192.168.0.6,并且可以相互通信。保证3306端口开放


查看防火墙状态systemctl status firewalld.service
临时手动启动防火墙systemctl start firewalld.service
临时手动停止防火墙systemctl stop firewalld.service
持久打开防火墙(重启服务生效)systemctl enable firewalld.service
持久关闭防火墙(重启服务生效)systemctl disable firewalld.service
查看当前开放的端口列表firewall-cmd --list-ports
二、master配置
1. 开启二进制日志
配置log_bin和全局唯一的server-id,和slave区分开,不能配置成一样的(如果是my.cnf新添加配置,一定要重启MySQL服务)
vim /etc/my.cnf打开my.cnf文件

2. 创建一个用于主从库通信用的账号
即在master中创建一个账号,用于slave登录master读取binlog
虽然我们在Linux上查看的ip地址是192.168.131.129,但我们创建账户登录时不写这个ip,写的是192.168.131.1。因为我这里虚拟机用的是NAT模式(如果是桥接模式就可以直接用了),虚拟机(master)和物理机(slave)通信的时候,虚拟机先把数据发送到网关192.168.131.1(默认与VMnet8通信),192.168.131.1再转发到物理机,所以物理机接收到的是192.168.131.1的数据,故我们在master上为slave创建账户的时候,应该写192.168.131.1

如果给slave配置的不是网关192.168.131.1地址,vim + /var/log/mysqld.log打开错误日志会有如下信息:

这说的就是从192.168.131.1的mslave权限不够,那是因为我们在master配置的是允许从其他地方登录,并不允许从192.168.131.1地址登录,导致权限不够。
由于master这边收到的是来自192.168.131.1的请求,所以错误日志显示的是192.168.131.1
创建用户的命令:
//如果嫌麻烦可以用%代替192.168.131.1,,它就可以匹配任何ip mysql> CREATE USER 'mslave'@'192.168.131.1' IDENTIFIED BY '1qaz@WSX'; //启动主从,在主库上给当前的mslave用户开启REPLICATION SLAVE主从复制的权限,从库就可以通过1qaz@WSX账户密码 //从192.168.131.1 IP地址来请求访问这台主库上的任意库里面的任意表*.*,同步这个主库的任意库里的任意表 mysql> GRANT REPLICATION SLAVE ON *.* to 'mslave'@'192.168.131.1' IDENTIFIED BY '1qaz@WSX'; mysql> FLUSH PRIVILEGES;
3. 获取binlog的日志文件名和position
show master status

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

配置全局唯一的server-id

涉及修改配置文件,需要重启MySQL服务

2. 使用master创建的账户读取binlog同步数据
这一步配置主要是给IO线程读取binlog使用:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.131.129', MASTER_PORT=3306, MASTER_USER='mslave', MASTER_PASSWORD='1qaz@WSX', MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=1262;
- MASTER_HOST:指定master的ip
- MASTER_LOG_FILE:binlog文件名
- MASTER_LOG_POS:binlog的position
3. 开启slave服务
通过show slave status命令查看主从复制状态,show processlist查看master和salve相关线程的运行状态

四、配置中可能出现的问题
1. 网络连接问题
通过show slave status命令查看主从复制状态

连接connection错粗,先考虑网络是否互通,ping一下:
然后再检查从库里面的配置信息是否正确

如果都正确,检查主库所在机器的3306端口是否正常
telnet xxx.xxx.xxx.xxx 3306
如果发现3306端口不能连通,就需要怀疑主库对端口有限制吗,也就是防火墙限制,就需要在防火墙把3306端口开放出来。
如果这个错误还没解决,就查看一个主库的错误日志/var/log/mysql/mysqld.log,查看错误日志中提示的ip是否和自己允许slave登录的ip一致

这说的就是从192.168.131.1的mslave权限不够,自己玩的时候,如果虚拟机是NAT模式,则需要写成VMnet8网关ip。如果都是物理机通信,那直接写正确的ip即可
可以在MySQL数据库下的mysql库的user表中更改允许登录的ip

然后重新赋予权限:
mysql> GRANT REPLICATION SLAVE ON *.* to 'mslave'@'xxx.xxx.xxx.xxx' IDENTIFIED BY '1qaz@WSX';
2. binlog的position问题

在master中查看show master status一下binlog日志文件名以及position,然后用命令重新配置slave,比如:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.131.129',MASTER_PORT=3306,MASTER_USER='mslave',MASTER_PASSWORD='1qaz@WSX', MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=1262;
配置slave前需要stop slave,配置完成再start slave
3. SQL线程出错

错误原因:首先配置主从复制的时候,slave的mytest库中没有user表,而master的mytest库已经有user表了。配置好主从复制后直接drop table mytest.user,这就会写到binlog里面,然后在通过dump线程和IO线程将这个操作发送到从库的relay log,然后从库的SQL线程从relay log里把drop table mytest.user捞出来在从库执行这个SQL,可从库的mytest根本就没有user表,这就是删除一个不存在的表,于是出现错误了。
一般我们是不会做这样的操作的,我们一般都是主库配置以后,slave从数据开始增量进行同步,不会同步以后一开始就删主库里的东西,如果真的出现这样的问题了,随时可以通过show slave status来查看主从库的状态来解决错误,如果是上图这个错误,
(1)可以在从库stop slave,然后把位置重新设置一下,然后再start slave,相当于重新开始主从同步的位置。
(2)可以在从库stop slave,然后set global sql_slave_skip_counter=1;(跳过一个错误),然后再start slave重启从库的线程,相当于把错误跳过了,异常操作。
可以通过show slave status查看以下标识,IO线程出错一般是网络问题,SQL线程出错一般是SQL在slave库执行出现了问题

终于介绍完啦!小伙伴们,这篇关于《MySQL 配置主从复制实践分享》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!
MySQL的主从复制原理详细分析
- 上一篇
- MySQL的主从复制原理详细分析
- 下一篇
- MySQL中创建时间和更新时间的自动更新的实现示例
-
- 坚定的棒棒糖
- 感谢大佬分享,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢大佬分享文章内容!
- 2023-03-04 17:17:45
-
- 多情的学姐
- 这篇文章太及时了,细节满满,很棒,码住,关注作者了!希望作者能多写数据库相关的文章。
- 2023-02-25 15:43:59
-
- 整齐的小鸽子
- 太细致了,码起来,感谢大佬的这篇技术文章,我会继续支持!
- 2023-02-16 09:36:46
-
- 凶狠的海燕
- 很有用,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢博主分享技术贴!
- 2023-02-03 23:52:29
-
- 如意的蜜粉
- 写的不错,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢up主分享文章内容!
- 2023-01-30 07:24:22
-
- 专注的外套
- 这篇技术文章出现的刚刚好,老哥加油!
- 2023-01-24 06:43:36
-
- 虚心的钢笔
- 这篇技术贴出现的刚刚好,太全面了,感谢大佬分享,码起来,关注大佬了!希望大佬能多写数据库相关的文章。
- 2023-01-19 01:05:36
-
- 贤惠的帽子
- 这篇技术贴太及时了,好细啊,太给力了,码起来,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-01-18 06:11:39
-
- 害怕的店员
- 这篇博文太及时了,很详细,写的不错,mark,关注up主了!希望up主能多写数据库相关的文章。
- 2023-01-06 12:52:55
-
- 笑点低的狗
- 受益颇多,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢作者分享文章!
- 2023-01-03 13:14:17
-
- 激情的玫瑰
- 这篇文章内容真是及时雨啊,太细致了,很好,码住,关注楼主了!希望楼主能多写数据库相关的文章。
- 2023-01-03 08:54:56
-
- 过时的香菇
- 很有用,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢博主分享博文!
- 2023-01-03 03:27:20
-
- 复杂的抽屉
- 很详细,收藏了,感谢up主的这篇技术贴,我会继续支持!
- 2023-01-01 13:01:14
-
- 闪闪的狗
- 好细啊,已加入收藏夹了,感谢up主的这篇技术文章,我会继续支持!
- 2022-12-30 22:30:24
-
- 无奈的御姐
- 这篇文章内容出现的刚刚好,博主加油!
- 2022-12-29 13:51:47
-
- 数据库 · MySQL | 11小时前 |
- MySQL EXPLAIN ANALYZE定位排序临时表的排查方法
- 434浏览 收藏
-
- 数据库 · MySQL | 12小时前 | MySQL · JSON ·
- MySQL JSON多值索引处理数组成员检索的设计要点
- 404浏览 收藏
-
- 数据库 · MySQL | 14小时前 | MySQL · 数据库 · mysql SQL JSON JSON_TABLE
- MySQL JSON_TABLE为缺失字段提供默认值的映射方法
- 445浏览 收藏
-
- 数据库 · MySQL | 15小时前 |
- MySQL CTE拆分多阶段聚合查询的维护方法
- 418浏览 收藏
-
- 数据库 · MySQL | 16小时前 | MySQL · 数据库 · mysql 窗口函数 ROW_NUMBER RANK DENSE_RANK
- MySQL窗口函数按分组取排名前N条的查询设计
- 465浏览 收藏
-
- 数据库 · MySQL | 20小时前 | MySQL · InnoDB · MySQL锁等待 performance_schema.data_lock_waits data_locks锁对象 InnoDB事务阻塞 锁等待链定位
- MySQL 锁等待定位事务锁等待链的实现方法
- 497浏览 收藏
-
- 数据库 · MySQL | 21小时前 | MySQL · 连接池 · database/sql ·
- MySQL 连接池配置连接池避免拿到失效连接的实现方法
- 392浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 143次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 208次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 152次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 133次使用
-
- CMMLU
- 深入了解CMMLU中文评估基准,涵盖67个学科主题,提供数据集下载、Zero-shot/Five-shot评估方法及排行榜,助力优化中文语言模型性能。
- 122次使用
-
- golang 实现两个结构体复制字段
- 2023-01-14 271浏览
-
- golang中切片copy复制和等号复制的区别介绍
- 2023-01-07 207浏览
-
- go语言中切片与内存复制 memcpy 的实现操作
- 2023-01-07 340浏览
-
- Golang 实现复制文件夹同时复制文件
- 2023-01-23 499浏览
-
- mysql 中的备份恢复,分区分表,主从复制,读写分离
- 2023-02-23 402浏览

