【docker安装Mysql并配置主从复制】

2023-09-22 11:29:39

Mysql主从复制

目的:

是为了后面naocs集群的服务配置做准备工作

准备工作

准备至少两台虚拟机或服务器,安装好了docker,找到他们的ip地址
在这里插入图片描述
在这里插入图片描述

后面操作都用xshell操作来代替

在这里插入图片描述

拉取并启动mysql镜像和容器
主机的命令为mysql01,对外端口用3310来连接
docker run -d -p 3310:3306 -v /home/mysql/node-1/config:/etc/mysql/ -v/home/mysql/node-1/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456  --name mysql01 mysql:5.7
从机的命名为mysql02,对外端口用3311来连接
docker run -d -p 3311:3306 -v /home/mysql/node-2/config:/etc/mysql/ -v/home/mysql/node-2/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 mysql:5.7
命令解释:

-d: 后台运行容器,并返回容器ID
-p 3311:3306 :将容器的3306端口映射到宿主机3310端口
-e MYSQL_ROOT_PASSWORD=123456 :配置数据库连接密码
-v /home/mysql/node-2/config:/etc/mysql/ :将配置文件夹挂载到宿主机
–name mysql01(02):将容器命名为 mysql01(02)

docker ps -a #查看全部容器(运行中加未运行的)分别查看mysql容器的状态

在这里插入图片描述

在这里插入图片描述

  都处于正常运行状态
下面用navicat连接两个数据库

都正常连接
在这里插入图片描述
在这里插入图片描述

开始主从复制的配置

之前我们启动的时候写了这句-v /home/mysql/node-1/config:/etc/mysql/,将mysql 的配置文件夹和主机的文件夹挂载起来的。
那么我们就可以直接在主机下的/home/mysql/node-1/config/编写配置文件了,
那么从机下的就是/home/mysql/node-2/config/编写配置文件了。

进入主机操作:
cd /home/mysql/node-1/config/
vim my.cnf
复制下面内容进去
[mysqld]
#修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server_id=1
#启用二进制日志
log-bin=mysql-bin

设置不要复制的数据库(可设置多个)

binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库 需要复制的主数据库名字,多个数据库的话,需要多行书写即可,不可逗号连接
binlog-do-db=testdb
#设置logbin格式
binlog_format=STATEMENT
然后esc-> :wq 保存

进入从机操作

cd /home/mysql/node-2/config/
vim my.cnf
复制下面的内容
[mysqld]
#从服务器唯一ID
server_id=2
#启用中继日志
relay-log=mysql-relay
然后esc-> :wq 保存

分别在主从机上,用命令docker restart mysql01 和 docker restart mysql02 重启mysql的容器

搭建主从复制

在这里插入图片描述

进入主机的mysql
docker exec -it mysql01 /bin/bash #进入容器
mysql -uroot -p123456 #连接mysql

主机上建立帐户并授权 slave
给从机授权,为了让从机能够和主机连接起来。
GRANT REPLICATION SLAVE ON . TO ‘slave’@‘%’ IDENTIFIED BY ‘123456’;
复制
在这里插入图片描述

查询master状态
show master status; #查询master的状态
在这里插入图片描述

把这里的File和Position记下来哈,等下在从机上要用到。
File: mysql-bin.000003
Position: 438
复制
Binlog_Do_DB:需要复制的数据库。
Binlog_Ignore_DB:不需要复制的数据库。
注意:此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化
由此进入从机操作:
进入mysql02容器
docker exec -it mysql02 /bin/bash
mysql -uroot -p123456
输入命令
CHANGE MASTER TO MASTER_HOST=‘主机的ip地址’,MASTER_USER=‘slave’,MASTER_PASSWORD=‘123456’,MASTER_PORT=3310, MASTER_LOG_FILE=‘mysql-bin.000003’,MASTER_LOG_POS=438;
解释:
CHANGE MASTER TO MASTER_HOST=‘主机的IP地址’,
MASTER_USER=‘slave’(刚刚配置的用户名),
MASTER_PASSWORD=‘123456’(刚刚授权的密码),
master_port=主机开放的端口 我这里是3310端口,
MASTER_LOG_FILE=‘mysql-bin.具体数字’,MASTER_LOG_POS=具体值(之前的Position);
在这里插入图片描述

注意事项:如果在这里出现错误,先重置。执行完下面两条命令。
stop slave;
reset master;
复制
启动从服务器复制功能
start slave;

查看从服务器状态
show slave status\G
在这里插入图片描述
在这里插入图片描述

#下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

测试,主机的testdb库都会及时同步过去

在这里插入图片描述

现在主库的表里没数据,添加一条
在这里插入图片描述

查看从库的数据,也存在了

到此一主一从的mysql主从复制就完成了。
在这里插入图片描述

mysql主从复制的优点:

1、数据更安全:做了数据冗余,不会因为单台服务器的宕机而丢失数据
2、性能大大提升:一主多从,不同用户从不同数据库读取,性能提升
3、扩展性更优:流量增大时,可以方便的增加从服务器,不影响系统使用
4、负载均衡:一主多从相当于分担了主机任务,做了负载均衡。

更多推荐

CDN加速器有哪些?

一、前端使用CDN加速的优缺点1.CDN优点(1).提高网站性能:CDN(内容分发网络)可以将静态资源(如脚本、样式表、图片等)缓存在服务器节点上,并通过就近访问用户,从而提供更快的加载速度和更好的用户体验。(2).减轻源服务器负载:CDN可以将用户请求的静态资源分发到全球各个边缘节点,从而将访问流量分散到多个服务器上

WebGIS开发教程:天地图的地理坐标系和投影坐标系的区别

天地图是⼀个在线地图服务提供商,⽀持多种地图投影和坐标系。在使用天地图时,需要了解地理坐标系、投影坐标系之间的区别。地理坐标系地理坐标系是⼀个用于表示地球表面上点位置的坐标系统,通常使用经度和纬度来表示。地理坐标系是⼀个三维坐标系统,以地球质心为原点,以地球⾚道面和⼀个固定点(例如北极点)为基准面。投影坐标系投影坐标系

【ONE·Linux || 进程间通信】

总言进程间通信:简述进程间通信,介绍一些通信方式,管道通信(匿名、名命)、共享内存等。文章目录总言1、进程间通信简述2、管道2.1、简介2.2、匿名管道2.2.1、匿名管道的原理2.2.2、编码理解:用fork来共享管道2.2.2.1、准备工作一:创建一个管道pipe2.2.2.2、准备工作二:创建子进程,对父子进程构

【Linux 应用】 kworker 进程

1.简介“kworker”是Linux内核的工作线程,用于异步处理工作队列中的任务。这些任务包括处理硬件中断、文件系统事件、管理系统内存等。你可能会看到多个kworker进程,每个进程的名称后面都有一个数字,如“kworker/0:1”、“kworker/1:2”等。这个数字表示了kworker是在哪个CPU核心上运行

2023华为杯研究生数学建模竞赛E题思路分析+代码+论文

如下为C君撰写的2023华为杯研究生数学建模竞赛E题思路分析,代码论文见文末。E题思路出血性脑卒中临床智能诊疗建模一、背景介绍出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血,占全部脑卒中发病率的10-15%。其病因复杂,通常因脑动脉瘤破裂、脑动脉异常等因素,导致血液从破裂的血管涌入脑组织,从而造成脑部机械性损伤,并

数据通信网络之IPv6以太网多层交换

文章及资源归档至【AIShareLab】,回复通信系统与网络可获取。文章目录一、目的二、环境及网络拓扑三、需求四、步骤一、目的掌握VLAN的基础配置。掌握Trunk的基础配置。掌握VLANIF的基础配置,并理解通过三层交换机实现VLAN之间通信的方案。二、环境及网络拓扑本实验模拟一个典型的简单园区网络,如图1所示,其中

半导体CIM系统中的EAP:提升制造效率的关键

半导体制造是高度复杂和技术密集型的行业,对生产效率和产品质量有着极高的要求。在这个领域,设备自动化编程系统(EquipmentAutomationProgramming,EAP)已经崭露头角,成为提升制造效率的关键要素。本文将深入探讨EAP在半导体CIM系统(制造执行系统)中的作用,以及它如何显著提高制造效率的关键作用

【C++】String类基本接口介绍及模拟实现(多看英文文档)

string目录如果你很赶时间,那么就直接看我本标题下的内容即可!!一、STL简介1.1什么是STL1.2STL版本1.3STL六大组件1.4STL重要性1.5如何学习STL二、什么是string??(本质上是一个类)三、string的类模板(什么?string居然利用了模板??)三、string的三种构造(拷贝构造也

批处理小程序的制作

一、介绍批处理是一种将一系列计算机任务按照预定义的顺序进行自动化处理的技术。它是通过批处理脚本或命令文件来实现的,可以在不需要人工干预的情况下,批量运行多个命令或程序。批处理脚本的优点1.自动化:批处理可以自动执行重复性任务,无需手动干预,减少人力和时间成本。2.批量处理:批处理可以同时处理多个任务,提高工作效率。3.

Kotlin 中的协程 flow

一、Flow概述Flow具有异步挂起suspend响应式编程,可以使用挂起函数来异步生产和消费事件,Flow的设计灵感也来源于响应式流以及其各种实现。二、Flow的生产和消费suspendfuntest1(){flow<Int>{(0..4).forEach{emit(it)//生产者发送数据}}.collect{pr

群晖linux ——设置短密码、免密码登录、多个群晖免密登录

文章目录概述群晖设置超短密码获取root权限设置新密码/更改密码群晖SSH公钥免密登录开启家目录修改文件夹权限修改配置文件上传公钥高级——多个群晖,不同密钥解决方法概述群晖仅在内网运行,外网无法访问。每次输入长密码不方便。但是群晖WEB端无法设置短密码,一番搜索过后,发现可以通过SSH的方式设计短密码。具体步骤如下。群

热文推荐