MYSql主从复制原理

转载 2015年11月17日 17:20:33

工作原理图:

105353509.jpg

主从复制的原理:

分为同步复制和异步复制,实际复制架构中大部分为异步复制。 复制的基本过程如下:

1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

2).Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;

3).Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”;

4).Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。

环境描述

  • 操作系统:CentOS6.3_x64
  • 主服务器master:192.168.0.202
  • 从服务器slave:192.168.0.203

一、mysql主从复制

1、主从安装mysql,版本一致

我们装的是 mysql-5.5.30.tar.gz 这里省略…

2、修改master,slave服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
master服务器配置:
vi /usr/local/mysql/etc/my.cnf
[mysqld]
server-id=202     #设置服务器唯一的id,默认是1,我们设置ip最后一段,slave设置203
log-bin=mysql-bin # 启用二进制日志
binlog-ignore-db = mysql,information_schema  #忽略写入binlog的库
 
slave服务器配置:
vi /usr/local/mysql/etc/my.cnf
[mysqld]
server-id=203
replicate-do-db = abc     #只同步abc库
slave-skip-errors = all   #忽略因复制出现的所有错误

3、重启主从服务器mysql

1
/etc/init.d/mysqld restart

4、在主服务器上建立帐户并授权slave

1
2
mysql> mysql -u root -p123.com
mysql> GRANT REPLICATION SLAVE ON *.* to ‘sync’@‘192.168.1.2’ identified by ‘1234.com’; #replication:复制

5、查看主数据库状态

1
2
3
4
5
6
mysql> show master status;
+------------------+----------+--------------+------------------+
| File  | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 263 |  |   |
+------------------+----------+--------------+------------------+

6、配置从数据库

1
2
3
4
5
6
7
mysql> change master to
 -> master_host='192.168.0.202',
 -> master_user='sync',
 -> master_password='1234.com',
 -> master_log_file='mysql-bin.000002',
 -> master_log_pos=263;
#Log和pos是master上随机获取的。这段也可以写到my.cnf里面。

7、启动slave同步进程并查看状态

1
mysql> start slave;

103403849.jpg

其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

8、验证主从同步

在主mysql创建数据库abc,再从mysql查看已经同步成功!

1
2
3
4
5
6
7
8
9
10
11
mysql> create database abc;
mysql> show databases;
+--------------------+
| Database   |
+--------------------+
| information_schema |
| abc    |
| mysql    |
| performance_schema |
test    |
+--------------------+

在slave启动报错:

“Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’”

解决:报错的原因主要是slave设置master的二进制文件名或pos值不对应!

先flush logs;清空日志,在查看下主数据库的状态 show master status;看下日志文件名字和position值;

再在slave中,执行:CHANGE MASTER TO MASTER_LOG_FILE=‘二进制日志名’,MASTER_LOG_POS=值;

最后启动同步进程:start slave;

Mysql主从复制原理及配置

1 复制概述       Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slav...
  • QH_JAVA
  • QH_JAVA
  • 2015年02月01日 17:15
  • 7806

MySQL主从复制原理

当一台MySQL服务器无法满足现有的访问量时,一般会采用主从服务器模式,通过数据库代理做到读写分离。主服务器负责处理写入请求,从服务器服务器负责处理读取请求。大部分情况是读取量远大于写入量,一般会配置...
  • sk199048
  • sk199048
  • 2016年02月17日 19:58
  • 391

mysql 5.6复制新特性下主从复制配置[基于GTID]

mysql 5.6复制新特性下主从复制配置[基于GTID] 时间:2013年11月24日 | 分类:MySql 高可用 | 1条评论 | 浏览:1,279 次 1.my...
  • guotao521
  • guotao521
  • 2015年05月04日 17:38
  • 1455

MySQL主从复制与读写分离

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中...
  • lang_man_xing
  • lang_man_xing
  • 2014年11月27日 11:49
  • 1970

MySQL传统复制与GTID复制原理及操作详解

mysql复制在业界里有叫:mysql同步,ab复制等。专业名称就是叫:复制 复制是单向的,只能从master复制到slave上,延时基本上是毫秒级别的。 一组复制结构中可以有多个slave,对于...
  • thundermeng
  • thundermeng
  • 2015年12月25日 09:35
  • 10493

Centos7+Mysql5.7实现主从复制

Centos7+Mysql5.7实现主从复制在生产用途中为了实现更大的吞吐和高可用可能会对数据库做主从复制或者集群,我们先从主从复制说起。- 一、安装配置 二、实现主从同步。...
  • jiaoshenmo
  • jiaoshenmo
  • 2016年04月18日 18:33
  • 5856

MySQL主从复制原理、半同步操作步骤及原理

1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1、scp/sftp/nc 命令可以实现远程数据同步。 2、搭建ftp/http/svn/nfs 服务器,然后在客...
  • linuxlsq
  • linuxlsq
  • 2016年09月21日 11:51
  • 6344

学习mysql数据库主从同步复制原理

说明本篇文章部分转载自互联网。 MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能、更高可靠性要求的场合...
  • zy079040141067
  • zy079040141067
  • 2014年11月23日 17:40
  • 6345

mysql主从复制原理详解

master将改变记录到二进制日志中binlog,slave将master的binlog拷贝到自己的中继日志中,然后执行一遍sql语句就达到同步了 一个服务器当主库,另一个或多个服务器当从库,主...
  • nuli888
  • nuli888
  • 2016年07月08日 23:40
  • 5896

mysql读写分离和主从复制的基本原理

mysql的读写分离的基本原理是:让master(主数据库)来响应事务性操作,让slave(从数据库)来响应select非事务性操作,然后再采用主从复制来把master上的事务性操作同步到slave数...
  • jaryle
  • jaryle
  • 2016年07月23日 12:20
  • 4767
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MYSql主从复制原理
举报原因:
原因补充:

(最多只允许输入30个字)