Docker进阶篇-安装MySQL主从复制

一、MySQL主服务器

1、新建主服务器容器实例3307

docker run -p 3307:3306 \
           --name mysql-master \
           --privileged=true \
           -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

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

cd /mydata/mysql-master/conf
vim 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

3、修改完配置后重启master实例

docker restart mysql-master

4、进入mysql-master容器

docker exec -it mysql-master /bin/bash
mysql -uroot -p
show databases;

 

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

# 创建数据同步用户
create user 'slave'@'%' identified by '123456';
# 授权
grant replication slave, replication client on *.* to 'slave'@'%';

二、MySQL从服务器

1、新建从服务器容器实例3308

docker run -p 3308:3306 \
           --name mysql-slave \
           --privileged=true \
           -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

2、进入/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

3、修改完配置后重启master实例

docker restart mysql-slave

三、主从同步配置

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

# 进入主数据库容器
docker exec -it mysql-master /bin/bash
# 进入Mysql 
mysql -uroot -p
# 查看主从同步状态 
show master status;

查看返回结果的文件名File、当前位置Position,下面用得上

2、进入mysql-slave数据库容器,配置主从复制

  • 进入从数据库
# 进入从数据库容器
docker exec -it mysql-slave /bin/bash
# 进入Mysql 
mysql -uroot -p
  • 配置从数据库所属的主数据库
change master to master_host='192.168.100.134',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000004',master_log_pos=154,master_connect_retry=30;

命令详解:

master_host:主数据库IP地址(即宿主机IP)

master_user:在主数据库创建的用于同步数据的用户账号

master_password:在主数据库创建的用于同步数据的用户密码

master_port:主数据库端的运行端口

master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数(在上面)

master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数(在上面)

master_connect_retry:连接失败重试时间间隔,单位为秒

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

# \G 将横向的结果集表格转换成纵向展示
show slave status \G;

Slave_IO_Running、Slave_SQL_Running目前两个值都为 No,未开启主从同步。

4、在从数据库中开启主从同步

start slave;

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

show slave status \G;

6、主从复制测试

  • 主数据库新建库、使用库、新建表、插入数据
create database db01;
use db01;
create table t1(id int,name varchar(20));
insert into t1 values(1,'zhangsan');

  • 从数据库使用库、查看记录
use db01;
select * from t1;

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

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

相关文章

超声波清洗机清洗眼镜有用吗?值得入手洗眼镜超声波清洗机推荐

眼镜党朋友长时间佩戴眼镜避免不了受到灰尘、污垢和细菌的侵扰,不清洗的话我们的视线就会被有所阻碍,为了保证我们眼镜的干净同时也是为了注意个人卫生,建议我们定期清洗一下眼镜,给眼镜洗个澡顺便消消毒,从一开始用水…

多分支机构大型企业如何高效运维管理?向日葵x金地商置案例分享

对于下设多个分支机构的,跨地区经营的大型企业来说,如何高效安全的实施IT运维是一个重要的课题;同时,分支机构之间如何实现高效的异地协同办公,并且在这一需求的基础上进一步强化管理,也是企业管理者需要认…

Ubuntu 22.04 安装MySql

MySQL是非常常用的关系型数据库,无论是大厂还是小厂,都有它的身影。最大的优点是免费,安装起来也比较简单。 MySQL的架构 画了个简图,描述了下MySQL的架构。 其中的比较有趣的点在于连接池和存储引擎。连接池缓存了数据库和客户端的TCP连接,以减少建立连接的开销。存储引…

第35集《佛法修学概要》

己四 、 精进度 分三:庚一、 精进自性。庚 二、趣入修习精进方便。 庚三、修习精进差别内容 请大家打开讲义第九十四页,我们看己四,精进度。 当我们从人天乘一个好人的阶段提升到一种菩萨道的修学,我们就要注意两个重点了。在我…

实验五 PLSQL编程

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

Cmake 之Android库编译

一 检测库和执行程序能否在Android上用 1.1 我们知道Cmake不止能编译Linux库程序,也能编译出其它系统的库,如windows,ios和android等,那么上一篇生成的Linux的库程序能否直接用于Android上呢,下面先来做个测试。 1.2…

实验算法设计

文章目录 Unettransformer整体网络架构 Unet 可以用双线性差值替换,效果差不多,参数更少。 from typing import Dict import torch import torch.nn as nn import torch.nn.functional as F class DoubleConv(nn.Sequential):def __init__(self, in_cha…

interpret,一个超酷的 Python 库

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个超酷的 Python 库 - interpret。 Github地址:https://github.com/interpretml/interpret Python Interpret 是一个强大的开源工具,它为 Python 开发…

Crow:设置网站的index.html

对于一个网展来说,index.html是其第一个页面,也是根页面,如何通过Crow来加载index.html呢。 Crow:静态资源使用举例-CSDN博客 讲述了静态资源的使用,也就是通常存饭html,css,jpg文件的地方 当然index.html也会放在这个目录,但通常是放在static的根目录,其他资源会根据…

2.1.4-相关性分析

跳转到根目录:知行合一:投资篇 已完成: 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

vuex-跨模块访问

1. 场景 案例:跨模块访问和退出登录 假设我们有一个Vuex store,其中包含user模块和cart模块。当用户点击退出登录按钮时,我们需要调用user模块中的方法来清除用户信息,同时还需要清除cart模块中的购物车数据。 2. 实现-跨模块访…

air001研究笔记.基于arduino快速开发简单项目

一、air001芯片简介 air001是厂商合宙推出的一款tssop封装的mcu芯片。支持swd与串口烧录,多面向简单的功能简单类别的电子产品,因为官方文档齐全上手简易,所以也特别适合非专业爱好者乃至于幼儿编程。芯片内置资源:AIR001芯片数据…

国产AI新篇章:书生·浦语2.0带来200K超长上下文解决方案

总览:大模型技术的快速演进 自2023年7月6日“书生浦语”(InternLM)在世界人工智能大会上正式开源以来,其在社区和业界的影响力日益扩大。在过去半年中,大模型技术体系经历了快速的演进,特别是100K级别的长…

用LED数码显示器循环显示数字0~9

#include<reg51.h> // 包含51单片机寄存器定义的头文件 /************************************************** 函数功能&#xff1a;延时函数&#xff0c;延时一段时间 ***************************************************/ void delay(void) { unsigned …

Docker项目部署()

1.创建文件夹tools mkdir tools 配置阿里云 Docker Yum 源 : yum install - y yum - utils device - mapper - persistent - data lvm2 yum - config - manager -- add - repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker - ce.repo 更新 yum 缓存 yum makec…

视频剪辑技巧:一键批量制作画中画视频的方法,高效提升剪辑任务

在数字媒体时代&#xff0c;视频剪辑已成为一项重要的技能。无论是专业的影视制作&#xff0c;还是日常的社交媒体分享&#xff0c;掌握视频剪辑技巧都能为内容增色不少。下面来看云炫AI智剪如何高效的剪辑视频技巧&#xff1a;一键批量制作画中画视频的方法&#xff0c;帮助您…

Vue3前端开发,provide和enject的基础练习,跨层级传递数据

Vue3前端开发,provide和enject的基础练习,跨层级传递数据&#xff01; 声明:provide虽然可以跨层级传递&#xff0c;但是依旧是需要由上向下的方向传递。根传子的方向。 <script setup> import {onMounted, ref} from vue import Base from ./components/Base.vue impor…

ssrf漏洞代码审计之douphp解析(超详细)

1.进入douphp的安装界面 www.douphp.com/install/ 由此可知安装界面已经被锁定了&#xff0c;但是由于install.lock是可控的&#xff0c;删除了install.lock后即可进行安装&#xff0c;所以我们现在的目的就是找到怎么去删除install.lock的方法。 要删除目标网站的任意文件&a…

人工智能-机器学习-深度学习-分类与算法梳理

人工智能-机器学习-深度学习-分类与算法梳理 目前人工智能的概念层出不穷&#xff0c;容易搞混&#xff0c;理清脉络&#xff0c;有益新知识入脑。 为便于梳理&#xff0c;本文只有提纲&#xff0c;且笔者准备仓促&#xff0c;敬请勘误&#xff0c;不甚感激。 请看右边目录索引…

动态规划Day14(子序列第二天)

目录 1143.最长公共子序列 看到题目的第一想法 看到代码随想录之后的想法 自己实现过程中遇到的困难 1035.不相交的线 看到题目的第一想法 看到代码随想录之后的想法 自己实现过程中遇到的困难 53. 最大子序和 看到题目的第一想法 …