新手小白学习docker第八弹------实现MySQL主从复制搭建

devtools/2024/11/16 5:53:33/

目录

  • 0 引言
  • 1 实操
    • 1.1 新建主服务器容器
    • 1.2 书写配置文件
    • 1.3 重启master实例
    • 1.4 进入mysql-master容器
      • master容器实例内创建数据同步用户
    • 1.5 新建从服务器容器
    • 1.6 书写配置文件
    • 1.7 重启slave实例
    • 1.8 查看主从同步状态
    • 1.9 进入mysql-slave容器
      • 1.9.1 配置主从复制
      • 1.9.2 查看主从同步状态
      • 1.9.3 开启主从同步
      • 1.9.4 查看是否同步
  • 2 主从复制测试
    • 2.1 主服务器容器操作
    • 2.2 从服务器容器查看
  • 3 后记

0 引言

本章咱们来实现一下MySQL的主从复制搭建叭~
为什么呢?
因为这样可以增强容错性
如果主服务器出现故障了,咱们的从服务器可以顶上啊!
说明我们也要时刻准备着plan B,这样才能万无一失!
本文的观看以及实操,
非常需要注意是在主服务器容器下执行命令还是从服务器容器下执行命令!
非常需要注意是在主服务器容器下执行命令还是从服务器容器下执行命令!
非常需要注意是在主服务器容器下执行命令还是从服务器容器下执行命令!

1 实操

1.1 新建主服务器容器

新建主服务器容器实例3307

docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7

-p 端口映射
–name 运行的容器的名字
-v 容器数据卷,可以宿主机和容器相互共享文件
-d 后台启动
在这里插入图片描述

1.2 书写配置文件

进入/mydata/mysql-master/conf目录下新建my.cnf

cd /mydata/mysql-master/conf
vim my.cnf

在这里插入图片描述

在my.cnf中填入以下内容

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101 
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能
log-bin=mall-mysql-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

1.3 重启master实例

修改完配置后重启master实例
重启实例,配置文件才会生效,注意哟!

docker restart mysql-master

在这里插入图片描述
查看是否重启成功

docker ps

在这里插入图片描述

mysqlmaster_74">1.4 进入mysql-master容器

进入mysql-master容器

docker exec -it mysql-master /bin/bash
mysql -uroot -proot

在这里插入图片描述

master容器实例内创建数据同步用户

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

在这里插入图片描述

1.5 新建从服务器容器

新建从服务器容器实例3308

docker run -p 3308:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7

1.6 书写配置文件

进入/mydata/mysql-slave/conf目录下新建my.cnf

cd /mydata/mysql-slave/conf
vim my.cnf

在这里插入图片描述

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062  
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## slave设置为只读(具有super权限的用户除外)
read_only=1

1.7 重启slave实例

修改完配置后重启slave实例

docker restart mysql-slave
docker ps

在这里插入图片描述

1.8 查看主从同步状态

主数据库中查看主从同步状态

show master status;

在这里插入图片描述

mysqlslave_153">1.9 进入mysql-slave容器

docker exec -it mysql-slave /bin/bash
mysql -uroot -proot

在这里插入图片描述

1.9.1 配置主从复制

从数据库中配置主从复制
查找本机IP

ifconfig

在这里插入图片描述

change master to master_host='192.168.91.132', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;

1.9.2 查看主从同步状态

从数据库中查看主从同步状态

show slave status \G;

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

1.9.3 开启主从同步

从数据库中开启主从同步

start slave;

在这里插入图片描述

1.9.4 查看是否同步

查看从数据库状态发现已经同步

show slave status \G;

在这里插入图片描述

2 主从复制测试

2.1 主服务器容器操作

主机新建库-使用库-新建表-插入数据

SHOW DATABASES;
CREATE DATABASE DB01;
USE DB01;
CREATE TABLE TB01(ID INT, NAME VARCHAR(20));
INSERT INTO TB01 VALUES(1,'Z3');
SELECT * FROM TB01;

在这里插入图片描述

2.2 从服务器容器查看

从机使用库-查看记录

USE DB01;
SELECT * FROM TB01;

3 后记

虽然我们是内向的人,但我们也不要害怕上台讲话,既然上台了,就好好讲,慢慢讲,无所谓哒~

任何事情要么就不做,要么就尽自己的能力做到问心无愧就好!

家人们,BB们,本篇文章对您有帮助的话,记得给我点个赞赞,咱们再离开昂!


http://www.ppmy.cn/devtools/134356.html

相关文章

红黑树

目录 红黑树 红黑树的概念 红黑树的性质 红黑树节点的定义 插入的代码实现 情况一 情况二 uncle不存在 uncle存在且为黑单旋 情况三 uncle存在且为黑的双旋情况 情况二和情况三的总代码 以上是父亲在爷爷左边的情况,右边的情况也类似 左旋代码 右旋代码 红黑树…

探索 HTML 和 CSS 实现的模拟时钟

效果演示 这段代码是一个模拟时钟的 HTML 和 CSS 代码。它创建了一个简单的数字时钟界面&#xff0c;包括时针、分针和秒针。 HTML <div class"face"><p class"v-index">II</p><p class"h-index">II</p><d…

Linux手动安装nginx

本次以安装nginx-1.12.2为例 1、首先说明一下&#xff0c;安装nginx之前需要安装如下素材&#xff1a; 2、开始安装 第一步&#xff0c;安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel第二步&#xff0c;下载并安装nginx安装包&#xff08;n…

将大型语言模型(如GPT-4)微调用于文本续写任务

要将大型语言模型&#xff08;如GPT-4&#xff09;微调用于文本续写任务&#xff0c;构造高质量的训练数据至关重要。以下是如何构造训练数据的详细步骤&#xff1a; 1. 数据收集&#xff1a; 多样性&#xff1a; 收集多种类型的文本&#xff0c;包括小说、新闻、论文、博客等…

移动应用开发:实现简易调查问卷

文章目录 前言一&#xff0c;创建SurveyActivity活动二&#xff0c;设计UI三&#xff0c;创建字符串资源文件四&#xff0c;编写活动代码五&#xff0c;更新 AndroidManifest.xml六&#xff0c;运行测试 前言 在Android Studio中开发一个调查问卷界面思路解析&#xff1a; 创建…

C#中break和continue的区别?

在C#编程语言中&#xff0c;break和continue是两个用于控制循环流程的关键字&#xff0c;但它们的作用和用途有所不同。 break关键字 break关键字用于立即终止它所在的最内层循环或switch语句&#xff0c;并跳出该循环或switch块。程序执行将继续进行循环或switch语句之后的下一…

深入理解ElasticSearch分词器:详解各种分词器的原理与应用

目录 什么是分词器ElasticSearch中的分词器种类标准分词器&#xff08;Standard Analyzer&#xff09;简单分词器&#xff08;Simple Analyzer&#xff09;空格分词器&#xff08;Whitespace Analyzer&#xff09;语言分词器&#xff08;Language Analyzers&#xff09;拼音分…

wordcloud库基本介绍

文章目录 wordcloud库概述wordcloud库的安装 wordcloud库使用说明配置对象参数 wordcloud应用实例实例: 政府工作报告词云 wordcloud库概述 wordcloud是优秀的词云展示第三方库 词云以词语为基本单位,更加直观和艺术地展示文本 wordcloud库的安装 (cmd命令行) pip install …