一个docker配置mysql主从服务器

        这也就是因为穷,不然谁用一个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.mzph.cn/news/827733.shtml

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

相关文章

面试八股——RabbitMQ

消息丢失问题 消息确认机制 生产者与MQ之间的消息确认: 当MQ成功接收消息后,会返回给生产者一个确认消息。如果在规定时间内生产者未收到确认消息,则任务消息发送失败。 MQ与消费者之间的消息确认: 当MQ成功接收消息后&#…

DeepFaceLab小白教程:视频换脸过程

合适那些人阅读? 适合从未使用过DeepFaceLab的群体。 如果你想基于DeepFaceLab完成一次视频换脸的操作,可以看本篇。 下载方式 GitHub https://github.com/iperov/DeepFaceLab 我是用motrix下载。 网盘 https://pan.baidu.com/share/init?surlO4…

鸿蒙(HarmonyOS)性能优化实战-Swiper高性能开发

背景 在应用开发中,Swiper 组件常用于翻页场景,比如:桌面、图库等应用。Swiper 组件滑动切换页面时,基于按需加载原则通常会在下一个页面将要显示时才对该页面进行加载和布局绘制,这个过程包括: 如果该页面…

nest使用swagger文档

OpenAPI(Swagger)规范是一种用于描述 RESTful API 的强大定义格式。 Nest 提供了一个专用模块来使用它。 安装 npm安装 npm install --save nestjs/swagger swagger-ui-expressyarn 安装 yarn add nestjs/swagger swagger-ui-express引入 使用 SwaggerModule 类初始化 Swa…

【Hadoop】-Hive初体验[13]

Hive体验 预先确保已经完成部署Hive,并启动了Metastore服务 可以执行:bin/hive,进入到Hive Shell环境中,可以直接执行SQL语句。 创建表 create table test(id int,name string,gender string); 插入数据 INSERT INTO test val…

Golang基础2-Array、Slice、Map

Array 数组 var a [5]int b:[5]int{} c:[...]int{}这样格式定义var a[5]int 和var a[10]int是不同类型从0开始下标&#xff0c;到len(a)-1遍历方式&#xff1a; for i : 0; i < len(a); i { }for index, v : range a { } 注意越界问题&#xff0c;panic值类型&#xff0c;…

密码学 | Schnorr 协议:零知识身份证明和数字签名

&#x1f955;原文&#xff1a; Schnorr 协议&#xff1a;零知识身份证明和数字签名 &#x1f955;写在前面&#xff1a; 本文属搬运博客&#xff0c;自己留存学习。文中的小写字母表示标量&#xff0c;大写字母表示椭圆曲线中的点。 1 Schnorr 简介 Schnorr 由德国数学家和密…

windows系统下python开发工具安装

一. 简介 前一篇文章学习了安装 python解释器&#xff0c;文章如下&#xff1a; windows系统下python解释器安装-CSDN博客 本文来学习如何下载安装 python开发工具 PyCharm。 二. python开发工具 PyCharm下载安装 1. PyCharm官网 PyCharm开发工具 PyCharm为 python代码…

Llama网络结构介绍

LLaMA现在已经是开源社区里炙手可热的模型了&#xff0c;但是原文中仅仅介绍了其和标准Transformer的差别&#xff0c;并没有一个全局的模型介绍。因此打算写篇文章&#xff0c;争取让读者不参考任何其他资料把LLaMA的模型搞懂。 结构 如图所示为LLaMA的示意图&#xff0c;由…

域名被污染了只能换域名吗?

域名污染是指域名的解析结果受到恶意干扰或篡改&#xff0c;使得用户在访问相关网站时出现异常。很多域名遭遇过污染的情况&#xff0c;但是并不知道是域名污染&#xff0c;具体来说&#xff0c;域名污染可能表现为以下情况&#xff1a;用户无法通过输入正确的域名访问到目标网…

Windos环境下配置免费SSL证书详细步骤

获取免费证书 配置本机模拟域名 打开如下目录&#xff0c;hosts文件 C:\Windows\System32\drivers\etc 添加如下配置并保存 127.0.0.1 im.test.com下载安装 OpenSSL 下载链接 进入bin目录&#xff0c; 打开cmd窗口 执行如下命令&#xff0c;生成RSA私钥 ## 使用des3…

大型集团企业 怎么实现多区域文件交换?

很多大型集团企业&#xff0c;都会在全国各地&#xff0c;甚至海外&#xff0c;都设立分支机构&#xff0c;还有银行、邮政这类机构&#xff0c;都会在全国各地设立多个支行和网点&#xff0c;所以在日常经营过程中&#xff0c;都会存在多区域文件交换的场景。 大型集团企业在进…

JVM垃圾收集器--分区收集器

G1收集器 G1&#xff08;Garbage-First Garbage Collector&#xff09;在 JDK 1.7 时引入&#xff0c;在 JDK 9 时取代 CMS 成为了默认的垃圾收集器。G1 有五个属性&#xff1a;分代、增量、并行、标记整理、STW。 分代 G1收集器 将内部分为多个大小相等的区域&#xff0c;另…

Unity Shader 图形学【笔记一】

游戏图形学 源自&#xff1a;计算机图形学 涵盖&#xff1a;图形、动画的创建渲染展示 目标&#xff1a;性能优化、提高视觉质量&#xff0c;增强用户体验 技术&#xff1a;三维模型、纹理、光照、阴影、特效、动画、物理模拟、碰撞检测等 Unity Shader 是&#xff1a;un…

基于Vue+ElementPlus自定义带历史记录的搜索框组件

前言 基于Vue2.5ElementPlus实现的一个自定义带历史记录的搜索框组件 效果如图&#xff1a; 基本样式&#xff1a; 获取焦点后&#xff1a; 这里的历史记录默认最大存储10条&#xff0c;同时右侧的清空按钮可以清空所有历史记录。 同时搜索记录也支持点击搜索&#xff0c;按…

371D - Vessels

思路&#xff1a;用并查集维护&#xff0c;如果当前容器没有满&#xff0c;就指向自己&#xff0c;否则指向下一个容器。 这样就可以快速 find 到下一个没有满的容器&#xff0c;从而模拟询问 1。 代码&#xff1a; void solve(){int n;cin >> n;vector<int>p(n …

leetcode:滑动窗口----3. 无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为…

算法竞赛相关问题总结记录

前言 日常在校生或者是工作之余的同学或多或少都会参加一些竞赛,参加竞赛一方面可以锻炼自己的理解与实践能力&#xff0c;也能够增加自己的生活费&#xff0c;竞赛中的一些方案也可以后续作为自己论文的base,甚至是横向课题的框架。在算法竞赛中算法的差别个人感觉差距都不大&…

一招搞定“找不到xinput1_3.dll,无法继续执行代码”问题

在我们日常使用电脑进行各类工作的过程中&#xff0c;特别是在运行一些关键性软件以完成特定任务时&#xff0c;电脑屏幕上突然弹出一条醒目的错误提示信息&#xff1a;“由于找不到xinput1_3.dll,无法继续执行代码”。这个错误通常发生在使用DirectInput库时&#xff0c;而xin…

BFS解决FloodFill算法:(Leetcode:733. 图像渲染)

题目链接&#xff1a;733. 图像渲染 - 力扣&#xff08;LeetCode&#xff09; 使用广度优先遍历算法解决该问题&#xff1a; 从初始位置开始搜索&#xff0c;初始位置符合条件就入栈&#xff0c;并修改初始位置值。初始位置出栈。 再从初始位置开始广度优先搜索&#xff08;…