转载自:http://lizhao6210-126-com.iteye.com/blog/1716485

MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场合。与之对应的另一个技术是同步的MySQL Cluster,但因为比较复杂,使用者较少。

下图是MySQL官方给出了使用Replication的场景:

Replication原理

Mysql 的 Replication 是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另一个MySQL节点(称之Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(SQL 线程和 I/O 线程)在 Slave 端,另外一个线程(I/O 线程)在 Master 端。

要实现MySQL的Replication,首先必须打开Master端的Binary Log,因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。

看上去MySQL的Replication原理非常简单,总结一下:

每个从仅可以设置一个主。

主在执行sql之后,记录二进制log文件(bin-log)。

从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。

从这几条Replication原理来看,可以有这些推论:

主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。

如果主从的网络断开,从会在网络正常后,批量同步。

如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。

一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。

如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。

主从配置:

实验环境: Master: 192.168.1.250    已经通过源码安装mysqlmysql-5.1.51

Slave:  192.168.1.128    已经通过源码安装mysqlmysql-5.1.51

1. 登陆Master主机,创建mysql 的slave用户

mysql> grant replication slave,reload,super on *.* to slave@192.168.1.128 identified by 'slave';

mysql> flush privileges;

2. 修改master的mysql配置文件 my.ini 或 my.cnf

server-id=1 #设置 server id

log-bin= mysql-binlog #打开二进制日志 ,最好放在不同的硬盘上,减小 IO 消耗

expire_logs_day= 1 0 #设置二进制日志保存日期

max_binlog_size=500M #设置 每个 binlog 文件的大小

3. 重新启动mysql服务

# service mysql restart

4. 获取相关的db信息, 供slave链接db时使用

mysql>show master status;+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000027 | 183 | | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

5. 登陆slave 主机,修改my.ini 或 my.cnf 配置文件

server-id=2# 配置多个从服务器时依次设置 id 号

slave-skip-errors=all # mysql 复制可能出现主服务器上可以运行的语句,从服务器不能够运行,所以我们在 my.cnf

# 加一句 slave-skip-errors=all意思是忽略所有的 sql 语句错误!

relay-log= mysql -relay-bin # 该文件用于存放 Slave 端的 I/O 线程从 Master 端读取的二进制文件信息

关闭 binlog 主要考虑到我们使用 Master 的 binlog 进行增量备份,这里就不需要了。

6. 重启mysql 服务后,slave主机登陆mysql,进行slave服务器授权(这之前可以用mysqldump将master数据库导入到slave数据库)

mysql> change master to master_host='192.168.1.250', master_user='slave', master_password='slave',master_log_file='mysql-bin.000027',master_log_pos=183;

7. 启动slave同步。

mysql> start slave;

8. 检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。

mysql> show slave status

这时可以在master数据库新建一个数据库,然后在slave 端show databases; 查看复制是否成功。

mysql replication slave_MySQL Replication,主从同步( Master-Slave)相关推荐

  1. mysql的master slave_Mysql 数据库的同步(master slave) 详解

    ####原理######## mysql 的数据同步,在 mysql 官方网站文档上,叫 replication 字面是重作的意思,意译就是同步了. mysql 为了实现 replication 必须 ...

  2. MySQL数据库备份之主从同步配置

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:用好Java中的枚举,真的没有那么简单!个人原创+1博客:点击前往,查看更多 出处:https://www.cn ...

  3. mysql并行复制降低主从同步延时的思路与启示

    mysql并行复制降低主从同步延时的思路与启示 一.缘起 mysql主从复制,读写分离是互联网用的非常多的mysql架构,主从复制最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严 ...

  4. mysql master-user_【MySQL】MySQL5.6数据库基于binlog主从(Master/Slave)同步安装与配置详解...

    主从数据库同步原理 image.png 主从数据库同步工作原理(流程): 当主库的数据发生修改时,数据更改的记录将写入到主库的二进制文件中,从库此时将会调用一个IO线程读取主库的二进制文件,并与中继日 ...

  5. MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解

    安装环境 操作系统 :CentOS 6.5 数据库版本:MySQL 5.6.27 主机A:192.168.1.1 (Master) 主机B:192.168.1.2 (Slave) 这里强调的数据库的版 ...

  6. mysql replication slave_MySQL Replication 即主从复制

    MySQL Replication主要用于MySQL的时时备份或者读写分离.在配置之前先做一下准备工作,配置两台mysql服务器,或者在一台服务器上配置两个端口也可以. 流程示意图: A-->c ...

  7. mysql 主从同步master主数据库无法写入

    mysql 5.7 环境,两台数据库服务器设定主从同步,从数据库设定全局只读(如果不设定只读偶尔同步失败或人为修改数据导致两库内容不一会很麻烦),一般情况没有什么问题,有天从数据库查询量增加,导致未及 ...

  8. Mysql主从同步show slave status\g;说明

    下面再来说下show slave status命令显示的参数具体含义. 1)基于二进制日志复制的显示格式 mysql> show slave status\G ***************** ...

  9. mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8

    前言本次搭建目标为1主2从MySQL主从同步结构.采用CentOS8作为操作系统,IP为[10.0.0.211,10.0.0.212,10.0.0.213].MySQL版本为8.0.19,端口均采用3 ...

最新文章

  1. linux:Ubuntu入门基础
  2. Html中的各种高度宽度
  3. php通过$_SERVER['HTTP_USER_AGENT']获取浏览器useAgent
  4. 360浏览器 ajax取缓存,Angularjs在360兼容模式下取数据缓存问题的解决办法
  5. flutter tab选项卡appbar下的选项卡
  6. 大家身边极度聪明的人是什么样子?
  7. java+读取source资源_如何从JavaJAR文件中读取资源文件?
  8. properties加载的几种方式
  9. socket基本使用
  10. dl388g8 惠普 linux 网卡驱动,hp dl388 gen9驱动下载
  11. 【程序设计入门-C语言】翁凯——初学者视角1
  12. 国产之光!Mac必备长截图软件!iShot 1.7.7中文版
  13. 多模模块接单模光纤跳线/单模模块接多模光纤跳线
  14. PATA1034题解
  15. 服装店如何根据自身情况使用进销存软件?
  16. flatMap,zip,Merge区别
  17. Java基础练习题(逢七跳过、百钱百鸡、不死神兔、复利(利滚利))
  18. Django之Cookie和 Session
  19. mac 升级php7.3版本之后Redis扩展升级(phpredis)
  20. vs code的设置

热门文章

  1. 网线如何制作和如何使用?
  2. 可塑造攻击_指导如何帮助塑造我的职业
  3. 音乐与计算机的交融,感受音乐交融之美
  4. 企业微信如何设置/更换管理员?
  5. spring cloud 微服务之间添加自定义的header头
  6. 【人工智能笔记】第三十六节:TF2实现VITGAN对抗生成网络,MSA多头注意力 实现
  7. 代码表征预训练语言模型学习指南:原理、分析和代码
  8. nmon以及nmon analyser 教程
  9. BGA锡球选择与PITCH的关系
  10. Python运维开发学习(一)