mysql在服务器中的主从复制Linux下

mysql在服务器中的主从复制Linux下

    • 为什么要进行主从复制
    • 主从复制的原理
    • 主从复制执行流程
      • 操作步骤
        • 主库创建
        • 从库创建
      • 测试

为什么要进行主从复制

  1. 在业务中通常会有情况,在sql执行时,将表锁住,导致不能进行查询,这样就会影响业务的正常运行,这个时候可以使用主从复制,用主库负责写,用从库进行读,这样即使出现锁表的情况也不影响正常的业务。
  2. 主从复制可以进行数据的热备份,主库宕机后,从库可以切换,保证业务的正常执行。
  3. 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘的I\O,提高单个库的性能。

主从复制的原理

  • 主数据库

    MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。

    binlog:主库中保存所有更新事件日志的二进制文件。binlog是数据库服务启动的一刻起,保存数据库所有变更记录(数据库结构和内容)的文件。

  • 从数据库

    在从库中,当复制开始时,从库就会创建从库I/O线程和从库的SQL线程进行复制处理。
    从库I/O线程:当START SLAVE语句在从库开始执行之后,从库创建一个I/O线程,该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。 从库I/O线程读取主库的binlog输出线程发送的更新并拷 贝这些更新到本地文件,其中包括relay log文件。

主从复制执行流程

  1. 主库db的更新事件(update、insert、delete)被写到binlog的日志中去
  2. 从库启动并发起连接,连接到主库
  3. 主库创建一个binlog dump thread,把binlog的内容发送到从库
  4. 从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log
  5. 从库启动之后,创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db
    在这里插入图片描述
    在这里插入图片描述

此案例中规定主库端口号为3306,从库为3307

操作步骤

主库创建

在操作之前先安装docker(Linux中有);然后在docker中获取mysql8的镜像:

docker pull daocloud.io/library/mysql:8.0.16

查看mysql是否安装

docker images

在这里插入图片描述

创建环境目录

1、进入usr下的local下
cd /usr/local
2、创建mysql目录
mkdir mysql
3、进入mysql目录
cd mysql
4、创建master-data目录
mkdir ,aster-data

在这里插入图片描述

主mysql容器运行

mysql]# docker run --name  mysql-master  --privileged=true  -v /usr/local/mysql/master-data:/var/lib/mysql  -p 3306:3306  -e  MYSQL_ROOT_PASSWORD=root  -d  (docker image中的imageId)  --character-set-server=utf8 --server-id=1 --lower_case_table_names=1

参数:

–privileged指定了当前容器是否真正的具有root权限

-p表示宿主机上的某个端口映射到docker容器内的某个端口

-d参数指定了当前容器是在后台运行

–server-id 设置服务器的编号,主从复制的每一个服务的编号都不能相同

在这里插入图片描述

配置mysql权限账户

docker exec -it mysql-master /bin/bash

登录主服务器mysql

mysql -uroot -p
注:此时密码为root

在这里插入图片描述

修改密码和设置从服务器登录用户

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
CREATE USER 'slave_one'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave_one'@'%';

在这里插入图片描述
在这里插入图片描述

查看主mysql的master节点的binlog状态

show master status;

在这里插入图片描述

至此主服务器搭建完毕,下面开始搭建从服务器

从库创建

创建环境目录

cd /usr/local/mysql
mkdir slave_one-data

从mysql容器运行

docker run --name mysql-slave_one --privileged=true -v /usr/local/mysql/slave_one-data:/var/lib/mysql -p 3307:3306 --link mysql-master:master  -e MYSQL_ROOT_PASSWORD=root   -d df8662dadd4f --character-set-server=utf8 --server-id=2   --lower_case_table_names=1

在这里插入图片描述

配置mysql权限账户

docker exec -it mysql-slave_one /bin/bash

在这里插入图片描述

登录从服务器mysql

mysql -uroot -p
注:密码为root

在这里插入图片描述

修改密码登录用户

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

在这里插入图片描述

切换当前服务的状态,使其能够连接上master服务器,并且复制其数据

change master to master_host='master', master_user='slave_one', master_password='123456', master_port=3306, master_log_file='binlog.000002', master_log_pos=1409, master_connect_retry=30;

解释:
change master to master_host='master', master_user='slave_one', master_password='123456', 
master_port=3306, master_log_file='master中binlog日志文件名', master_log_pos=master中binlog日志位置, 
master_connect_retry=30;

启动日志同步

start slave;

查看状态

show slave status\G;

在这里插入图片描述

测试

在测试之前首先要保证服务器中的3306he3307的两个端口号防火墙开启

在这里插入图片描述

连接两个数据库

主数据库连接

在这里插入图片描述

从数据库连接

在这里插入图片描述

主库中的数据
在这里插入图片描述

从库不做任何库、表、数据的操作,刷新后有相同的数据

在这里插入图片描述
测试成功。

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

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

相关文章

Window部署Exceptionless

Exceptionless Elasticsearch 版本: Exceptionless:8.1.0 Elasticsearch:7.17.5 JDK:11.0.10 目录 一、Elasticsearch运行 二、 Exceptionless 一、Elasticsearch运行 bin目录下elasticsearch.bat 直接运行 访问 http://lo…

Google发布开放的模型Gemma

今天,Google 发布了一系列最新的开放式大型语言模型 —— Gemma!Google 正在加强其对开源人工智能的支持,我们也非常有幸能够帮助全力支持这次发布,并与 Hugging Face 生态完美集成。 Gemma 提供两种规模的模型: 7B …

StarRocks加速查询——低基数全局字典

前言 StarRocks-2.0引入了低基数全局字典,可以通过全局字典将字符串的相关操作转换成整型相关操作,极大提升了查询性能。StarRocks 2.0后的版本默认会开启低基数字典优化。 一、低基数字典 对于利用整型替代字符串进行处理,通常使用字典编码…

一、网络基础知识

1、IP地址和端口号 1.1、IP地址 定义:用于在网络中唯一标识设备的地址。格式:通常由四个数字组成,以点分十进制表示,例如:192.168.0.1。(IPv4)作用:允许网络中的设备相互通信,通过IP地址可以定…

期货量化001:获取玉米主连的数据到execel表中

用efinance库: import efinance as ef import pandas as pd# 获取期货基本信息 futures_info ef.futures.get_futures_base_info()# 根据名称找到玉米主力的行情ID corn_quote_id futures_info[futures_info[期货名称] 玉米主连][行情ID].values[0]# 获取玉米的…

【这个词(Sequence-to-Sequence)在深度学习中怎么解释,有什么作用?】

🚀 作者 :“码上有前” 🚀 文章简介 :深度学习笔记 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Sequence-to-Sequence(Seq2Seq) Sequence-to-Sequence(Seq2Seq…

【机器学习】数据清洗——基于Pandas库的方法删除重复点

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

华为OD机试真题C卷-篇4

200分值题 可以处理的最大任务员工派遣快递员的烦恼符号运算伐木工反射计数分披萨推荐多样性贪心的歌手螺旋数组矩阵(100) 可以处理的最大任务 有一个tasks任务列表&#xff0c;需要处理其中的任务&#xff1b;tasks[i] [si, ei]&#xff0c;该任务可以在si<day<ei之间…

网络安全-nc(Netcat)工具详解

经常在反弹shell的时候使用nc命令&#xff0c;但是从来没有了解过&#xff0c;今天翻书看到了&#xff0c;准备记录一下。 nc全称Netcat&#xff0c;是TCP/IP连接的瑞士军刀。哈哈我最喜欢瑞士军刀了。 有一个比较偏的知识点&#xff0c;nc还可以探测目标的端口是否开放&…

Flink中的双流Join

1. Flink中双流Join介绍 Flink版本Join支持类型Join API1.4innerTable/SQL1.5inner,left,right,fullTable/SQL1.6inner,left,right,fullTable/SQL/DataStream Join大体分为两种&#xff1a;Window Join 和 Interval Join 两种。 Window Join又可以根据Window的类型细分为3种…

【王道数据结构】【chapter6图】【P234t5】

假设图用邻接表表示&#xff0c;设计一个算法&#xff0c;输出从顶点vi到顶点vj的所有简单路径 #include <iostream>] #include <string.h> #define maxsize 10 typedef struct node{int data;struct node *next; }node ,*pnode;pnode buynode(int x) {pnode tmp(p…

【Linux取经路】文件系统之缓冲区

文章目录 一、先看现象二、用户缓冲区的引入三、用户缓冲区的刷新策略四、为什么要有用户缓冲区五、现象解释六、结语 一、先看现象 #include <stdio.h> #include <string.h> #include <unistd.h>int main() {const char* fstr "Hello fwrite\n"…

电路设计(26)——速度表的multisim仿真

1.设计要求 设计一款电路&#xff0c;能够实时显示当前速度。 用输入信号模拟行驶的汽车&#xff0c;信号频率的1hz代表汽车速度的1m/s。最后速度显示&#xff0c;以km/h为单位。 2.电路设计 当输入信号频率为40HZ时&#xff0c;显示的速度应该为144KM/h&#xff0c;仿真结果为…

petalinux_zynq7 驱动DAC以及ADC模块之一:建立IP

0. 环境 - ubuntu18 - vivado 2018.3 - mizar z7010 ada106模块 1. vivado 1.1 创建vivado工程 运行vivado source /tools/Xilinx/Vivado/2018.3/settings64.sh vivado& 创建vivado工程 Vivado -> Create Project -> Next -> -> Project name: …

OpenCV中图像的HSV色彩空间

在HSV 色彩空间中H, S, V 这三个通道分别代表着色相(Hue)&#xff0c;饱和度(Saturation)和明度(Value)&#xff0c; 原本输出的HSV 的取值范围分别是0-360, 0-1, 0-1; 但是为了匹配目标数据类型OpenCV 将每个通道的取值范围都做了修改,于是就变成了0-180, 0-255, 0-255 impo…

人机交互新研究:MIT开发了结合脑电和眼电的新式眼镜,与机器狗交互

还记得之前的AI读心术吗&#xff1f;最近&#xff0c;「心想事成」的能力再次进化&#xff0c; ——人类可以通过自己的想法直接控制机器人了&#xff01; 来自麻省理工的研究人员发表了Ddog项目&#xff0c;通过自己开发的脑机接口&#xff08;BCI&#xff09;设备&#xff…

设置墙、楼板每层的厚度和材质——群问题整理003

你好&#xff0c;这里是BIM的乐趣&#xff0c;我是九哥~ 今天分享的是设置墙、楼板等每层的厚度和材质。 我们都知道&#xff0c;Revit中墙、板这类系统族&#xff0c;厚度设置和普通族是不太一样的&#xff0c;他的厚度参数可读&#xff0c;但是并不可设置&#xff0c;因为我…

flannel网络拓扑

测试环境创建 在k8s中部署flannel网络插件 https://blog.csdn.net/weixin_64124795/article/details/128894411 参考文章部署k8s集群和flannel网络插件 我的k8s集群物理环境 我的集群中只有两个节点master和node1节点 [rootmaster sjs]# kubectl get node NAME STATU…

MySQL 索引原理以及 SQL 优化

索引 索引&#xff1a;一种有序的存储结构&#xff0c;按照单个或者多个列的值进行排序。索引的目的&#xff1a;提升搜索效率。索引分类&#xff1a; 数据结构 B 树索引&#xff08;映射的是磁盘数据&#xff09;hash 索引&#xff08;快速锁定内存数据&#xff09;全文索引 …