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 有没有复制过去

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

debian10 开启rdp安装firefox,firefox 中文乱码

debian10 开启rdp安装firefox apt -y install tigervnc-standalone-server apt -y install xrdp tigervnc-standalone-server systemctl enable xrdpapt install firefox-esrmstsc连接 firefox-settings-general-fonts-advanced-Simplified Chinese

java Bigdecimal

一、BigDecimal概述 BigDecimal是Java在java.math包中提供的线程安全的API类,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下&am…

服务器探针-serverstatus

{alert type"info"} 之前给大家介绍过一个简单的服务器监控。uptime-kuma 今天给各位带来一个酷炫的多服务器探针和多服务器监控。ServerStatus {/alert} 作者的开源项目地址如下:https://github.com/cppla/ServerStatus 作者的项目体验地址如下 https://…

Ghidra逆向工具配置 MacOS 的启动台显示(Python)

写在前面 通过 ghidra 工具, 但是只能用命令行启动, 不太舒服, 写个脚本生成 MacOS 的 app 格式并导入启动台. 不算复杂, 主要是解析包的一些元信息还有裁剪软件图标(通过 MacOS 自带的 API) 脚本 #!/opt/homebrew/bin/python3import os import re import subprocess as sp…

离开大促的电商生意,应该怎么玩?

离开大促的电商生意,应该怎么玩? 2023-11-20 11:07DataStory 双11圆满收官,生意场上的角逐从未停止。 最近一周,各大平台纷纷晒出今年度战绩,天猫宣布全面增长,402个品牌成交破亿,3.8万个品牌…

Dockerfile自定义镜像以及案例分析

文章目录 一、Dockerfile自定义镜像1.1 镜像结构1.2 Dockerfile语法 二、构建Java项目三、基于java8构建java四、小结 一、Dockerfile自定义镜像 常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像,就必须先了…

天梯赛 L2-047 锦标赛

原题链接: PTA | 程序设计类实验辅助教学平台 题面: 有 2k 名选手将要参加一场锦标赛。锦标赛共有 k 轮,其中第 i 轮的比赛共有 2k−i 场,每场比赛恰有两名选手参加并从中产生一名胜者。每场比赛的安排如下: 对于第 1…

多对多的创建方式与Ajax

模型层补充 MTV与MVC模型 MTV 全称 Models Templates Views 模型模板视图 MVC 全称 Models Views Controller 模型视图控制MTV: Django号称是MTV模型 MVC: 其实django本质也是MVC 拓展: vue框架:MVVM模型choices参数(数据库字段设计常见) choices使用 class User(models.Mod…

ansible-playbook剧本实现wordpress上线

准备环境: 1.需要三台服务器:主机服务器((10.36.192.129)、db服务器(10.36.192.131),web服务器(10.36.192.130),剧本都是写在主机服务器上。 2.主机服务器需要做ansible解析 vim /etc/ansible/hosts[web…

CICD 持续集成与持续交付——jenkins

部署 软件下载:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/ [rootcicd2 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm[rootcicd2 ~]# yum install -y fontconfig[rootcicd2 ~]# rpm -ivh jenkins-2.432-1.1.noarch.rpm启动服务 [rootcicd2 ~]# systemctl…

【JVM】Java虚拟机

本文主要介绍了JVM的内存区域划分,类加载机制以及垃圾回收机制. 其实JVM的初心,就是让java程序员不需要去了解JVM的细节,它把很多工作内部封装好了.但是学习JVM的内部原理有利于我们深入理解学习Java. 1.JVM的内存区域划分 JVM其实是一个java进程 ; 每个java进程,就是一个jvm…

MVSNet论文笔记

MVSNet论文笔记 摘要1 引言2 相关基础2.1 多视图立体视觉重建(MVS Reconstruction)2.2 基于学习的立体视觉(Learned Stereo)2.3 基于学习的多视图的立体视觉(Learned MVS) 3 MVSNet3.1 网络架构3.2 提取图片…

ModStartCMS v7.6.0 CMS备份恢复优化,主题开发文档更新

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

SAP ABAP结构与内表的创建

一、定义一个结构体 DATA:BEGIN OF LS_MATNR,MATNR TYPE MATNR,MAKTX TYPE MAKTX, END OF LS_MATNR. 二、定义一个包含表头的内表 DATA:BEGIN OF LT_MAT OCCURS 0,MATNR TYPE MATNR,MAKTX TYPE MAKTX, END OF LT_MAT. 三、参考数据结构来定义内表 DATA:LT_MAT LIKE TABLE…

OpenAI Assistants-API简明教程

OpenAI在11月6号的开发者大会上,除了公布了gpt4-v、gpt-4-turbo等新模型外,还有一个assistants-api,基于assistants-api开发者可以构建自己的AI助手,目前assistants-api有三类的工具可以用。首先就是之前大火的代码解释器(Code In…

苍穹外卖--菜品分页查询

设计DTO类 Data public class DishPageQueryDTO implements Serializable {private int page;private int pageSize;private String name;private Integer categoryId; //分类idprivate Integer status; //状态 0表示禁用 1表示启用}设计VO类 Data Builder NoArgsConstructor…

奇富科技发布鸿蒙元服务1.0版本,打造鸿蒙生态金融科技全新体验

近日,奇富科技率先发布鸿蒙元服务1.0版本,成为首家融入鸿蒙生态的金融科技公司,为用户带来前所未有的数字生活体验。此次与华为终端云的全面合作,是两大行业领军者的深度融合,不仅实现技术的交融,更彰显两大…

蓝桥杯 map

map 代码示例 #include<iostream> #include<map> using namespace std; int main(){//创建并初始化mapmap<int,string> myMap{{1,"Apple"},{2,"Banana"},{3,"Orange"}} ;//插入元素myMap.insert(make_pair(4,"Grapes&qu…

如何利用1688批发市场价格做跨境代购业务?(API数据接口)

随着互联网的快速发展&#xff0c;电子商务在全球范围内迅速普及。作为全球最大的B2B电子商务平台之一&#xff0c;1688为广大商家提供了一个便捷、高效的在线交易平台。在这个平台上&#xff0c;商家可以展示、售卖自己的产品&#xff0c;而消费者则可以轻松地找到心仪的商品。…

TensorRT基础知识及应用【学习笔记(十)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、准备知识1.1 环境配置A. CUDA DriverB. CUDAC. cuDNND. TensorRT 1.2 编程模型 二、构建阶段2.1 创建网络定义2.2 配置参数2.3 生成Engine2.4 保存为模型文件2.5 释放资源 三、运…