mysql主从搭建(docker)

一、主从概述

MySQL主从又叫Replication、AB复制。简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步。有这样几个关键点:

1)MySQL主从是基于binlog,主上需开启binlog才能进行主从;

2)主从过程大概有3个步骤;

3)主将更改操作记录到binlog里;

4)从将主的binlog事件(SQL语句) 同步本机上并记录在relaylog里;

5)从根据relaylog里面的SQL语句按顺序执行。

 二、主从作用

主从作用有实时灾备,用于故障切换;读写分离,提供查询服务;备份,避免影响业务。

主从形式

1)一主一从

2)主主复制

3)一主多从:扩展系统读取的性能,因为读是在从库读取的。

4)多主一从:5.7版本开始支持

5)联级复制

 三、主从复制原理

四、主从复制步骤

主库将所有的写操作记录在binlog日志中,并生成log dump线程,将binlog日志传给从库的I/O线程

从库生成两个线程,一个是I/O线程,另一个是SQL线程I/O线程去请求主库的binlog日志,并将binlog日志中的文件写入relay log(中继日志)中SQL线程会读取relay loy中的内容,并解析成具体的操作,来实现主从的操作一致,达到最终数据一致的目的。

 

五、主从复制配置步骤

1)确保从数据库与主数据库里的数据一致

2)在主数据库里创建一个同步账户授权给从数据库使用

3)配置主数据库(修改配置文件)

4)配置从数据库(修改配置文件)

5)需求

6)搭建两台MySQL服务器,一台作为主服务器,一台作为从服务器,主服务器进行写操作,从服务器进行读操作

六、环境说明使用Docker启动两个

名称

Ip

Port

M1

192.168.106.133

3307

M1S1

192.168.106.133

3308

 

 

docker run --name M1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1

docker run --name M1S1 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1

七、修改配置文件

将容器里面的配置文件复制出来,主要修改服务器的配置;在root目录下创建一个mysqlms的目录存放从Docker容器里面复制过来的配置文件。进入目录:cd /mysqlms 

docker cp M1:/etc/mysql/conf.d/docker.cnf m1.cnf

docker cp M1S1:/etc/mysql/conf.d/docker.cnf m1s1.cnf

1、主机的配置m1.cnf

主机里面要记录SQL 语句,以后从机会把该SQL 语句偷过去

server-id=1

log-bin=master.bin

2、从机的配置m1s1.cnf

server-id=2

3、配置文件修改后,复制到容器里面

docker cp m1.cnf M1:/etc/mysql/conf.d/docker.cnf

docker cp m1s1.cnf M1S1:/etc/mysql/conf.d/docker.cnf

重启MySQL(m1,m1s1)

docker restart M1 M1S1

4、进入主机里面执行相关配置

docker exec -it M1 bash

mysql -uroot -p123456

创建用户

create user 'rep'@'%' identified by '123456';

给该用户授予权限:

grant replication slave on *.* to 'rep'@'%';

刷新权限

flush privileges;

至此,M1 里面已经创建了一个用户:rep 123456 拥有所有库,所有表replication slave。  

接下来,我们尝试使用M1 里面的rep 用户登录:

​​​​​​​5、进入从机里面执行相关配置

docker exec -it M1S1 bash

mysql -u root -p123456

change master to master_host="192.168.175.110",master_port=3307,master_user="rep",master_password="123456",master_log_file="master.000001",master_log_pos=854;

其中,master_log_file:该文件具体叫什么名称,需要从主机里面去看看。进入M1 里面使用root 用户登录M1,执行下面的SQL:

启动主从:(在M1S1里面执行)start slave ;

查询主从的状态(M1S1)show slave status \G;

成功的标志:

​​​​​​​

八、搭建失败的原因

1.第一个不是yes是connecting

是因为从机使用你配置的主机信息没有登陆到主机里面!修改(从机里面)

stop slave;

Change master to master_host="192.168.175.110",master_port=3307,master_user="rep",master_password="123456",master_log_file="master.000001",master_log_pos=854;

start slave;

​​​​​​​2.第二个不是yes是no

原因是主机和从机里的数据不一致

从机会复制主机里面的SQL语句,来自己执行!实验时先把从机里面的db3 删除—>再把主机里面的db3 删除->从机里面复制该删除的命令->从机执行删除的命令(db3),事务无法提交,将一直阻塞!

现在从机里面要删除db3 ,但是没有db3,导致一直阻塞,以后的主从复制不会进行了。解决:在从机新建一个db3,然后停止主从,启动主从:

​​​​​​​3.第一个不是yes,是no

就是你的server-id 没有配置成功的原因,需要重新修改配置文件,复制配置文件到容器里面,然后重启就ok

​​​​​​​九、MySQL主从的操作规范

  1. 只能在主机里面执行DML 语句,不能在从机里面执行DML语句(会破坏主从)

  2. 在从机里面可以执行查询语句

  3. 主机只有一台,但是从机可以有多台

​​​​​​​十、测试

在M1 里面创建数据库,看M1S1 有没有复制过去

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/167820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

掌握Python中classmethod的妙用,提升代码灵活性与可维护性

概要 在Python编程中,classmethod是一种非常有用的装饰器,它可以将一个方法转换为类方法,使得该方法可以通过类名或实例名直接调用,而不需要传入self参数。通过合理使用classmethod,我们可以提高代码的灵活性、复用性…

京东API接口获取京东平台商品详情数据,SKU,价格参数及其返回值说明

做过淘客开发的一定接触过淘宝API开发。 而做京东联盟软件自然离不开京东联盟API。 京东联盟API目前上线的有很多。 参数说明 通用参数说明 url说明 https://api-gw.onebound.cn/平台/API类型/ 平台:淘宝,京东等, API类型:[item_search,ite…

OpenHarmony Meetup北京站招募令

OpenHarmony Meetup城市巡回北京站火热来袭!!日期:2023年11月25日14:00地点:中国科学院软件园区五号楼B402与OpenHarmony技术大咖近距离互动,分享技术见解,结交志同道合的朋友!活动主题聚焦Open…

重要功能丨支持1688API 接口对接一键跨境铺货及采购,解决跨境卖家货源烦恼!

在跨境电商运营中,不少卖家都会优先选择1688平台产品作为跨境店铺货源。 必不可少的1688商品详情接口 阿里巴巴中国站获得1688商品详情 API 返回值说明 item_get-获得1688商品详情 1688.item_get 公共参数 请求地址: 申请调用KEY测试 名称类型必须描述keyStrin…

Threejs_06 多材质的实现

Threejs 同一个几何体如何实现多材质呢? 多材质的实现 1.使用索引绘制一个几何体 //创建几何体(三角形) const geometry new THREE.BufferGeometry();//使用索引绘制 (两个共用的) const vertices new Float32Array([-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1…

js高效函数库Lodash.js

Lodash 是一个 JavaScript 的实用工具库,提供了许多实用且高效的函数,可以简化 JavaScript 编程中的常见任务。 Lodash具有高性能、模块化和易用性等特点,表现一致性以及可扩展,下面将介绍一些 Lodash 的重要特性和用法&#xff1…

CRM按行业细分的重要性

很多企业和销售会诟病CRM系统不够贴合行业、功能也不够细分和实用。因为各行各业的业务千差万别,所以功能完备、使用满意度高的CRM一定是与不同行业业务场景高度匹配的,是深度行业化的。因此行业化是CRM发展的重要趋势之一,为什么CRM一定要走…

庖丁解牛:NIO核心概念与机制详解 05 _ 文件锁定

文章目录 Pre概述锁定文件 (lock)Code文件锁定和可移植性 Pre 庖丁解牛:NIO核心概念与机制详解 01 庖丁解牛:NIO核心概念与机制详解 02 _ 缓冲区的细节实现 庖丁解牛:NIO核心概念与机制详解 03 _ 缓冲区分配、包装和…

2005B 2.4W AB类音频功率放大器应用领域

2005B 2.4W AB类音频功率放大器应用领域:1、便携式DVD;2、笔记本电脑;3、插卡音箱 / USB音箱;4、液晶电视 / 液晶显示器等等。 2005B是一颗单通道AB类音频功率放大器。在5V 电源供电,THDN10%,4欧姆负载上可…

尽快调整心态,切莫自讨苦吃

退休多年的老龄人的本“人民体验官”闲得无聊,怕被闲出更多病痛,更怕被闲死,所以天天上网坚持职业新闻人的老习惯——上网读新闻,并以一孔之见置评,旨在抛砖引玉。 11月8日,本“人民体验官 ”在推广人民日…

python 自动化福音,30行代码手撸ddt模块

用 python 做过自动化的小伙伴,大多数都应该使用过 ddt 这个模块,不可否认 ddt 这个模块确实挺好用,可以自动根据用例数据,来生成测试用例,能够很方便的将测试数据和测试用例执行的逻辑进行分离。 接下来就带大家一起…

2023年亚太杯数学建模亚太赛ABC题思路资料汇总贴

下文包含:2023年亚太杯数学建模亚太赛A- C题思路解析、选题建议、代码可视化及如何准备数学建模竞赛(23号发) C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资料,帮助大家取得好成绩。2…

深度学习人体跌倒检测 -yolo 机器视觉 opencv python 计算机竞赛

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满…

不必购买Mac,这款国产设计工具能轻松替代Sketch!

介绍 即时设计是新一代可以直接在浏览器中使用的设计工具,具有Sketch和实时协作功能。与本地Sketch相比,增加了实时协作功能,即时设计可以看作是在线Sketch,两个工具可以简单粗暴地总结为一个公式: 即时设计Sketch云…

快手运营的必备的10个工具

一、引言 快手作为短视频领域的佼佼者,为众多创作者提供了广阔的舞台。要想在快手运营中取得成功,掌握一些必备的工具是必不可少的。本文将为您介绍快手运营的10个必备工具,帮助您提高工作效率,优化内容创作。 二、工具推荐 1. …

CRM系统定制开发价格

我们都知道,CRM系统对企业有着很大的帮助。但是市面上大多数CRM系统都是标准化的,无法满足那些产品线复杂,或者有着特殊需求的企业。这个时候,就需要对CRM系统进行二次开发。那么,CRM系统二次开发的价格是多少&#xf…

充电桩负载测试需要检测哪些项目

充电桩负载测试在进行充电桩负载测试时,需要检测以下几个项目: 充电速度:测试充电桩的充电速度,包括直流充电桩的最大输出功率和交流充电桩的充电功率,以确定其是否符合标准要求。充电效率:测试充电桩的充电…

实时监控电脑屏幕的软件丨同时查看12台电脑屏幕

Hello 大家好 又见面啦 今天给大家推荐两款比较实用的监控电脑使用情况、屏幕的软件! 软件一 实时性能监控 从软件名就可以看出来,这是一款电脑性能监测工具。它可以实时监测内存、CPU、磁盘占用情况,也能一键结束进程,给电脑提…

Python UI自动化 —— 关键字+excel表格数据驱动

步骤: 1. 对selenium进行二次封装,创建关键字的库 2. 准备一个表格文件来写入所有测试用例步骤 3. 对表格内容进行读取,使用映射关系来对用例进行调用执行 4. 执行用例 1. 对selenium进行二次封装,创建关键字的库 from time imp…

采集淘宝天猫整店商品api(店铺列表、店铺所有商品)

返回数据:请求链接 {"items": {"shop_id": "336945718","page": "1","real_total_results": "75","total_results": "75","page_size": 10,"page_coun…