docker安装一主一从MySQL数据库步骤

安装MySQL主从复制
①宿主机创建以下目录
/mydata/mysql-master/log 命令:mkdir -p /mydata/mysql-master/log
/mydata/mysql-master/data 命令:mkdir -p /mydata/mysql-master/data
/mydata/mysql-master/conf 命令:mkdir -p /mydata/mysql-master/conf
/mydata/mysql-slave/log 命令:mkdir -p /mydata/mysql-slave/log
/mydata/mysql-slave/data 命令:mkdir -p /mydata/mysql-slave/data
/mydata/mysql-slave/conf 命令:mkdir -p /mydata/mysql-slave/conf
②启动主MySQL

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

③/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-mysgl- bin
## 设置二进制日志使用内存大小 (事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式 (mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
## 如: 1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

④修改完配置,重启master实列

docker restart mysql-master

⑤进入容器验证mysql是否可用(依次执行下面语句)

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

⑥创建数据同步用户

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';//创建用户
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%' ;//授权

⑦创建从数据库实列

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

⑧/mydata/mysql-slave/conf目录下创建my.cnf

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

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

⑨重启从数据库实列

docker restart mysql-slave

如果启动有问题的话,可以通过docker logs mysql-master 来查看日志,找到报错问题。

⑩在主数据库中查看主从同步状态(在主数据库容器内部执行下面语句)

show master status;

在这里插入图片描述
11.进入从数据库容器

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

12.在从数据库中配置主从复制


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

在这里插入图片描述

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

show slave status\G;

在这里插入图片描述

14.在从数据库中开启主从同步

start slave;

15.查看是否已经同步

show slave status\G;

报错:Slave_IO_Running: No Could not find first log file name in binary log index file’
解决方案:
在主数据库中执行flush logs;
在这里插入图片描述
进去从数据库,停掉stop slave; 执行CHANGE MASTER TO MASTER_LOG_FILE=‘mall-mysgl- bin.000002’,MASTER_LOG_POS=154;执行start slave;执行show slave status\G;
在这里插入图片描述

16.测试
在主数据库中创建表插入数据

create database db01;
use db01;
create table t1(id int , name varchar(20));
insert into t1 values(1,'zs');
select * from t1;

在这里插入图片描述

在从数据库执行

use db01;
select * from t1;

在这里插入图片描述

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

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

相关文章

层流燃烧模拟的技术研究与实践

层流燃烧模拟的技术研究与实践 一、引言 层流燃烧,作为一种基础而重要的燃烧类型,广泛存在于各种工业应用中,如发动机、燃气轮机、燃烧室等。为了更好地理解和优化这一过程,科研人员运用计算流体动力学(CFD)工具进行模拟,以期能更深入地洞察其内在机制。 二、层流燃烧…

uniapp实战 —— 竖排多级分类展示

效果预览 完整范例代码 页面 src\pages\category\category.vue <script setup lang"ts"> import { getCategoryTopAPI } from /apis/category import type { CategoryTopItem } from /types/category import { onLoad } from dcloudio/uni-app import { compu…

Anaconda3常用命令汇总

winR打开cmd窗口&#xff0c;以下所有命令都是通过cmd窗口执行 1、查看Anaconda3版本&#xff1a; conda -V 或者 conda --version 如果无法识别“conda”命令&#xff0c;请自行设置环境变量 环境变量设置&#xff1a; 二、环境管理命令汇总 1、查看所有虚拟环境 cond…

【Pyqt】QObject::connect: Cannot queue arguments of type ‘QTextCursor‘

问题说明 文本框接收到新的数据 不会自动滚动&#xff0c;并提示警告 QObject::connect: Cannot queue arguments of type ‘QTextCursor’ (Make sure ‘QTextCursor’ is registered using qRegisterMetaType().) 原因 线程回来的槽函数里面 调用了ui的代码 我们不能通过线程…

Git基本介绍及使用

任务背景 公司的集群架构已越来越robust(健壮), 但应用服务器上的代码升级和新产品的发布效率不高&#xff0c;甚至有代码发布到生产服务器后BUG太多&#xff0c;客户反应强烈的情况出现。公司的产品项目从需求分析,设计,研发,代码测试到发布上线的流程有问题&#xff0c;开发…

JVM简单了解内存溢出

JVM oracle官网文档&#xff1a;https://docs.oracle.com/en/java/javase/index.html 什么是JVM JVM(Java Virtual Machine)原名Java虚拟机&#xff0c;是一个可以执行Java字节码的虚拟计算机。它的作用是在不同平台上实现Java程序的跨平台运行&#xff0c;即使在不同的硬件…

PyQt6 QCalendarWidget日历控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计39条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

有哪些值得分享的销售拓客技巧?

拓客对于销售的重要性 拓客&#xff08;Toker&#xff09;是一个商业上的名词&#xff0c;核心就是提高售前服务、市场推广的水平&#xff0c;从而挖掘出潜在客户的隐形需求&#xff08;或称软需求&#xff09;。 拓客的核心&#xff0c;其实就是提高售前服务、市场推广的水平…

Linux设置root初始密码

目录 一、Linux系统中普通用户和特权用户&#xff08;root&#xff09; 二、Linux系统中设置root初始密码 一、Linux系统中普通用户和特权用户&#xff08;root&#xff09; windows 系统中有普通用户和特权用户&#xff0c;特权用户是 administer&#xff0c;普通用户可以…

使用 GROUP BY 进行数据库分析:以图书销售数据库为例

让我们通过一个简单但实用的例子来理解 GROUP BY 的使用。我们将以一个图书销售数据库为例。这个数据库包含两张表&#xff1a;一张是图书信息表 (books)&#xff0c;另一张是销售记录表 (sales)。我们会先创建这两张表&#xff0c;然后插入一些数据&#xff0c;并展示如何使用…

Mybaits 动态sql 整理

一 常见的 MyBatis 是一个流行的 Java 数据持久化框架&#xff0c;它提供了灵活的动态 SQL 查询功能&#xff0c;让开发者可以根据需要构建动态的 SQL 查询语句。下面是 MyBatis 中常用的动态 SQL 构建方式&#xff1a; 1. if 元素&#xff1a;用于根据条件判断是否包含某个 …

嵌入版python作为便携计算器(安装及配置ipython)

今天用别的电脑调试C&#xff0c;需要计算反三角函数时发现没有趁手工具&#xff0c;忽然想用python作为便携计算器放在U盘&#xff0c;遂想到嵌入版python 懒得自己配可以直接下载&#xff0c;使用方法见第4节 1&#xff0c;下载embeddable python&#xff08;嵌入版python&…