news 2026/7/15 20:23:39

docker mysql主从安装-元一软件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 20:21:42

博客重构三次后的心得

我的博客叫「云深不知处」,跑了快一年了。今天想复盘一下:它做了三次重构,每次都改了什么、为什么改。 第一版:能跑就行 最早搭博客的时候,我只想三件事: 有自己的域名(blog.wuxiannet.com&am…

作者头像 李华
网站建设 2026/7/15 20:18:37

[计算机入门] 键盘分区与高效操作指南

1. 键盘分区基础认知 键盘作为人机交互的核心工具,其分区设计暗藏玄机。我第一次接触机械键盘时,曾对着密密麻麻的按键发懵——直到发现所有键盘都遵循着相似的分区逻辑。主键盘区占据中央位置,包含字母、数字和基础功能键;上方是…

作者头像 李华
网站建设 2026/7/15 20:18:35

STM32存储革新实战 SPI总线驱动FRAM MB85RS16实现高速数据记录

1. FRAM技术优势与MB85RS16特性解析在嵌入式系统开发中,数据存储方案的选择直接影响系统性能和可靠性。传统FLASH存储器虽然成本低廉,但其写入前必须擦除整个扇区的特性(通常4KB起步),导致实时数据记录时产生高达毫秒级…

作者头像 李华
网站建设 2026/7/15 20:18:24

手写C++17无锁发布-订阅框架:环形缓冲区与内存序实战

1. 项目概述:为什么一个“简单”的发布-订阅程序值得花一整天去写透在工业级机器人系统、自动驾驶中间件、实时金融行情分发,甚至现代嵌入式设备的固件更新机制里,“发布-订阅”(Publish-Subscribe)从来不是教科书里的…

作者头像 李华
网站建设 2026/7/15 20:14:03

从旋转矢量到频谱图:深入解析傅里叶变换在图像滤波中的核心原理

1. 傅里叶变换:从空间域到频域的魔法桥梁第一次听说傅里叶变换时,我完全无法理解为什么要把好好的图像变成一堆看不懂的"波纹"。直到后来在项目中尝试用它去除CT扫描图像中的噪声,才发现这个数学工具简直是图像处理的"瑞士军刀…

作者头像 李华
网站建设 2026/7/15 20:13:56

【ICer进阶指南】模拟IC设计:从理论到流片的艺术与工程实践

1. 模拟IC设计的艺术与工程本质 第一次接触模拟IC设计时,我被教科书上完美的公式推导和实验室示波器里跳动的波形之间的鸿沟震惊了。这个领域就像用晶体管作画的艺术家,既需要严谨的数学推导,又依赖工程师对电路"呼吸节奏"的直觉把…

作者头像 李华