讲师中心 微信公众号
AI工具推荐 视频效率加速

mysql基于日志的主从复制详解

阿浩君_9094

阿浩君_9094

发布时间:2020-08-17 16:55:33

|

2465人浏览过

|

来源于learnku

转载

mysql基于日志的主从复制详解

总有人问我 会不会读写分离,我有时真的不知道怎么回答,这么滴吧,技术本身不难你,难的是咱们能不能遇得到这么大的项目。如果是真有这么大项目,光读写分离这个事肯定不是一两个人在搞,应该是多人协作的。

相关学习推荐:mysql视频教程

所以呢!我没搞过。

但是……

不能做实验环境吗?(一个尴尬的笑容)

我从找文档资料到实验落地,一共花了3天时间(因为不是全天都在围绕着这个事情哇)。基本搞定,就是说,如果有人问我会不会,我说我已经操作过了,不是什么难事。

具体注意点:


  1. 主从之间的防火墙需要放行
  2. mysql-id 得唯一 见 my.cnf
  3. uuid 得唯一 见 auto.cnf
  4. 主服务器要授权,一般授权一个slave账号给从服务器使用

常用几个命令(针对日志的方式)


  1. 在主库上操作的有

    mysql > show master status; #查看主库状态

    mysql >  grant replication slave on . to ‘slave‘@’%ip%’ identified by ‘password’;#  to 后面的 解释: ‘slave’ 代表哪个账户,@后面的是从服务器的IP by 后面的是密码;

    systemctl status firewalld # 查看防火墙状态

    firewall-cmd –list-all # 查看防火墙的端口列表

    firewall-cmd –permanent –zone=public –add-port=3306/tcp # 放行 3306 端口

    firewall-cmd –reload  # 重启防火墙

    另外 iptable 的话 可以自行看看哇

  2. 在从库上操作主要有

    1. mysql>  stop slave; // 停止复制
    2. mysql>  reset slave; // 重置复制
    3. mysql>  start slave; // 开启复制
    4. mysql> show slave status\G; # 查看状态

具体配置


  1. 环境介绍

    1. 主服务器  192.168.5.238   centos 7.4
    2. 从服务器 192.168.5.239    centos 7.4
    3. 利用日志来进行主从配置
  2. 主服务器上的配置

    1. 防火墙操作,防止后面出奇怪的问题 参考常用几个命令的防火墙操作

    2. mysql 的日志相关的配置  其他的先不用动 主要是看这段

      # aster live copy configure
      log-bin=mysql-bin  //日志文件名
      binlog_format=mixed  // 这个日志格式,还有几个选项,大家都选mixed  可选项statement/row/mixed,如果想深究 可以去看官方文档
      server-id   = 238 //为了不重复使用 尽量采用服务器IP 的最后一位来命名
      skip_name_resolve=ON //这个直接写上就可以了,参考一下别人的文档
      expire_logs_days = 10 //设置日志保存的天数,这个吧 我觉得可以不用加,加上也无所谓,因为在测试环境,如果正式上线跑的话,就要掂量一下了
      # /etc/init.d/mysql restart // 这个不一定是这个命令 看自己是用什么方式安装的 centos 也有 systemctl restart mysql的 这个不懂可以多研究一下linux操作
      ##如果两台服务器不是复制的话,auto.cnf 的uuid应该会不一样,如果是复制的话,就该看看了,这个在mysql的安装目录的 /var、目录下如果有 就把这个文件删除或者mv 备份一下

  3. mysql配置一下复制权限

    # mysql -uroot -p “password” //登入mysql服务器、会让你输入密码
      mysql>GRANT replication slave ON . TO ‘slave‘@’%’ IDENTIFIED BY ‘111111’; // 解释 replication 分配复制的权限 这个. 可以操作那个库  后面的‘slave‘@’%’ 表示任何主机用slave都可以进行从库复制,也可以指定到IP 后面就是密码哈
      mysql> show master status;
      +——————+———-+————–+——————+——————-+
      | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
      +——————+———-+————–+——————+——————-+
      | mysql-bin.000010 |     2812 |              |                  |                   |
      +——————+———-+————–+——————+——————-+
      1 row in set (0.00 sec)
      看到上面的这个表表示成功了

    MySQL
    MySQL

    编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

    下载
  4. 从库上的配置

    1. 修改my.cnf

      log-bin=mysql-bin  //日志文件名
      binlog_format=mixed //日志格式
      server-id   =239    //服务器ID 这个和主服务器一个解释,用IP的尾巴
      # expire_logs_days = 10  //这个我注释掉了,
      # early-plugin-load = “” //这个暂时没有使用,如果启用可以配置此项,主从复制这个项并不是关键项
      relay_log = mysql-relay-bin //这个是个从库的复制日志
      relay_log_index=relay_log.index //日志索引
      # /etc/init.d/mysql restart // 这个不一定是这个命令 看自己是用什么方式安装的 centos 也有 systemctl restart mysql的 这个不懂可以多研究一下linux操作

    2. 设置从库

      1. 进入从库的mysql 终端  #mysql -uroot -p //进入终端

        # mysql -uroot -p //进入终端(之所以写详细点,就是怕看到此文的人会误会操作不全)

      2. 关闭slave  # 注意配置从库之前先关闭掉slave;

        mysql>stop slave;  //这个是关闭从库哇,保证一把过

      3. 修改master参数

        mysql>change master to
        master_host=’192.168.5.238’,
        master_user=’slave’,
        master_password=’这里填上面设置主库复制权限时的密码’,
        master_log_file=’mysql-bin.000010’, //这里填 在主库 show master status 的文件名,位置对着抄就好了
        master_log_pos=2812; //在主库的show master status 里找

      4. 启动从库

        mysql>start slave; //启动从库

      5. 查看主从复制是否成功

        mysql> show slave status \G;

                 Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.5.238
                      Master_User: slave
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000010
              Read_Master_Log_Pos: 2812
                   Relay_Log_File: mysql-relay-bin.000013
                    Relay_Log_Pos: 3025
            Relay_Master_Log_File: mysql-bin.000010
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes

        看到 Slave_IO_Running 和 Slave_SQL_Running 值 都为 Yes  说明就成功了,如果不成,请看下面的提示信息,对着谷歌 百度 应该能找出来的

        1. 我在配置时遇到了一个问题,就是报uuid错误,原因是我的实验环境是一个虚拟机安装完mysql后复制的,所以导致mysql的uuid 相同了

          # cd /usr/local/mysql/var
          # mv auto.cnf auto.cnf.back //这个你看有没有,没有就不操作,有就这样
          #  /etc/init.d/mysql restart  //重启数据库
          然后执行show slave status\G;观察两个yes

        2. 至此,基于日志的主从复制就完成了

总结:


  1. 防火墙 要先看
  2. 步骤无所谓,对着搞,直到成功
  3. 细心,不能慌

相关图文教程:mysql数据库图文教程

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

60

2026.10.16

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

40

2026.10.16

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

20

2026.10.16

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

20

2026.10.16

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

20

2026.10.16

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

20

2026.10.16

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

40

2026.10.15

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

20

2026.10.15

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

20

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 188人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn