docker部署mysql主从复制篇

news/2024/11/20 19:39:57/

环境准备:docker服务安装,mysql镜像

配置文件方式:可以挂载目录,也可以写好配置文件,利用docker cp 到容器内,这里直接在启动镜像创建容器时候挂载目录方式
服务器上配置文件内容(下图标红路径):

新建目录和配置文件  ,配置文件内容参考

/root/master/conf/my.cnf复制如下内容---主库

[mysqld]
## 同一局域网内注意要唯一
server-id=1024#这里是复制其他人的,感觉应该是server_id,后边报错主从service_id重复可能就是这个原因,先不管
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
secure_file_priv=/var/lib/mysql
default_authentication_plugin=mysql_native_password  #设置密码规则
#default_authentication_plugin=caching_sha2_password
max_connections=1000 #最大连接数设置 根据实际需要 自行调整

/root/slave/conf/my.cnf复制内容如下--从库

[mysqld]
## 设置server_id,注意要唯一
server-id=1022 
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
secure_file_priv=/var/lib/mysql
default_authentication_plugin=mysql_native_password  #设置密码规则
max_connections=1000 #最大连接数设置 根据实际需要 自行调整

创建容器,挂载配置文件

docker run --name master -p 3339:3306  \
 -v "$PWD/master/conf/my.cnf":/etc/mysql/my.cnf \
 -v "$PWD/master/data":/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

docker run --name slave -p 3340:3306 \
 -v "$PWD/slave/conf/my.cnf":/etc/mysql/my.cnf \
 -v "$PWD/slave/data":/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

利用navicat测试链接,用户root,密码123456

确保主从数据库都可正常访问即可,

1-在客户端命令行页面(主库)建用户,授权

CREATE USER 'slave'@'%' IDENTIFIED with mysql_native_password BY '123456';

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

2-查看主库的参数,稍后需要在从库里面配置,show master status;

3-主库容器IP地址

回到linux服务器,执行命令查看master容器的ip地址-

docker inspect --format={{.NetworkSettings.IPAddress}} master

三个参数:ip,file,position得值获取后,链接从库的命令行模式

 change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='binlog.000006', master_log_pos=1349, master_connect_retry=30;

配置好以后,启动  

start slave;

4-切换服务器从库容器内,查看状态信息

show slave status \G;

下面没有报错信息,切红色框内值是yes表示启动成功。如果有错误日志,根据日志修改(后面有介绍,然后stop slave,reset slave,start slave,停止,重置,启动,注意观察主库的三个参数是否有变化。从库change里的ip,file,pos要对应上。

测试方法:主库新建数据库或表,刷新从库看是否同步,如果同步表示mysql主从复制搭建完毕。

------------------------------------------------------------------------------------------------------------------------------

遇到的问题:主从数据库的service_id相同导致错误,修改从数据库的id值即可

报错日志:

Last_IO_Error: Fatal error: The replica I/O thread stops because source and replica have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on replica but this does not always make sense; please check the manual before using it).

解决办法:主service_id

从service_id 

设置完重启测试,

测试:主数据创建数据库aaa,刷新从数据库,可以看到aaa数据库已同步

参考:基于docker的Mysql主从数据库配置_docker mysql 主从配置-CSDN博客


http://www.ppmy.cn/news/1295421.html

相关文章

编译原理复习的有用链接

2024年1月7日,考完编译原理,是时候和考试时候的她说再见了,整理一些收藏夹里的链接和思考吧 实验看这里: 编译原理_HNU岳麓山大小姐的博客-CSDN博客 课后习题看这里: 编译原理作业答案github LL1文法复习 [编译原…

【KD】知识蒸馏(knowledge distillation)简单介绍

最近学到了知识蒸馏的相关知识,来简单总结一下૮꒰ ˶• ༝ •˶꒱ა。 知识蒸馏 知识蒸馏,是一种模型压缩的手段。通过训练学生模仿教师的行为,将嵌入在大的教师模型中的知识迁移到小的学生模型。 例如,TinyBERT(Jiao et al.,2…

C语言之详解数组【附三子棋和扫雷游戏实战】

文章目录 一、一维数组的创建和初始化1、数组的创建2、数组的初始化3、一维数组的使用4、 一维数组在内存中的存储 二、二维数组的创建和初始化1、二维数组的创建2、二维数组的初始化3、二维数组的使用4、二维数组在内存中的存储 三、数组越界边界值考虑不当导致越界访问数组大…

智能寻迹避障机器人设计(第一章)

1 绪论 1.1 研究背景及意义 伴随着社会经济的日益发展,汽车价格时续走低,汽车便成了人们出行工具的首先。汽车的使用总量也逐年创新高,因而交通拥堵情况随处可见,撞车事件时常发生,造成的人员伤亡数不胜数。根据不完…

C#,入门教程(10)——常量、变量与命名规则的基础知识

上一篇: C#,入门教程(09)——运算符的基础知识https://blog.csdn.net/beijinghorn/article/details/123908269 C#用于保存计算数据的元素,称为“变量”。 其中一般不改变初值的变量,称为常变量,简称“常量”。 无论…

力扣(leetcode)第459题重复的子字符串(Python)

459.重复的子字符串 题目链接:459.重复的子字符串 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 示例 2: 输入: s “aba” 输出: false 示例 …

申请域名SSL证书并自动推送至阿里云 CDN

近期国外SSL证书厂商调整了免费证书的续签规则,一年期的证书全部取消,现在只能申请90天有效期的免费证书。普通web站点可以通过宝塔面板或部署acme.sh等证书自动管理工具来实现自动化申请和部署,但是阿里云之类的CDN服务就只能通过手动或Open…

Unity SVN更新提交小工具

Unity SVN更新提交小工具 前言使用说明必要前提源码参数说明 感谢 前言 Unity开发时每次都要到文件夹中操作SVN,做了一个小工具能够在Editor中直接操作。 使用说明 必要前提 前提是要安装好SVN,在文件夹右键能够看到安装的SVN 源码 using System…