搭建mysql主从服务

搭建mysql主从服务

[!TIP]

基于docker和mysql 8搭建主从服务,一主二从的结构,并且把数据文件放置在master_slave_mysql 文件夹下

首先规划端口,master:3306,slave_one:3307,slave_two:3308

  1. 创建文件&文件夹
mkdir -p /root/master_slave_mysql/mysql_3306/conf \/root/master_slave_mysql/mysql_3306/data \/root/master_slave_mysql/mysql_3307/conf \/root/master_slave_mysql/mysql_3307/data \/root/master_slave_mysql/mysql_3308/conf \/root/master_slave_mysql/mysql_3308/data \
touch /root/master_slave_mysql/mysql_3306/conf/my.cnf/root/master_slave_mysql/mysql_3307/conf/root/master_slave_mysql/mysql_3308/conf

可以按照自己的喜好创建到不同的位置

  1. 修改配置

    /root/master_slave_mysql/mysql_3306/conf/my.cnf加入

    [mysqld]
    # 服务器唯一ID,默认值1
    server-id=1
    # 设置日志格式,默认ROW
    binlog_format=STATEMENT
    

    /root/master_slave_mysql/mysql_3307/conf/my.cnf加入

    [mysqld]
    # 服务器唯一ID,默认值1
    server-id=2
    

    /root/master_slave_mysql/mysql_3308/conf/my.cnf加入

    [mysqld]
    # 服务器唯一ID,默认值1
    server-id=3
    

    [!NOTE]

    server-id 在主从架构中是不能重复的,建议把主机设置为1,从机设置为其他值

  2. 拉取mysql镜像

    docker pull mysql:latest
    
  3. 创建主mysql容器

    docker run -d -p 3306:3306 \-v /root/master_slave_mysql/mysql_3306/conf/etc/mysql/conf.d \-v /root/master_slave_mysql/mysql_3306/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=自定义密码 \--name=master mysql:latest
    
  4. 创建从slave容器

    1. 创建第一个slave容器

      docker run -d -p 3307:3306 \
      -v /root/master_slave_mysql/mysql_3307/conf/etc/mysql/conf.d \
      -v /root/master_slave_mysql/mysql_3307/data:/var/lib/mysql \
      -e MYSQL_ROOT_PASSWORD=自定义密码 \
      --name=slave_one mysql:latest
      
    2. 创建第二个slave容器

      docker run -d -p 3308:3306 \
      -v /root/master_slave_mysql/mysql_3308/conf/etc/mysql/conf.d \
      -v /root/master_slave_mysql/mysql_3308/data:/var/lib/mysql \
      -e MYSQL_ROOT_PASSWORD=自定义密码 \
      --name=slave_two mysql:latest
      
  5. 配置主机

    进入容器

    docker exec -it master env LANG=C.UTF-8 /bin/bash
    

    配置从机用于登录主机的用户

    mysql -uroot -p
    
    add user 'slave'@'%' identified with mysql_native_password by '123456';
    

    授权

    GRANT REPLICATION SLAVE ON *.* TO `slave_account`@`%`
    

    [!WARNING]

    上例授权范围在生产环境中是不被允许的,建议授权只到业务数据库,而不要授权全部数据库!比如:GRANT REPLICATION SLAVE ON order_server.* TO `slave_account`@`%`

    刷新权限

    flush privileges;
    

    查看状态(记住fileposition字段的值,我的是binlog.000003和3049)

    show master status;
    

    OK,到此主机配置结束了,然后退出容器(退出命令exit,需退出2次,第一次退出mysql,第二次退出容器)

  6. 配置从机(从机的配置步骤都一样,为节省篇幅仅拿一台从机配置说明配置步骤)

    进入容器

    docker exec -it slave_one env LANG=C.UTF-8 /bin/bash
    
    mysql -uroot -p
    

    执行(注意master_log_pos和master_log_file的值)

    CHANGE master tomaster_host = '主机IP',master_port = 3306,master_user='slave',master_password='123456',master_log_file ='binlog.000003',master_log_pos=3049;
    

    运行复制服务

    START SLAVE;
    

    [!NOTE]

    stop slave : 停止复制服务

    当遇到错误提示:This operation cannot be performed with a running replica io thread; run STOP REPLICA IO_THREAD FOR CHANNEL ‘’ first时,请执行 STOP REPLICA IO_THREAD FOR CHANNEL ‘’

    验证是否成功

    show slave status \G;
    

    出现如下:Slave_IO_Running: Yes,Slave_SQL_Running: Yes 则成功;若不成功,请看Last_IO_Error和Last_SQL_Error中的表述

    *************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: xxx.xx.xxx.xxxMaster_User: slave_accountMaster_Port: 3306Connect_Retry: 60Master_Log_File: binlog.000003Read_Master_Log_Pos: 3049Relay_Log_File: a066fb82d4ba-relay-bin.000002Relay_Log_Pos: 594Relay_Master_Log_File: binlog.000003Slave_IO_Running: YesSlave_SQL_Running: Yes...Last_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error:...
    

    [!WARNING]

    • 在主从架构配置完成之前,不要对主/从数据库做:增删数据库和表以及增删查改数据的操作。

    • 主从架构配置完成之后,不要对从表做增删改的操作,无论是对表,数据库,行,都不要做。不然可能出现失败

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

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

相关文章

Elasticsearch 认证模拟题 - 11

一、题目 编写一个名为 a_data_stream 数据流满足以下请求: 数据流索引主分片数为 1,副本为 2数据流索引指定相应的 mapping ,二个字段为 keyword 类型,一个字段为 text 类型并指定分词器为 standard。 按照上述要求建立数据流…

【Android面试八股文】说一说synchronized在JDK1.6之后做了哪些优化?

文章目录 说一说synchronized在JDK1.6之后做了哪些优化?一、为什么加上`synchronized`关键字就能实现锁,它的原理是怎么回事呢?1.1 字节码查看synchronized的实现1.2 为什么Java6之前的synchronized效率很低?1.3 Java6对synchronized的优化二、Java对象头2.1 Java对象头简介…

图文详解Windows系统下搭建mysql开发环境——mysql Community 8 和 navicat Premium 17 的安装和使用

在正式开始学习使用MySQL之前,我们有必要先搭建一个良好的开发环境,让我们的学习和工作效率事半功倍。 本文涉及到的软件百度云盘:链接:https://pan.baidu.com/s/1jj_YajEv8adeEjMrXLhOTQ?pwd1023 提取码:1023 目录 …

Java Web学习笔记22——前端工程化

实际的前端开发: 前端工程化:是指在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。 环境准备: vue-cli: 介绍:vue-cli是Vue官方提供的一个脚手架,用于…

[汇总] CentOS中查询端口终止进程的指令

👉原文阅读 💡章前导言 由于搭建服务器过程中,经常需要查询端口占用进程,并将进程终止以释放端口,所以将CentOS中相关的操作在这里进行一下汇总,方便以后查询使用,下文端口有关的操作皆以8080为…

GPT-4.0来袭:人工智能新纪元即将开启

一、性能提升 1.1 计算效率 GPT-4o在计算效率上有了显著提升。这意味着它可以在同样的硬件资源下处理更多的请求,或在相同时间内完成更多的任务。这对于高并发应用场景(如大型客服系统)来说尤为重要。 1.2 响应速度 由于优化了底层算法和…

wx 生命周期

以下内容你不需要立马完全弄明白,不过以后它会有帮助。 下图说明了页面 Page 实例的生命周期。

【栈】1106. 解析布尔表达式

本文涉及知识点 栈 LeetCode 1106. 解析布尔表达式 布尔表达式 是计算结果不是 true 就是 false 的表达式。有效的表达式需遵循以下约定: ‘t’,运算结果为 true ‘f’,运算结果为 false ‘!(subExpr)’,运算过程为对内部表达式…

opencv 在飞行堡垒8中调用camera导致设备消失

简介 使用 OpenCV 库时, 在最后调用cv::destroyAllWindows()之后设备管理器中的摄像头设备消失了, 看看是怎么触发的, 后面再慢慢研究RootCause是什么。 步骤 设备管理器原来摄像头显示 1. 代码 main.cpp Note: 1. haarcascade_frontalface_default…

cocos入门9:三维向量点乘

在cocos creator中,三维向量的点乘(Dot Product)是一个基础但重要的概念,特别是在3D图形学、物理模拟和光照计算等领域。点乘的结果是一个标量(scalar),它描述了两个向量之间的角度关系以及其中…

AI智能客服经验总结

AI智能客服经验总结 在使用OpenAI的API接口来构建人工智能客服系统时,prompt约束是非常重要的。它可以帮助确保生成的回复符合你的期望和需求。以下是一些关于如何设置和管理prompt约束的建议: 1. 明确客服系统的目标 首先,明确你的客服系…

python中的解包操作(*和**)

在Python中,* 和 ** 用于函数定义和函数调用时的参数解包和传递,它们有不同的用途和作用。以下是它们的详细解释和区别: 单星号 (*) 1. 位置参数解包(函数调用) 在函数调用时,* 用于将列表或元组解包成位…

R语言 | 使用最简单方法添加显著性ggpubr包

本期教程原文:使用最简单方法添加显著性ggsignif包 本期教程 获得本期教程代码和数据,在后台回复关键词:20240605 小杜的生信笔记,自2021年11月开始做的知识分享,主要内容是R语言绘图教程、转录组上游分析、转录组下游…

容声冰箱正式发布主动除菌净味白皮书,守护家人饮食健康

近日,由中国家用电器研究院指导、全国家用电器工业信息中心和容声冰箱联合编制的《冰箱主动除菌净味技术发展白皮书》(下称《白皮书》)正式发布。 《白皮书》指出,容声将IDP主动除菌技术应用到冰箱冷冻、冷藏区域,实现…

使用本地锁syncronized防止缓存击穿

谷粒商城学习笔记p156 缓存击穿:单个key缓存突然失效,这时大量的请求进行访问,导致数据库压力过大。缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据&am…

对待谷歌百度等搜索引擎的正确方式

对待百度、谷歌等搜索引擎的方式是,你要站在搜索引擎之上,保持自己的独立思想和意见。 当谷歌宣布他们将会根据一个名为“Alphabet”的新控股公司来进行业务调整时,在科技界引起了一片恐慌之声。 永远不要说这是一个公司一直在做的事情。不…

一文快速搞懂Nginx —— Nginx 详解

一文快速搞懂Nginx 一、nginx 简介二、正向 / 反向代理2.1 正向代理2.2 反向代理三、负载均衡四、动静分离五、web 缓存六、Nginx 安装6.1 windows版本下的安装6.2 Linux版本下的安装七、常用命令八、为什么选择Nginx 一、nginx 简介 Nginx 同 Apache 一样都是一种 Web 服务器。…

使用 Python 的 Tkinter 来创建 GUI 应用程序

Tkinter 是 Python 自带的一个图形用户界面(GUI)工具包,它提供了丰富的 GUI 组件和工具,可以用于快速开发各种应用程序 安装和导入 Tkinter 首先,需要确保你已经安装了 Python,并且版本号在 3.0 及以上&a…

嵌入式Linux系统编程 — 3.1 Linux系统中的文件类型

目录 1 Linux 系统中的文件类型简介 2 普通文件 2.1 什么是普通文件 2.2 普通文件分类 3 目录文件 4 字符设备文件和块设备文件 4.1 什么是设备文件 4.2 查看设备文件的方法: 5 符号链接文件(link) 5.1 什么是符号链接文件 5.2 如…

大模型多轮问答的两种方式

前言 大模型的多轮问答难点就是在于如何精确识别用户最新的提问的真实意图,而在常见的使用大模型进行多轮对话方式中,我接触到的只有两种方式: 一种是简单地直接使用 user 和 assistant 两个角色将一问一答的会话内容喂给大模型&#xff0c…