mysql主从复制

2023-09-20 16:43:14

为什么要搭建主从架构

  1. 主库出现问题,可以快速切换到从库提供服务。
  2. 读写分离,降低主库的访问压力。
  3. 可以在从库中执行备份,以避免备份期间影响主库的服务。

主从复制原理

在这里插入图片描述

  1. Master将数据变化记录到binlog。
  2. Slaver通过一个IO线程来拉取Master上的binlog,写到relaylog中。
  3. Slaver的Sql线程将relaylog中的数据重放到从库中。

搭建主从架构

主节点

创建文件夹和配置文件

mkdir /uni/docker/mysql/master/data
mkdir /uni/docker/mysql/master/conf

#配置master节点
vi /uni/docker/mysql/master/conf/my.cnf

[mysqld]
#同一局域网内的server-id必须唯一
server-id=1
#开启二进制日志功能,并设置日志文件名,文件名可以随便取名(关键)
log-bin=mysql-bin


##启动master节点
docker run -idt --privileged=true --name=mysql-master -p 3301:3306 -v /uni/docker/mysql/master/data:/var/lib/mysql -v /uni/docker/mysql/master/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

mysql执行下面的指令

mysql> create user 'master'@'%' identified  WITH 'mysql_native_password'  by '123456'; ---创建一个用户用于从节点连接进行拉取备份
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave,replication client on *.* to 'master'@'%';  ---授予用户备份权限
Query OK, 0 rows affected (0.00 sec)

mysql>  show master status;  --查询主节点的状态,重点关注Position 
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |      157 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)

从节点

mkdir -p /uni/docker/mysql/slave_01/data
mkdir -p /uni/docker/mysql/slave_01/conf
touch /uni/docker/mysql/slave_01/conf/my.cnf

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
#同一个局域网内server-id必须具有唯一性
server-id=2
#开启binlog功能,以备作为其他slave的master
log-bin=mysql-slave-bin
#指定中继日志
relay-log=slave_01-relay-bin

##启动slave-01节点
docker run -idt --privileged=true --name=mysql-slave-01 -p 3302:3306 -v /uni/docker/mysql/slave_01/data:/var/lib/mysql -v /uni/docker/mysql/slave_01/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

从节点mysql执行:

-- 关闭同步
stop slave;
-- 设置同步信息
change master to master_host='172.17.0.4' ,master_port=3306,master_user='master',master_password='123456',master_log_file='binlog.000003',master_log_pos=157,master_connect_retry=30;
-- 开启同步
start slave;

docker inspect --format=‘{{.NetworkSettings.IPAddress}}’ mysql-master 查询容器mysql-master的内网ip

检查slave状态:

show slave status;

关注这两个属性如图即为开启了
在这里插入图片描述

遗留问题

在my.cnf中配置的binlog_ignore_db和binlog_do_db都没生效,不知道为什么。

更多推荐

uniapp实现大气质量指标图(app端小程序端均支持,app-nvue不支持画布)

效果图如下:思路:1.首先我想到的就是使用图标库echarts或ucharts,可是找了找没有找到类似的。2.其次我就想用画布来实现这个效果,直接上手。(app-vue和小程序均可以实现,但是在app-nvue页面不支持画布,尝试了一下再nvue页面直接导致程序闪退)3.后来,使用手动创建一个竖向的类似效果。注意:1.

【力扣每日一题】2023.9.21 收集树中金币

目录题目:示例:分析:代码:题目:示例:分析:题目给我们一棵树,不过这棵树不是普通的树,而是无向无根树。给我们一个二维数组表示节点之间的连接关系,以及一个一维数组表示每个节点是否有金币。我们可以从任何一个节点出发,并且可以收集距离两格的节点的金币,每次可以移动到相邻的节点。问我们要收集完所有的金币并且最终要回到起点,最

Python爬虫:aiohttp的介绍和基本使用

aiohttp是一个用于编写异步网络应用程序的Python库,它建立在Python3.5+的asyncio框架之上。它允许你创建高性能的异步HTTP客户端和服务器,以处理并发请求和响应。下面是关于aiohttp的介绍和基本使用方法:安装aiohttp你可以使用pip来安装aiohttp:pipinstallaiohtt

python魔术方法_对象_继承_复写_变量注解_函数注解_多态(04)

文章目录python魔术方法_对象_继承_复写_变量注解_函数注解_多态(04)1对象的魔术方法1.1魔术方法实例:2对象的封装2.1私有变量:开头__(2个下划线)定义2.2案例私有变量访问:3继承3.1类继承语法:3.2类继承案例3.3多继承3.3.1多继承语法3.3.2多继承属性(pass使用)4复写4.1对父类

如何使用ArcGIS Pro提取河网水系

DEM数据除了可以看三维地图和生成等高线之外,还可以用于水文分析,这里给大家介绍一下如何使用ArcGISPro通过水文分析提取河网水系,希望能对你有所帮助。数据来源本教程所使用的数据是从水经微图中下载的DEM数据,除了DEM数据,常见的GIS数据都可以从水经微图中下载,你可以通过关注公号“水经注GIS”,然后在后台回复

1.8python基础语法——数据类型转换

1)转换数据类型的作用用户输入的数据是字符串类型,可以用类型转换将字符串类型转换为相应的数据类型。2)转换数据类型的函数函数说明int(x[,base])将x转换为一个整数float(x)将x转换为一个浮点数complex(real[,imag])创建一个复数,real为实部,imag为虚部str(x)将对象x转换为字

软件设计原则扩展

一、引言经典的软件设计7大原则开闭原则(OpenClosePrinciple,OCP)依赖倒置原则(DependenceInversionPrinciple,DIP)单一职责原则(SimpleResponsibilityPrinciple,SRP)接口隔离原则(InterfaceSegregationPrinciple

从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)

不可变集合、方法引用1.不可变集合1.1什么是不可变集合1.2使用场景1.3不可变集合分类1.4不可变的list集合1.5不可变的Set集合1.6不可变的Map集合1.6.1:键值对个数小于等于101.6.2:键值对个数大于102.方法引用2.1体验方法引用2.2方法引用符2.3引用类方法2.4引用对象的实例方法2.5

【数据结构】TOP-K问题/使用堆解决

💐🌸🌷🍀🌹🌻🌺🍁🍃🍂🌿🍄🍝🍛🍤📃个人主页:阿然成长日记👈点击可跳转📆个人专栏:🔹数据结构与算法🔹C语言进阶🚩不能则学,不知则问,耻于问人,决无长进🍭🍯🍎🍏🍊🍋🍒🍇🍉🍓🍑🍈🍌🍐🍍文章目录TOP-K问题一、题目描述二、思路:三、代码实现1.随机产生一万

【每日一题】852. 山脉数组的峰顶索引

852.山脉数组的峰顶索引-力扣(LeetCode)符合下列属性的数组arr称为山脉数组:arr.length>=3存在i(0<i<arr.length-1)使得:arr[0]<arr[1]<...arr[i-1]<arr[i]arr[i]>arr[i+1]>...>arr[arr.length-1]给你由整数组成的山

数据结构——二叉树提升

二叉树题型练习前言一、节点个数以及高度等二、二叉树OJ题二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历单值二叉树二叉树最大深度检查两颗树是否相同.翻转二叉树对称二叉树另一颗树的子树总结前言现在我们开始一轮新的自我提升吧!二叉树的题目当然也更有难度!没有什么是生来就会的,尤其是代码这一方面更是讲究熟能生巧,现在的我们学

热文推荐