一个docker配置mysql主从服务器

news2025/1/12 6:16:48

        这也就是因为穷,不然谁用一个docker配置主从,哈哈

        既然成功了就记录下。过程挺折磨人的。

        首先要保证你的电脑安装好了docker

        为了保证docker当中主从能正常连网,现在docker里面创建一个网络环境

        docker network create --driver bridge mysql_network
        有了这个网络环境,启动主服务器

        docker run --name mysql-master  -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306  -v /my/custom:/etc/mysql/conf.d  -d --net mysql-net mysql --server-id=1  --log-bin=mysql-bin 

        注意要在宿主机的/my/custom 做如下配置:

文件名称: my.cnf 
   文件内容:

 [mysqld]
server-id=1  
log-bin=mysql-bin  
 #binlog-do-db=mytest,mytest1

启动完主,再启动从服务器

docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 -d --net mysql-net mysql --server-id=2 --relay-log=mysql-relay-bin --log-bin=mysql-bin --replicate-do-db=mytest,mytest1 

        注意我后来把replicate-do-db=mytest,mytest1 删了,因为无法正常同步,具体原理不清楚。

        从服务器启动之后要进入到容器当中继续配置:

        docker exec -it mysql-slave mysql -u root -p

        进入容器之后首先要执行change命令

        CHANGE MASTER TO MASTER_HOST='内网ip', MASTER_PORT=3307, MASTER_USER='root', MASTER_PASSWORD='123456'

        再启动主从同步线程:

        start slave;

        最后执行 show slave status\G命令查看从服务器的同步信息

          show slave status \G;\
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 
                  Master_User: root
                  Master_Port: 3307
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 112240
               Relay_Log_File: mysql-relay-bin.000004
                Relay_Log_Pos: 112457
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 112240
              Relay_Log_Space: 3153052
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: cd8a2dba-014e-11ef-9085-0242ac1a0002
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           Master_Retry_Count: 10
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
       Master_public_key_path: 
        Get_master_public_key: 0

        这里面包含了主从同步目前的状态。

        好了,其实就完事儿了,但是我可是捣鼓了好半天。遇到了好多问题。

        首先就是 docker 拉取mysql8.3的镜像之后,里面没有mysqlbinlog工具,所以无法看到binlog日志。别问我为啥子要看这玩意,还不是主数据库应该同步的库没写到binlog里面来。从镜像里面安装不会,后来就捣鼓着在宿主机上安装一个mysql8.0,里面有mysqlbinlog工具,然后用docker cp将binglog日志直接拖出来到宿主机上不就能看到了么

        安利这篇让我在centos上成功按照好了mysql 8.0

在CentOS 7上安装MySQL 8.0_centos7安装mysql8.0gpg密钥-CSDN博客

docker cp 容器id/名词:/var/lib/mysql/mysql-bin.000002 /root/slave

将文件从容器当中拿出来

mysqlbinlog mysql-bin.000001 >> 1.txt 查看binlog日志内容

我的binlog的格式是ROW(行类型),其中的数据就如下所示:

        

BINLOG '
0XYnZhMBAAAAOwAAAA1ZLgAAAGgAAAAAAAEABW15c3FsAAl0aW1lX3pvbmUAAgP+AvcBAAEBgNAd
1b4=
0XYnZh4BAAAAKQAAADZZLgAAAGgAAAAAAAEAAgAC/wD8BgAAAdAQ3O8=
'/*!*/;
# at 3037494
#240423 16:52:33 server id 1  end_log_pos 3037561 CRC32 0x06fff819      Table_map: `mysql`.`time_zone_name` mapped to number 105
# has_generated_invisible_primary_key=0
# at 3037561
#240423 16:52:33 server id 1  end_log_pos 3037611 CRC32 0xe80cee9a      Write_rows: table id 105 flags: STMT_END_F

我遇到问题众多,所以学习到了一些命令,分享给大家方便查看。

        在docker当中binlog大概率都在/var/lib/mysql文件夹当中

        在mysql命令行执行下命令查看binlog日志地址:

        show variables like 'datadir';

        如果要做主从同步那么binlog的类型不能是Mix,可以通过下面的命令查看当前数据库设置了啥类型:

        SHOW VARIABLES LIKE 'binlog_format';

        如果要做主从同步,主库的binlog开关一定要开启

        SHOW VARIABLES LIKE 'log_bin';

        查看主库日志,能够看到一共有哪些binlog日志:

        show master logs;

        

        查看主库状态,能够看到当前

        show master status;


        在mysql数据库客户端也可以直接查看binlog大概信息。        

        show binlog events in 'mysql-bin.000001';

        show binlog events in 'mysql-bin.000002' from 2 limit 2,10;

 

        好了好了,有啥问题可以留言,没有解散,哈哈~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1635697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++-9

C 1.已知C风格的字符串,完成对字符串通过下标访问时的异常处理机制(越界访问) 2.写一个程序,程序包含两个类,类中实现一个成员函数,MyGetChar(), 类A中每调用一 次,按顺序得到一个数字字符,比如第-次调用得…

社交论坛问答发帖系统源码-java+vue+uniapp开发前后端

源码说明: 前后端分离社交论坛问答发帖BBS源码,社交论坛小程序|H5论坛。 下 载 地 址 : runruncode.com/php/19462.html 该项目是一个使用Java、Vue和Uniapp开发的前后端分离的社交论坛问答发帖/BBS项目。它包括了论坛图文帖、视频、圈子…

新唐的nuc980/nuc972的开发1-环境和源码同步

开发环境安装 1.1更新源 服务器端:可以参考:Linux替换清华源_更改清华源-CSDN博客 下面是桌面端的方法: 打开系统的软件中心,选择自己想要使用的源 更新缓存 1.2安装必须的库 apt-get install patch apt-get install libc6-dev …

SQL提升

1. SQL TOP 子句 TOP 子句用于规定要返回的记录的数目。 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。 **注释:**并非所有的数据库系统都支持 TOP 子句。 1.1 SQL TOP 语法 SQL Server 的语法: SELECT TOP number|percent c…

C#基础|了解对象在程序中的状态及垃圾回收机制

哈喽,你好啊,我是雷工! 本节了解对象的生命周期及对象状态和垃圾回收机制,以下为学习笔记。 1、对象的生命周期 对象在内存中不断地被引用,被释放,形成了类似生命周期的过程。 2、对象在内存中的状态 对…

记一次生产事故的排查和解决

一. 事故概述 春节期间, 生产系统多次出现假死不可用现象, 导致绝大部分业务无法进行. 主要表现现象为接口无法访问. 背景为900W客户表和近实时ES, 以及春节期间疫情导致的普通卖菜场景近似秒杀等. 二. 排查过程 优先排查了info, error, catalina日志, 发现以下异常: 主要的…

一文掌握Vue依赖注入:原理、应用场景以及最佳模块化与单元测试实践,提升代码的可维护性与模块化程度

Vue 中的依赖注入(Dependency Injection, DI)机制通过 provide 与 inject API,实现了跨组件层级间的数据与服务透明传递,使父组件能够向其任意深度的子孙组件“注入”依赖,而不需要通过层层传递 props 或使用全局状态管…

搭建智能客服机器人设计流程

一、检索型机器人FAQ-Bot 在客服处理的问题中70%都是简单的问答业务,只要找到QA知识库中与用户当前问句语义最相近的标准问句,取出答案给用户就可以了。FAQ-Bot就是处理这类问题的。在没有使用深度学习算法之前,通常采用检索NLP技术处理。 …

如何用智能获客开启新商机?揭秘赢销侠软件的奇效

在当今数字化竞争日益激烈的商业环境中,企业为了生存和发展,必须寻找新的途径以获取潜在客户。智能获客作为一种新型的营销方式,正以其高效、精准的特点改变着传统的市场开拓模式。而在这个过程中,自动获客软件的作用愈发凸显&…

HTML:元素分类

HTML:元素分类 概述块级元素(Block-level Elements)内联元素(Inline Elements)替换元素(Replaced Elements)表单元素(Form Elements) 概述 HTML(HyperText M…

Mysql从入门到精通——Mysql知识点总结(基础篇)

参考视频 黑马程序员 MySQL数据库入门到精通i 题单推荐 入门 进阶 SQL语句类型 DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)DML:数据操作语言,对数据库表中的数据进行增删改DQL:数据查询语言,用来查询数据库中表的…

拓云启航 移动云全网型经销渠道合作伙伴火热招募

2024年4月28日至29日,2024中国移动算力网络大会在苏州召开。28 日下午大会主论坛现场,中国移动发布移动云全新万象算力网络生态合作计划,加速算力网络新质生产力落地。后续,移动云将依托“拓云计划”,招募超万家渠道伙…

JAVA前端快速入门基础_javascript入门(03)

写在前面:本文用于快速学会简易的JS,仅做扫盲和参考作用 本章节主要介绍JS的事件监听 1.什么是事件监听 事件:是指发生在HTML端的事件,主要指以下几种。 1.按钮被点击 2.鼠标移动到元素上 3.按到了键盘 事件监听:当触发了事件时,JS会执行相…

自动驾驶 | 仿真测试-HiL测试全解析

1.HiL 的定义 HiL(Hardware-in-the-Loop)硬件在环是计算机专业术语,也即是硬件在回路。通过使用 “硬件在环”(HiL) ,可以显著降低开发时间和成本。在过去,开发电气机械元件或系统时,使用计算机仿真和实际的实验就已经…

C语言【动态内存】

1.为什么要有动态内存 我们现在掌握的内存开辟方法有: int val 20;//在栈空间开辟4个字节 char str[10]{0};//在栈空间开辟10个字节的连续的空间但是上述的方式有两个点要注意: 1.空间开辟的大小是固定的 2.数组在申明的时候,一定要指定数…

上位机图像处理和嵌入式模块部署(树莓派4b利用驱动实现进程数据共享)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们讨论过,目前在linux系统上面有很多办法可以实现多进程数据共享。这里面比如说管道,比如说共享内存,比如…

Electron开发 umi react 应用

Electron 是一个跨平台桌面端的应用框架,electron 底层依赖3 个核心组件 Chromium、Node.js、Electron API,Chromium 是 Chrome 的开源版本,Node.js可以编写后台应用程序,集成 Node.js 到 Electron,使得 Electron 可以…

21.哀家要长脑子了!

1.21. 合并两个有序链表 - 力扣(LeetCode) 我做过啊,为什么还是不能独立做出来,为什么为什么啊啊啊 嘻嘻奔向五一 是这样的: 要按升序连接,以链表2头结点作为开端,哪个小就先连接哪个&#xff…

75、堆-前K个高频元素

思路 这道题还是使用优先队列,是要大根堆,然后创建一个类,成员变量值和次数。大根堆基于次数排序。前k个就拿出前k的类的值即可。代码如下: class Solution {public int[] topKFrequent(int[] nums, int k) {if (nums null || …

半导体机台文件导出,如何实现统一管理减轻运维压力?

半导体机台在半导体制造过程中会产生多种数据,这些数据对于设备的运行、监控、优化和故障诊断等方面都具有重要意义。以下是半导体机台可能产生的一些主要数据类型: 工艺控制数据:这包括在制造过程中的各个工艺步骤(如光刻、蚀刻、…