2019独角兽企业重金招聘Python工程师标准>>>

mysql - GTID主从复制

Mysql replication

从主服务器(master)将数据复制到另外slave服务器的过程。将主数据库DDL和DML操作通过二进制日志传输到从服务器上,从服务器按顺序执行这些日志记录的操作达到主从数据同步的目的。

复制操作是异步的。slave不需要持续保持连接接收master的数据。

原理

  1. 每个事务更新数据完成之前,master将数据的改变记录到二进制日志(Binary Log)中;写入完成后,master服务器通知存储引擎提交事务。
  2. slave上的I/O进程连接master,发出日志请求;Master接收后通过负责复制的I/O进程根据请求读取指定日志指定位置之后的信息返回给slave。除日志信息外,还包括本次返回日志信息已经到Master端的bin-log文件的名称和bin-log的位置
  3. slave_I/O进程收到信息后,按顺序将 master的binary log events 复制到自己的中继日志(Relay Log)中; 并读取Master端的bin-log文件名和位置记录到master-info文件中。
  4. Slave_Sql进程检测到relay-log中新增了内容,解析并执行。

过滤复制

可根据实际情况Slave服务器配置‘replicate*’来指定(不)需要复制的db、table。

不推荐使用binlog-do-db, binlog-ignore-db, replicate-do-db 和 replicate-ignore-db 来设置需要过滤的数据库:通过默认的数据库为“mysql" 的连接, 过滤二进制的(SQL)语句日志的. 换句话说, 过滤不是基于查询的字符串的, 而实际于你使用的数据库。

推荐: 在 slave上配置过滤, 使用基于查询中真正涉及到的表的选项

replicate-wild-do-table=db_name.%
replicate-wild-ignore-table=mysql.%

操作

  1. master服务器增加用于复制的用户msql_rep,授权replication,密码Rep@!123

    mysql> grant replication slave on *.* to 'msql_rep'@'172.30.1.52' identified by 'Rep@!123';

  2. 修改Master的配置 
    vi  /etc/my.cnf;
    开启BINGLOG:   增加行: log-bin = /usr/local/var/mysql/mysql-bin
    设置server-id值:  增加行: server-id = 51

  3. 在master服务器设置度锁定有效,确保没有新数据库操作,便于获得一致性快照.
     mysql>  fulsh tables with read lock;

  4. 查看master信息
    mysql> show master status \G;

  5. 恢复写操作
    mysql> unlock tables;

  6. 修改slave数据库配置文件my.cnf,增加server-id参数;servier-id的值唯一,不能与master和其他slaver配置相同。
  7. 重启slave数据库,关闭slave;指定master的复制用户、密码、主ip、复制日志文件、位置等。
    service mysqld restart
    mysql -uroot -proot
    mysql> stop slave;
    mysql> change master to ->  master_host ='172.30.1.51',          // Master IP->  master_user='msql_rep',              ->  master_password='Rep@!123',  ->  master_log_file='mysql-bin.000010',   //Master实现复制的binlog文件->  master_log_pos=2000;   //Master实现复制的binlog文件的偏移量
    mysql>  start slave;
    mysql>  show slave status \G;
    

    指定截止位置:
    start slave until master_log_file='mysql-bin.000008',master_log_pos=310;  

  8. 可以在master\slaver服务器上查看服务器进程状态
     mysql>  show processlist \G;

  9. 检测主从设置的正确性
     当主库数据发生变化时,日志偏移量改变

    master: 新增datebase和table

    slave: 异步延时完成同步。

问题

  • Slave_SQL_Running: No

    成因:

    1、slave上这个表中出现了其他的写操作。

    2、slave进程重启,事务回滚造成。

    解决方法:

    mysql> slave stop;
    mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER= 1; //客户端运行,用来跳过指定N个数的事件,只有当同步进程出现错误而停止的时候才可以执行。
    mysql> slave start;
  • Slave_SQL_Running :No
    成因:
    1、网络连接不上
    2、配置不对, replication slave和file没权限​​​
    3、master_log_file、master_log_pos 同步错误。

    解决方法:
    从master中找到最新的logfile及logpos; 修改slave同步日志文件及位置。

    change master to master_log_file='mysql-bin.000013', master_log_pos=8654;

转载于:https://my.oschina.net/u/3434392/blog/1162812

mysql - binlog主从复制相关推荐

  1. mysql - GTID主从复制

    2019独角兽企业重金招聘Python工程师标准>>> mysql - binlog主从复制 GTID (Global Transaction ID) InnoDB:事务性引擎. M ...

  2. Mysql binlog日志及binlog恢复数据库操作

    初识MySQL 日志binlog MySQL重要log,二进制日志文件,记录所有DDL和DML语句(除select),事件形式记录,包含语句所执行的消耗时间,事务安全型. DDL(数据库定义语言),主 ...

  3. MySQL Binlog解析

    概述 MySQL的安装可以参考:Linux(CentOS)中常用软件安装,使用及异常--MySQL, VmTools MySQL关于Binlog的官方文档:The Binary Log 基于Binlo ...

  4. mysql的主从复制是如何实现的

    前言 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为 ...

  5. Mysql binlog应用场景与原理深度剖析

    1 基于binlog的主从复制 Mysql 5.0以后,支持通过binary log(二进制日志)以支持主从复制.复制允许将来自一个MySQL数据库服务器(master) 的数据复制到一个或多个其他M ...

  6. mysql的主从复制原理与实现

    关于mysql的主从复制,之前一直在听说这个话题,一直没有实现,昨天学习了下,原来是这么回事: 既然是主从复制,那么肯定有主有从,也就说一个主数据库(一般为写库),一个从数据库(读库).主数据库更新了 ...

  7. php mysql 主从复制_Windows 环境下,MySQL 的主从复制和主主复制

    Mysql的主从配置 1.找到配置文件 找到配置文件是主从复制的第一个难点.很多新手都容易找错配置文件,一般my.ini配置文件所在的位置都是隐藏的. 一般人都以为配置文件为 C:\Program F ...

  8. 使用 Xtrabackup 在线对MySQL做主从复制

    说明1.1 xtrabackupmysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.但一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldump就力 ...

  9. MySQL bin-log 日志清理方式

    MySQL bin-log 作用 1.数据恢复:如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失. 2.主从服务器之间同步数据:主服务 ...

最新文章

  1. 李飞飞等提出新的迭代视觉推理框架,在ADE上实现8.4 %的绝对提升
  2. R语言编写自定义函数使用Wilcoxon符号秩检验(Wilcoxon signed rank)实现多分组非参数成对检验(pairwise)、并使用p.adjust函数调整概率值
  3. xshell登录VMware虚拟机的初始设置
  4. ssh 连接服务器_使用 SSH Key 访问服务器
  5. 一站式导航 -- 奋斗の博客
  6. 初学者linux和ubuntu,linux初学者也必须知道的几个ubuntu最基础命令
  7. shell循环,判断介绍,以及实例
  8. 推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
  9. 【Spring】Spring boot 可以通过集成jolokia来使用HTTP形式访问mbean
  10. 解决精简版的XP下,无法使用运程桌面
  11. Android:RGB颜色对照表
  12. MCU芯片通信接口设计
  13. Enrico Da Vincent
  14. leecode第一百七十四题(地下城游戏)
  15. Jsp实现注册登录以及忘记找回密码等操作(上)
  16. 修改html会影响seo,网站修改css影响seo吗?
  17. 使用 Swift 语言编程的优缺点
  18. 微软必应成功预测法国队夺冠
  19. 使用jquery的bind来检测textarea,input等的文本变化
  20. Linxu下RocketMq及可视化界面的搭建

热门文章

  1. scala代码示例_Scala集合示例
  2. 大厂前端必备技能Webpack原理剖析
  3. 实现人工智能价值的障碍有哪些?
  4. 如何创建线程?如何创建扩展Thread类?
  5. mysql下载安装使用教程
  6. 黄聪:JQUERY的datatables插件,Date range filter时间段筛选功能
  7. Facebook 开源 AI 所使用的硬件平台 'Big Sur'
  8. 李新海:沉默是口才运用的最高境界
  9. IOS KVO与NSNotificationCenter简单使用
  10. 最小二乘原理求解线性回归方程