(九)docker复杂安装-安装mysql主从复制

news2024/11/24 1:02:55

目录

前提:

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

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

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

四、进入mysql-master容器并测试

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

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

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

八、修改完配置后重启slave实例

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

十、进入mysql-slave容器

十一、在从数据库中配置主从复制

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

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

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

十五、主从复制测试

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

2、从机使用库-查看记录


前提:

1、docker已经运行

2、images已经下好,mysql:5.7

一、新建主服务器容器实例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/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

上下命令一样,下边的看着方便一些(root用户可以不加privileged参数)

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/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -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-mysql-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-master容器并测试

docker exec -it mysql-master /bin/bash

# 登录数据库
mysql -uroot -p
# 查看数据库
show databases;

 

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

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

六、新建从服务器容器实例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/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

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/conf.d \

-e MYSQL_ROOT_PASSWORD=123456 \

-d mysql:5.7 

 

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

 

八、修改完配置后重启slave实例

docker restart mysql-slave

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

show master status;

注意:记住mall-mysql-bin.000001和617这两个参数。

十、进入mysql-slave容器

docker exec -it mysql-slave /bin/bash

# 登录数据库
mysql -uroot -p

十一、在从数据库中配置主从复制

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

master_host

主数据库的IP地址

master_port

主数据库的运行端口

master_user

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

master_password

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

master_log_file

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

master_log_pos

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

master_connect_retry

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

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

# \G:查询结果进行按列打印,可以使每个字段打印到单独的行
show slave status \G;

两个no代表未开启。

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

start slave;

 

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

# \G:查询结果进行按列打印,可以使每个字段打印到单独的行
show slave status \G;

两个yes代表已开启主从同步。

十五、主从复制测试

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

create database db1;
use db1;
create table t1(id int,name varchar(20));
insert into t1 value(1,'z3');
select * from t1;

2、从机使用库-查看记录

use db1;
select * from t1;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提取接近竖直物体(粗定位)

由于项目的需要提取图像之中的一个接近于竖直的物体,一般的方法是进行图像分割,分割方式使用什么OTSU方式以及hsv方法等等。但是项目中使用的相机是黑白相机,会受到一定的限制。因此想到的是使用线条提取方式。线条提取方式之中最好的方法是使…

102-并发编程详解(中篇)

这里续写上一章博客 Phaser新特性 : 特性1:动态调整线程个数 CyclicBarrier 所要同步的线程个数是在构造方法中指定的,之后不能更改,而 Phaser 可以在运行期间动态地 调整要同步的线程个数,Phaser 提供了下面这些方…

Quantum 构建工具使用新的 TTP 投递 Agent Tesla

Zscaler 的研究人员发现暗网上正在出售名为 Quantum Builder 的构建工具,该工具可以投递 .NET 远控木马 Agent Tesla。与过去的攻击行动相比,本次攻击转向使用 LNK 文件。 Quantum Builder 能够创建恶意文件,如 LNK、HTA 与 PowerShell&…

clickhouse集群安装

单机安装 yum install yum-utilsrpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPGyum-config-manager --add-repo https://repo.clickhouse.com/rpm/clickhouse.reposudo yum install clickhouse-server clickhouse-client 配置文件 vim /etc/clickhouse-serve…

FFmpeg集成qsv的编译安装

文章目录FFmpeg集成qsv的编译安装一、参考二、编译安装流程1. LibVA 和 Media-Driver 的安装2. Intel Media SDK 编译3. ffmpeg的编译安装4. 验证安装FFmpeg集成qsv的编译安装 一、参考 Ubuntu20.04 ffmpeg添加 Intel核显QSV加速支持 视频和视频帧:Intel GPU&…

SpringCloud保姆级搭建教程四---Gateway

1、gateway干嘛用的呢? 答,系统保安,所有想访问系统的请求都要通过gateway2、来吧,开始吧。第一步,创建个模块,就叫gateway。创建模块的步骤,前面都贴过图哦3、添加依赖,在gateway模…

SSRF漏洞 | iwebsec

文章目录SSRF漏洞介绍00-SSRF漏洞验证01-SSRF漏洞文件读取02-SSRF漏洞内网探测03-SSRF漏洞内网应用攻击源码分析SSRF漏洞介绍 这篇文章写地很好。 SSRF(Sever-Side-Request-Forgery,服务端请求伪造)是一种由攻击者构造请求,由服…

【逐步剖C】-第六章-结构体初阶

一、结构体的声明 1. 结构体的基本概念 结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。结构体使得C语言有能力描述复杂类型。 如学生,有姓名、学号、性别等;如书,有作者,出版日期…

LeetCode-(94,144,145).二叉树的前中后续遍历

目录二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历二叉树的前序遍历 递归 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> list new ArrayList<>();dfs(root,list);return list;}public static void dfs(T…

C# JSON的使用实例和jsonNet程序包的安装

建一个txt文档&#xff0c;存放json内容[{"id":2,"name":"净化","damage":0},{"id":4,"name":"隐身","damage":10000},{"id":6,"name":"疾跑","damage&q…

出现failed to load steamui.dll如何解决?好的修复方法推荐

当你电脑突然出现failed to load steamui.dll的时候&#xff0c;你是否一脸懵逼&#xff1f;根本不知道发生啥时候&#xff0c;突然就会这样报错&#xff0c;其实造成这个原因&#xff0c;主要是因为问题出在steam上&#xff0c;我们还是有很多种方法可以解决的&#xff0c;今天…

OpenCV基础知识与基本操作

1 基本语法操作 1 读取图像 读取图像的如法如下 img cv2.imread(图像地址[,flags])cv2暂不支持读取中文路径&#xff0c;所以务必确认地址中不含中文。 flags为选填项&#xff0c;可以设置读取图片时的处理方式: cv2.IMREAD_UNCHANGED&#xff1a;-1&#xff0c;读入图像并…

一天一道力扣题

300. 最长递增子序列给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列…

es-04搜索和查询

文章目录搜索和查询查询的上下文查询语法1.Searchtimeout&#xff1a;2.ES常用查询&#xff1a;(1)Query_string&#xff1a;(2)Query DSL&#xff1a;(3)Full-text queries&#xff1a;全文检索(5)Query and filter&#xff1a;查询和过滤Deep paging图解Scroll search&#x…

Centos7基于docker搭建gitlab mysql tomcat

STEP1 搭建gitlab$ sudo yum install docker-ce $ sudo systemctl start docker搜索Gitlab镜像 并拉取$ docker search gitlab $ docker pull beginor/gitlab-ce:11.0.1-ce.0 //选择自己要安装的版本在服务器本地创建需要映射的文件 etc&#xff08;配置&#xff09; data&…

网关服务限流熔断降级分布式事务

目录一、网关服务限流熔断降级二、Seata--分布式事务1、分布式事务基础①事务②本地事物③分布式事务④分布式事务的场景2、分布式事务解决方案①全局事务②最大努力通知③TCC事务3、Seata介绍4、Seata实现分布式事务控制①案例基本代码&#xff08;异常模拟&#xff09;②启动…

机器学习调参

机器学习调参常用调参方法举例K邻近算法&#xff08;最常规版本&#xff09;加入交叉验证加上网格搜索GridSearchCV函数介绍GridSearchCVcross_val_score常用调参方法举例 sklearn使得我们在很多编写代码的时候更多的工作倾向于调参数而不是去写算法本身&#xff0c;本篇文章整…

HTML表单(属性/元素/输入类型/输入属性):看这一篇就够了

HTML表单 HTML 表单用于搜集不同类型的用户输入。 <form> 元素 HTML 表单用于收集用户输入。 <form> 元素定义 HTML 表单&#xff1a; 实例 <form>form elements</form> HTML 表单包含表单元素。 表单元素指的是不同类型的 input 元素、复选框、单…

maven 命令指定配置文件打包springboot项目

再开发过程中&#xff0c;通常用工具集成了maven&#xff0c;很少直接用maven命令操作打包&#xff0c;记不住&#xff0c;麻烦有时候工具也出现问题&#xff0c;只能用命令行下面很有必要记录一下这个过程我这里用idea编辑器&#xff0c;项目原因 打包本地配置环境可以&#x…

Oracle MAA 参考架构

文章目录总览青铜青铜 MAA 参考架构青铜特性青铜停机时间总结白银白银 MAA 参考架构白银特性白银停机时间总结黄金黄金 MAA 参考架构远程备库多备库备库读取器农场跨区域远程同步备库黄金特性黄金停机时间总结白金白金 MAA 参考架构白金特性白金停机时间总结参考文档总览 图1 …