Docker数据库的主从复制

有很多种方式,我这里使用的是docker镜像配置两个mysql容器做主从复制,一个做主服务器,另一个做从服务器,前提是有docker。
创建容器:
第一个容器:

mkdir mysql
cd mysql
docker run -id \
-p 3307:3306 \
--name=ls \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/logs:/logs \
-v /root/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

第二个容器:

mkdir mysql2
cd mysql2
docker run -id \
-p 3308:3306 \
--name=my_mysql2 \
-v /root/mysql2/conf:/etc/mysql/conf.d \
-v /root/mysql2/logs:/logs \
-v /root/mysql2/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

springcloud开发与实战的容器:
docker run -d \
  --name mysql3 \
  -p 3309:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql3/data:/var/lib/mysql \
  -v /root/mysql3/conf:/etc/mysql/conf.d \
  -v /root/mysql3/init:/docker-entrypoint-initdb.d \
  --network hm-net\
  mysql
  
  
  mkdir mysql3
cd mysql3
docker run -id \
-p 3309:3306 \
--name=my_mysql3 \
-v /root/mysql3/conf:/etc/mysql/conf.d \
-v /root/mysql3/logs:/logs \
-v /root/mysql3/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql

如果你的容器有问题可以删除容器
docker rm -f 容器名

查看网络信息:ifconfig

确保你的数据库能连接,如果不能连接可以执行:
systemctl stop NetworkManager

是什么原因造成的呢?其实就是因为linux里两个网络配置工具network和NetworkManager冲突导致的,NetworkManager一般用于安装了桌面环境的Linux系统,一般情况下我们直接使用以下明令禁止使用NetworkManager就行了。

重启网络: systemctl restart network

关闭防火墙: systemctl stop firewalld

再次执行:ifconfig查看网络信息

命令

启动容器: docker start 容器名

重启docker: sudo systemctl restart docker

docker开启了之后会尝试启动容器: docker update --restart=always 容器ID或名称
(配置了开机自启docker然后docker就会启动容器)

关闭docker开启了之后会尝试启动容器:docker update --restart=no 容器ID或名称

进入了mysql重启服务: service mysql restart

重启mysql容器: docker restart my_mysql

使用命令连接mysql: docker exec -it 容器名 mysql -u root -p

docker能连接mysql了尝试在windows连接数据库

如果能连接两个数据库了

执行:
cd root
ls
应该能看见两个文件夹

对主服务器的MySQL进行设置启用二进制日志

进入mysql:
cd /root/mysql

创建my.cnf文件:
vi my.cnf

修改my.cnf文件:

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]


pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-bin=mysql-bin     #[必须]启用二进制日志
server-id=100         #[必须]服务器唯一ID

# Custom config should go here
!includedir /etc/mysql/conf.d/

以上是文件里面要写的内容

将创建好的my.cnf文件复制到容器内:前提是要在包含my.cnf这个的文件夹的地方操作
docker cp my.cnf my_mysql:/etc/mysql/

进入数据库 docker exec -it my_mysql /bin/bash

在MySQL数据库中创建一个名为 xiaoming 的用户,密码是123456,并赋予该用户复制从服务器(REPLICATION SLAVE)的权限,同时指定该用户的认证方式为 mysql_native_password,并最后刷新权限:
CREATE USER 'xiaoming'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'xiaoming'@'%';
ALTER USER 'xiaoming'@'%' IDENTIFIED WITH 'mysql_native_password' BY '123456';
FLUSH PRIVILEGES;

查看主库状态:  show master status

以上,完成主数据库的配置

这是我的主库状态

从库配置

进入mysql2:
cd mysql2

在从库的文件夹创建 my.cnf
vi my.cnf

修改my.cnf文件:

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]


pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

server-id=101         #[必须]服务器唯一ID

# Custom config should go here
!includedir /etc/mysql/conf.d/

以上内容复制进去
将创建好的my.cnf文件复制到容器内
我的从库名字是mysql2,执行以下代码
docker cp my.cnf my_mysql2:/etc/mysql/

再次进入mysql中
docker exec -it my_mysql2 mysql -u root -p

master_host的内容是第一台虚拟机的ip地址,port端口号就是你之前创建容器的端口号

执行语句
CHANGE MASTER TO
  MASTER_HOST='192.168.182.15',
  MASTER_PORT=3307,
  MASTER_USER='xiaoming',
  MASTER_PASSWORD='123456',
  MASTER_LOG_FILE='mysql-bin.000002',
  MASTER_LOG_POS=154;
执行语句
start slave;

查看从库状态
show slave status;

如果是以上这样的,复制到notepd++打开

Slave Io Running   slave soL Running
都是yes就没有问题了,在dockerMysql建一个a数据库,刷新dockerMysql2就会同步创建

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CH32V307VCT6---工程template创建

一、硬件:沁恒官网申请的CH32V307VCT6开发板 二、开发环境:Mounriver 三、最终效果 1.PB9连接LED1,使其闪烁 2.OLED屏幕显示:软件IIC,PB10----SDA,PB11---SCL 3.工程链接:CH32V307VCT6 lo…

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS,点击添加 3.搜索你要的工具,选中点击确定就添加了 4.回到上面一个界面,选中你要放到工具栏的工具,点击应用就好了 5.修改图标,快捷键或者右击选中编辑图标 6.选择你要的图标就好了

使用 Python 创建多栏 Word 文档 – 详解

目录 引言 一、工具与安装 二、Python 在 Word 中创建简单的多栏布局 三、Python 在 Word 文档的栏间添加分隔线 四、Python 从Word文档的指定位置开启多栏设置 五、Python 为多栏 Word 文档的各栏添加页码 引言 在文档设计中,排版不仅决定了内容的呈现方式&…

JZ31 栈的压入、弹出序列

题目来源:栈的压入、弹出序列_牛客题霸_牛客网 题目:如下 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序&#xf…

Spring源码_05_IOC容器启动细节

前面几章,大致讲了Spring的IOC容器的大致过程和原理,以及重要的容器和beanFactory的继承关系,为后续这些细节挖掘提供一点理解基础。掌握总体脉络是必要的,接下来的每一章都是从总体脉络中, 去研究之前没看的一些重要…

【Linux】进程间通信 -> 匿名管道命名管道

进程间通信的目的 数据传输:一个进程许需要将它的数据发送给另外一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件(如进程终止时要通知父进程…

大模型-使用Ollama+Dify在本地搭建一个专属于自己的聊天助手与知识库

大模型-使用OllamaDify在本地搭建一个专属于自己的知识库 1、本地安装Dify2、本地安装Ollama并解决跨越问题3、使用Dify搭建聊天助手4、使用Dify搭建本地知识库 1、本地安装Dify 参考往期博客:https://guoqingru.blog.csdn.net/article/details/144683767 2、本地…

黑盒测试/白盒测试知识总结

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 对于很多刚开始学习软件测试的小伙伴来说,如果能尽早将黑盒、白盒测试弄明白,掌握两种测试的结论和基本原理,将对自己后期的学习…

数据结构之线性表之顺序表

定义: 由n(n>0)个数据特性相同的元素构成的有限序列称为线性表 简单来说n个相同数据类型的数据组wsw合在一起的这么一个集合就是一个线性表 线性表包括顺序表和链表 1. 顺序表(我们所有的代码实现都用函数来封装&#xff09…

ReactPress 1.6.0:重塑博客体验,引领内容创新

ReactPress 是一个基于Next.js的博客&CMS系统, Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。 体验地址:http://blog.gaoredu.com/ 今天,我们自豪地宣布ReactPress 1.6.0版本的正式发布,…

(echarts)数据地图散点类型根据条件设置不同的标记图片

(echarts)数据地图散点类型根据条件设置不同的标记图片 1.用在线工具将本地图片转化base64格式 data(){return { base64Img:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQ...",} }在线转换地址:https://www.jyshare.com/front-end/59/ 2.symbol属…

傅里叶变换原理

本文学习自YuHWEI最浅显易懂的傅里叶变换公式和原理_采样率和信号频率计算镜像频率-CSDN博客 本文会对公式实现 更加详细的补充 连续与离散 一般人们口中所说的傅里叶变换都是指连续傅里叶变换,针对的是连续时域信号. 对于计算设备的信号处理,因为采样…

STM32高级 以太网通讯案例2:搭建TCP服务端

需求描述 在TCP通讯的时候,客户端必须主动联系服务器,这样才能实现通讯。服务器与客户端之间的连接是一种长连接,一旦连上一般是不会断开的。 在STM32上启动一个TCP的服务端,在电脑上用TCP客户端去连接服务端。客户端给服务端发…

系统架构师考试 常错题记录 01

1.按照《中华人民共和国著作权法》的权利保护期( )受到永久保护。 A.发表权 B.修改权 C.复制权 D.发行权 正确答案:B 解析:本题考查知识产权法中的《中华人民共和著作权法》保护期限知识点。 《中华人民共和著作权法》中约定署名权…

WebPack3项目升级webpack5的配置调试记录

文章目录 前言一、webpack3环境1.1、知识点记录1.1.1、配置解释1.1.2、webpack与sass版本对应关系1.1.3、CommonJS与ESModule1.1.4、node版本管理nvm1.1.5、sass-loader、sass与node-sass 1.2、其他1.2.1、.d.ts是什么文件1.2.2、react与types/react版本对应关系1.2.3、webpack…

[源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

link [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要0x01 启动 1.1 分布式启动1.2 构造基础 1.2.1 获取模型1.2.2 获取数据集1.2.3 步进函数 1.2.3.1 广播数据0x02 Pretrain0x03 初始化 3.1 …

事件驱动编程与异步编程:原理、对比及实践案例

在编程领域,事件驱动编程(Event-Driven Programming)与异步编程(Asynchronous Programming)是两种极为关键的编程范式,它们对于提升程序运行效率与响应速度效果显著,尤其在应对I/O密集型任务以及…

基于earthSDK三维地图组件开发

上效果 功能点 测量分析相机位置切换geojson数据加载地图打点&#xff0c;显示信息点击回传数据二三位切换 这里二三维切换通上篇openlayers分享&#xff0c;技术交流V:bloxed <template><div class"h100 w100"><div style"width:100%; heig…

计算机毕业设计Python+Spark知识图谱酒店推荐系统 酒店价格预测系统 酒店可视化 酒店爬虫 酒店大数据 neo4j知识图谱 深度学习 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

RK3506开发板:智能硬件领域的新选择,带来卓越性能与低功耗

在现代智能硬件开发中&#xff0c;选择一款性能稳定、功耗低的开发板是确保产品成功的关键。Rockchip最新推出的RK3506芯片&#xff0c;凭借其卓越的能效比、多功能扩展性和优秀的实时性能&#xff0c;已经成为智能家电、工业控制、手持终端等领域的热门选择。而基于RK3506的Ar…