Docker搭建Mysql8的主从复制
Docker搭建Mysql8的主从复制通过Docker部署Mysql主从复制Docker安装在前篇有直接演示拉取镜像# 获取有哪些镜像 docker search mysql # 拉取MySQL镜像 docker pull mysql:8.0.32 # 查看镜像 docker images主节点的配置创建数据存储目录mkdir -p /docker/mysql/master/data创建日志目录mkdir -p /docker/mysql/master/logs创建配置文件目录mkdir -p /docker/mysql/master/conf进行快速启动 - 查看镜像是否有问题 注不同的版本的配置文件位置不同可通过快速创建查看mysql的对应的配置文件位置进行对应映射。# 快速启动 -d是进行守护进程启动 docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0.32 # 启动成功后进入容器内部拷贝配置文件到宿主主机 docker cp mysql8:/etc/mysql /docker/mysql/master/conf # 删除刚才的容器重新创建容器 docker stop mysql8 docker rm mysql8运行容器docker run -p 3340:3306 --name mysql_master --privilegedtrue \ -v /docker/mysql/master/conf:/etc/mysql/conf.d \ -v /docker/mysql/master/logs:/var/log/mysql \ -v /docker/mysql/master/data:/var/lib/mysql \ -v /etc/localtime:/etc/localtime \ -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0.32 --init-connectSET collation_connectionutf8mb4_0900_ai_ci --init-connectSET NAMES utf8mb4 --skip-character-set-client-handshake进入容器docker ps -a docker exec -it mysql_master /bin/bash docker exec -it mysql_master env LANGC.UTF-8 /bin/bash # 进入容器这种进入避免显示中午乱码 # 打开MySQL输入密码 mysql -uroot -p # 查看数据库 show databases; # 创建数据库 create database 数据库; # 如果远程链接失败可以修改默认密码校验方式第三方工具可以连接上 ALTER USER root% IDENTIFIED WITH mysql_native_password BY 密码;配置远程连接对外连接的# 在MySQL下执行 use mysql; # 创建对外访问的用户和权限 CREATE USER 用户名% IDENTIFIED WITH mysql_native_password BY 密码; # 授权全部的权限范围大 # GRANT ALL ON *.* TO 用户名% WITH GRANT OPTION; # 刷新权限 FLUSH PRIVILEGES; # 退出 exit创建自定义的配置文件主服务器配置文件cd /docker/mysql/master/conf touch my.cnfmy.cnf文件内容[client] # mysql客户端默认字符集 default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] # 跳过密码登录 #skip-grant-tables #bind-address 127.0.0.1 init_connectSET collation_connection utf8mb4_general_ci init_connectSET NAMES utf8mb4 # mysql服务端默认字符集 character-set-serverutf8mb4 collation-serverutf8mb4_general_ci skip-character-set-client-handshake # datadir/var/lib/mysql # 主服务器唯一ID 默认是1 server-id1 # 设置不要复制的数据库 binlog-ignore-dbmysql binlog-ignore-dbinformation_schema binlog-ignore-dbperformance_schema # 设置需要复制的数据库先创建好 binlog-do-db数据库名 # 启用二进制日志日志的存放地址(默认是binlog)就是在show master status;看到Filed名字 log-bin/var/lib/mysql/mysql-bin # 主机1 只读 0 读写默认是0 read-only0 # 设置logbin格式 有3种格式 # STATEMENT(函数支持不好) 写指令会出现主从数据不同步now函数 # ROW(行模式大量修改效率不行但支持存储引擎) - 默认的 # MIXED (综合推荐) binlog_formatmixed ## 跳过主从复制中遇到的所有错误或指定类型的错误避免slave端复制中断。 ## 如1062错误是指一些主键重复1032错误是因为主从数据库数据不一致 slave_skip_errors1062 # 二进制日志过期清理时间默认是0不自动清理 expire_logs_days7 # 单个二进制日志大小 max_binlog_size200M # 设置每隔多少次事务提交操作将这些操作写入二进制日志文件 sync_binlog1 # 使用mysql_native_password插件的认证 # default_authentication_pluginmysql_native_password重启mysql容器docker ps -a docker restart 容器id创建用户并授权给从机主机创建用户# 连接上Mysql服务执行 create user 用户名% identified with mysql_native_password by 密码; # 授权复制的权限 ON后的*.*代表全部的库和表 GRANT REPLICATION SLAVE ON *.* TO 用户名%; # 刷新权限 FLUSH PRIVILEGES; # 如果远程链接失败可以修改默认密码校验方式第三方工具可以连接上 alter user 用户名% identified with mysql_native_password by 密码;查询主机的状态show master status; # 执行上面命令得到 File(binlog日志) Position(接入点) Binlog_Do_DB(要复制的数据库) Binlog_IgnoreDB() # 需要记录一下File、Position从节点配置创建数据目录mkdir -p /docker/mysql/slave/data创建日志目录mkdir -p /docker/mysql/slave/logs创建配置文件目录mkdir -p /docker/mysql/slave/conf创建自定义的配置文件cd /docker/mysql/slave/conf touch my.cnfmysql.cnf文件内容[client] # mysql客户端默认字符集 default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] # 跳过密码登录 #skip-grant-tables #bind-address 127.0.0.1 init_connectSET collation_connection utf8mb4_general_ci init_connectSET NAMES utf8mb4 # mysql服务端默认字符集 character-set-serverutf8mb4 collation-serverutf8mb4_general_ci skip-character-set-client-handshake # datadir/var/lib/mysql # 从服务器唯一ID server-id 2 # 开启中继日志 relay-logmysql-relay # 从机1 只读 0 读写默认是0 read-only1 # 启用二进制日志日志的存放地址如果从机变成主机可以继续使用bin日志 # log-binmysql-slave-bin # 使用mysql_native_password插件的认证 # default_authentiction_pluginmysql_native_password运行容器docker run -p 3341:3306 --name mysql_slave --privilegedtrue \ -v /docker/mysql/slave/conf:/etc/mysql/conf.d \ -v /docker/mysql/slave/logs:/var/log/mysql \ -v /docker/mysql/slave/data:/var/lib/mysql \ -v /etc/localtime:/etc/localtime \ -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0.32 --init-connectSET collation_connectionutf8mb4_0900_ai_ci --init-connectSET NAMES utf8mb4 --skip-character-set-client-handshake进入容器docker ps -a docker exec -it mysql_slave /bin/bash配置远程连接对外连接的# 打开MySQL输入密码 mysql -uroot -p # 查看数据库 show databases; # 创建数据库 create database 数据库; # 查看数据库 # 在MySQL下执行 use mysql; # 创建对外访问的用户和权限 CREATE USER 用户名% IDENTIFIED BY 密码; GRANT ALL ON *.* TO 用户名% WITH GRANT OPTION; FLUSH PRIVILEGES; # 退出 exit设置同步信息# 停止同步(之前配置过需要执行) stop slave; # 设置同步 CHANGE MASTER TO MASTER_HOST主机IP地址, MASTER_PORT端口, MASTER_USER主机用户,MASTER_PASSWORD主机用户的密码, MASTER_LOG_FILEbinlog日志名字, MASTER_CONNECT_RETRY30, MASTER_LOG_POS具体的接入点值; # MASTER_CONNECT_RETRY 是如果连接失败重试时间间隔默认60秒如果操作失败需要重新配置执行下面2个命令stop slave; # 停止同步操作 reset master; # 重置主从配置删除之前的中继日志会再生成一份新的开始同步start slave;检查是否成功show slave status \G; # 检查状态 # 如果结果下面的字段为Yes 代表配置成功 - Slave_IO_Running: Yes - Slave_SQL_Running: Yes停止和重置# 从机上执行停止I/O 线程和SQL线程的操作 stop slave; # 从机上执行用于删除SLAVE数据库的relaylog日志文件并重新启用新的relaylog文件 reset slave; # 主机上执行删除所有的binglog日志文件并将日志索引文件清空重新开始所有新的日志文件 reset master;验证# 从主机上创建表、插入SQL语句 # 创建表 CREATE TABLE emp ( id int(11) NOT NULL COMMENT 主键, name varchar(255) DEFAULT NULL COMMENT 员工名, age int(11) DEFAULT NULL COMMENT 年龄, did int(11) DEFAULT NULL COMMENT 部门id, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci COMMENT部门表; INSERT INTO emp (id, name, age, did) VALUES (1, 刘备, 55, 1); # 分别 在主机和从机进行查询该SQL语句 select * from emp; # 如都看到相同的数据代表成功常见问题启动主从同步后常见错误是Slave_IO_Running No 或者 Connecting的情况此时查看下方的Last_IO_ERROR错误日志根据日志中显示的错误信息在网上搜索解决方案即可一 常见错误Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: Client requested master to start replication from position file size解决-- 在从机停止slave SLAVE STOP; -- 在主机查看mater状态 SHOW MASTER STATUS; -- 在主机刷新日志 FLUSH LOGS; -- 再次在主机查看mater状态会发现File和Position发生了变化 SHOW MASTER STATUS; -- 修改从机连接主机的SQL并重新连接即可二启动docker容器后提示WARNING: IPv4 forwarding is disabled. Networking will not work.解决#修改配置文件 vim /usr/lib/sysctl.d/00-system.conf #追加 net.ipv4.ip_forward1 #接着重启网络 systemctl restart network

相关新闻

字典码值映射实战:注解式实现与多方案全对比

字典码值映射实战:注解式实现与多方案全对比

在后端开发(尤其企业级项目如城市轨道系统)中,经常遇到“数据库存码值、前端显名称”的场景。比如你提到的:用01表示“简单”、02表示“普通”,数据库存储degree字段(码值),接口返回…

2026/7/10 13:46:28 阅读更多 →
考虑晶圆尺寸与负载,如何选择合适的HIWIN晶圆搬运机械手?

考虑晶圆尺寸与负载,如何选择合适的HIWIN晶圆搬运机械手?

在半导体、LED等精密制造领域,晶圆搬运机械手的选型往往直接影响产线效率和产品良率。尤其是当涉及不同尺寸的晶圆和多样的负载需求时,选对机型就像给设备配了“合身的骨骼”,既不能“小马拉大车”,也不能“大材小用”。作为深耕行…

2026/7/10 8:42:50 阅读更多 →
使用postgresql、postgis数据库作为存储仓库,发布geoserver矢量切片服务(pbf切片)、矢量切片图层组服务

使用postgresql、postgis数据库作为存储仓库,发布geoserver矢量切片服务(pbf切片)、矢量切片图层组服务

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏: gis工程师 文章目录一、🍀前言1.1 ☘️GeoServer、pbf矢量切片扩展安装1.2…

2026/7/10 8:40:42 阅读更多 →

最新新闻

(8-2)Bellman-Ford算法的局限性与改进

(8-2)Bellman-Ford算法的局限性与改进

Bellman-Ford算法的局限性与改进

2026/7/10 13:45:25 阅读更多 →
Obsidian表格插件终极指南:5个技巧实现笔记数据管理革命

Obsidian表格插件终极指南:5个技巧实现笔记数据管理革命

Obsidian表格插件终极指南:5个技巧实现笔记数据管理革命 【免费下载链接】obsidian-excel 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-excel 在知识管理领域,Obsidian表格插件正在彻底改变我们处理结构化数据的方式。这款强大的工具…

2026/7/10 13:43:24 阅读更多 →
Android Studio中文语言包终极指南:3分钟打造全中文开发环境

Android Studio中文语言包终极指南:3分钟打造全中文开发环境

Android Studio中文语言包终极指南:3分钟打造全中文开发环境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 你是否曾…

2026/7/10 13:41:20 阅读更多 →
SDXL概念流形技术:低计算成本实现生成图像精准操控

SDXL概念流形技术:低计算成本实现生成图像精准操控

这次我们来看一个关于SDXL模型的重要发现:概念流形(Concept Manifold)的识别与应用。这个发现的核心价值在于,它让我们能够用极低的计算成本实现对生成结果的精准操控,为SDXL模型的实用化打开了新的可能性。如果你正在…

2026/7/10 13:37:16 阅读更多 →
如何完全掌控微信聊天记录:3个简单步骤实现永久保存的终极指南

如何完全掌控微信聊天记录:3个简单步骤实现永久保存的终极指南

如何完全掌控微信聊天记录:3个简单步骤实现永久保存的终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…

2026/7/10 13:33:05 阅读更多 →
如何快速掌握LaTeX科学图表绘制:面向研究者的154个专业图表资源库

如何快速掌握LaTeX科学图表绘制:面向研究者的154个专业图表资源库

如何快速掌握LaTeX科学图表绘制:面向研究者的154个专业图表资源库 【免费下载链接】tikz Diagrams of concepts in physics/chemistry/ML 项目地址: https://gitcode.com/gh_mirrors/tikz/tikz 你是否曾经为学术论文或技术文档中的图表绘制而烦恼&#xff1f…

2026/7/10 13:33:05 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器,配合STM32F101ZG这类主流微控制器,能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器,与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻