Docker之mysql主从复制

ops/2024/12/17 15:50:39/

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

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

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

1.3 修改完配置后重启master实例

​​​​​​​​​​​​​​docker restart mysql-master

1.4 ​​​​​​​进入mysql-master容器

​​​​​​​docker exec -it mysql-master /bin/bash

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

​​​​​​​mysql -uroot -proot

​​​​​​​CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

 1.6 ​​​​​​​新建从服务器容器实例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.7  进入/mydata/mysql-slave/conf目录下新建my.cnf

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.8 修改完配置后重启slave实例 

​​​​​​​​​​​​​​docker restart mysql-slave

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

show master status;

 

2.1 ​​​​​​​进入mysql-slave容器

​​​​​​​docker exec -it mysql-slave /bin/bash

2.2 ​​​​​​​在从数据库中配置主从复制

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

注意:  master_log_file和master_log_pos要和show master status的参数保持一致

​​​​​​​主从复制命令参数说明

master_host:主数据库的IP地址;

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

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

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

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

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

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

2、查看slave状态

2.1 show slave status \G;

 注意:这个状态代表slave还没有启动

2.2 ​​​​​​​在从数据库中开启主从同步

start slave; 

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

3、​​​​​​​主从复制测试

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

3.2 从机使用库-查看记录

 

 

 


http://www.ppmy.cn/ops/142676.html

相关文章

活着就好20241217

亲爱的朋友们,大家早上好!🌞 今天是17号,星期二,2024年12月的第十七天,同时也是第50周的第八天,农历甲辰[龙]年十一月初十三日。在这晨光熹微的美好时刻,愿那温暖而明媚的阳光轻轻拂…

nVisual关于钉钉小程序打开项目及调试说明

关于钉钉小程序开发者工具的使用对于没有接触过的人可能比较陌生。如果需要部署钉钉小程序是需要对钉钉小程序开发者工具有一定的了解的,需要在此做部分上线前的测试及在开发者工具中上传项目包,故此做部分工具的解释。 分三部分来进行解释:…

QT图形/视图架构详解(一)

场景、视图与图形项 图形/视图架构主要由 3 个部分组成,即场景、视图和图形项,三者的关系如图所示: 场景、视图和图形项的关系 场景(QGraphicsScene 类) 场景不是界面组件,它是不可见的。场景是一个抽象的…

网络安全—认证技术

通过了解以前前辈们使用的消息认证慢慢渐进到现代的完整的认证体系。所以在学习的时候也很蒙圈,因为前期的很多技术都是有很严重的不可靠性,因此本篇用作加深理解认证技术的发展史还有到目前为止完整的不可抵赖的认证体系是如何形成的,并且了…

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之复合运算符

(一)、复合运算符 在C中,可以通过“赋值语句”来修改变量的值。赋值语句的格式: 变量名 值或者表达式;其中""称为"赋值运算符"。 除此之外,在赋值运算符当中,C有复合赋…

网络安全协议之比较(SSH、PKI、SET、SSL)

一、SSH介绍 什么是SSH?   传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据, 别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的…

MySQL笛卡尔积

MySQL的笛卡尔积是通过将两个表的所有行组合生成的结果集。它是一种比较耗时的操作,因此通常建议在实际应用中尽量避免使用笛卡尔积。 在MySQL中,可以通过使用CROSS JOIN来实现笛卡尔积。例如,假设有两个表A和B,可以使用以下语法…

Linux 网络流量控制 - 实现概述

摘要 Linux 提供了一整套丰富的流量控制(traffic control)功能。本文档概述了相应的内核代码设计,描述了其结构,并通过描述一种新的排队策略来说明新元素的添加。 1 引言 最近的Linux内核提供了多种流量控制功能。Alexey Kuznetsov(kuznet…