当前位置: 首页 > news >正文

docker mysql主从安装-元一软件

1. 首先拉去镜像

docker pull mysql:5.7

2. 运行镜像

主要将日志 存储文件, 配置文件 映射到主机上

docker run-p13307: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 \-eMYSQL_ROOT_PASSWORD=123456\-d mysql:5.7[root@basenode~]# docker run-p13307: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 \>-eMYSQL_ROOT_PASSWORD=123456\-d mysql:5.776176e5ae29317ea207080be62aeffadaada4c82c03753d2c500916449d6476e[root@basenode~]#

3. 主节点创建配置文件并且添加内容如下

1.目录:/mydata/mysql-master/cnf[root@basenodeconf]# vi 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

4. 添加完配置后重启mysql

[root@basenodeconf]# docker restart mysql-master mysql-master[root@basenodeconf]#

5. 进入到mysql 容器内部

# 进入到容器 docker exec-it mysql-master/bin/bash # 登录mysql mysql-uroot-p123456

6. 创建同步用户

6.1 创建用户命令:

mysql>CREATEUSER'slave'@'%'IDENTIFIEDBY'123456';QueryOK,0rows affected(0.01sec)mysql>GRANTREPLICATIONSLAVE,REPLICATIONCLIENTON*.*TO'slave'@'%';QueryOK,0rows affected(0.00sec)mysql>

7. 创建从服务器

[root@basenode~]# docker run-p13308: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 \>-eMYSQL_ROOT_PASSWORD=123456\>-d mysql:5.7230880d2ab8c53351656ceb3998e28595dcd5af28879de3755cf6c6993b0879d[root@basenode~]#

8. 从节点创建配置文件并且添加内容如下

[root@basenode~]# cd/mydata/mysql-slave/cnf[root@basenodeconf]# vi 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

9. 重启从节点

[root@basenodeconf]# docker restart mysql-slave mysql-slave[root@basenodeconf]#

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

mysql>show master status;+-----------------------+----------+--------------+------------------+-------------------+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|+-----------------------+----------+--------------+------------------+-------------------+|mall-mysql-bin.000001|154||mysql||+-----------------------+----------+--------------+------------------+-------------------+1row in set(0.00sec)mysql>

11. 进入从数据库

[root@basenodeconf]# docker exec-it mysql-slave/bin/bash root@230880d2ab8c:/# mysql-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or \g.YourMySQLconnection id is2Serverversion:5.7.36-logMySQLCommunityServer(GPL)Copyright(c)2000,2021,Oracleand/or itsaffiliates.Oracleis a registered trademark ofOracleCorporationand/or itsaffiliates.Othernames may be trademarks of their respectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthe current input statement.mysql>show databases;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||sys|+--------------------+4rows in set(0.00sec)mysql>

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;

mysql>change mastertomaster_host='192.168.1.180',master_user='slave',master_password='123456',master_port=13307,master_log_file='mall-mysql-bin.000001',master_log_pos=154,master_connect_retry=30;QueryOK,0rows affected,2warnings(0.00sec)mysql>

13. 在从节点上开启主从同步

mysql>start slave;

14 查看 从节点的状态

mysql>show slave status \G;***************************1.row***************************Slave_IO_State:WaitingformastertosendeventMaster_Host:192.168.1.180Master_User:slaveMaster_Port:13307Connect_Retry:30Master_Log_File:mall-mysql-bin.000001Read_Master_Log_Pos:154Relay_Log_File:mall-mysql-relay-bin.000002Relay_Log_Pos:325Relay_Master_Log_File:mall-mysql-bin.000001Slave_IO_Running:YesSlave_SQL_Running:YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno:0Last_Error:Skip_Counter:0Exec_Master_Log_Pos:154Relay_Log_Space:537Until_Condition:NoneUntil_Log_File:Until_Log_Pos:0Master_SSL_Allowed:NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master:0Master_SSL_Verify_Server_Cert:NoLast_IO_Errno:0Last_IO_Error:Last_SQL_Errno:0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id:101Master_UUID:9eedd539-7601-11ec-93ac-0242ac110005Master_Info_File:/var/lib/mysql/master.infoSQL_Delay:0SQL_Remaining_Delay:NULLSlave_SQL_Running_State:Slavehas read all relay log;waitingformore updatesMaster_Retry_Count:86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position:0Replicate_Rewrite_DB:Channel_Name:Master_TLS_Version:1row in set(0.00sec)ERROR:Noquery specified mysql>

主要出现 两个都位yes 就表示成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

15 测试成功

docker-mysql 主从.png

http://www.cnnetsun.cn/news/3408578.html

相关文章:

  • 博客重构三次后的心得
  • [计算机入门] 键盘分区与高效操作指南
  • STM32存储革新实战 SPI总线驱动FRAM MB85RS16实现高速数据记录
  • 手写C++17无锁发布-订阅框架:环形缓冲区与内存序实战
  • 从旋转矢量到频谱图:深入解析傅里叶变换在图像滤波中的核心原理
  • 【ICer进阶指南】模拟IC设计:从理论到流片的艺术与工程实践
  • CC1020窄带射频收发器电路设计与PCB布局实战指南
  • TDA2E-17外设引脚配置实战:从架构解析到PCB设计避坑指南
  • Long — 中小学生综合 Web 学习平台
  • DNS协议实战:从报文捕获到权威解析【头歌】
  • ChatGPT写周报月报:从“凑字数”到“领导主动转发”的5步质变法(附可即用Prompt库)
  • 【项目实战】金融风控之信用评分卡模型
  • ubuntu22.04 ROS2 humble slam and navigation
  • 【Cortex-M内核篇】--复位向量表:从硬件加载到软件执行的启动密码
  • 顺义鼻咽喉气道哮喘中医特色诊疗医生列表
  • 具身智能:定义、特征与原理详解(7)
  • Java包管理与字符串操作实战:从项目结构到数据处理
  • 零代码搭建业务语义网络,业务人员也能参与企业知识建模
  • 【C++】从内存布局到精度取舍:深入解析float与double的底层差异
  • 每天认识一种投资品类:股票
  • 毕设项目分享 深度学习yolo11垃圾分类系统(源码+论文)
  • 硕士 / 博士论文能用免费查重吗?不收录文稿、准确度高的正规平台实测盘点
  • CVE-2025-59828漏洞解析:AI编码工具信任边界绕过与Yarn插件安全风险
  • PilotGo-plugin-container与其他容器监控工具对比:为什么它更适合你?
  • C++面向对象编程实践:用类封装计算器核心逻辑
  • TK1终端优化五步法:从卡顿到秒响应的实操指南
  • 国产代码大模型CLI工具选型与本地化实践指南
  • Qt/C++源码/地图控件/实时动态轨迹/历史轨迹回放/航线规划/性能强悍
  • 使用llama.cpp量化部署DeepSeek模型:从PyTorch到GGUF的完整实践
  • Python太阳系模拟器:Pygame实现动态天体与交互式知识展示