SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
Mysql replication report
1  基本用途
2 基本原理
3 搭建过程
4 导致 master 和 slave 不同步的原因
5 Mysql replication 的历程
6 数据库不同步的一些解决方案

Replication 的用途:
1 数据分发 ,scale out,sacle up ,垂直划分,水平划分
2 负载均衡 load balance
3 备份,一般不会用作备份,一旦执行 delete 操作,replication 也不会保留
4 高可用
5 可以在不同的主从库上使用不同的存储引擎
6 测试 mysql 的升级
常见 replication 的架构
常见的负载均衡架构




    当使用的 slavae 过多时,减轻 master 压力的级联架构,master2 打开 log-slave-
updates 配置
一台 masterdown 时候的,冗余架构




        Replication 不同的库到不同的主机



原理

1 三个进程:

Mysql 的复制(replication)是一个异步的复制,从一个 Master 复制到另一个
Slave。实现整个复制操作主要由三个进程完成的,其中两个进程在 Slave(Sql
进程和 IO 进程),另外一个进程在 Master(IO 进程)上,可以分别在 master
如果 replication 在进行的话可以通过运行 show processlist 查看,slave 上
可以直线 show slave status 进行查看,里面的 Slave_IO_Running: No
Slave_SQL_Running: No,是两个进程的状态是否在运行。Mysql4.0 是两个进程,
后有 yahoo 的一位工程师提出的 3 个进程,博客
为:http://jeremy.zawodny.com/mysql/


2 三个 log 文件和两个 info 文件:

复制进行时,在 master 上执行的语句会记录到 bin.log 里面,日志的位置和数
字,当有变化 放生时,slave 会通过一个 io 进程读取 master 的二进制 log,
发现有变化时候,会把新的变化副知道他的 relay.log,会记录行的位置和数字
到一个新的文件叫 master.info,继续检查 master 的二进制 log,当 slave 的
sql 进程发现在 relay.log 里有变化时候会执行,同时 slave 也会通过 sql 进
程去对比 master 和 slave 的变化,如果对比发现不一致,复制进程会停止并把
错误信息计入 slave 的 error.log,如果结果能对的上,一个新的日子的位置和
数字会记录到 relay-log.info slave 会等另外一个变化到 relay log 文件。
3 复制的基本过程如下:

简单的讲就是 master 记录其变化到 binlog,slave 接收到变化后会记录到他的
Relay log,slave 通过重放 relay log,然后就写进自己的 log
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 端真实执行时候的那些可执行的内容,并在自身执行


4   Replication 的两种复制级别:

Statement level 级别 mysql 3.23 后
每一条修改数据的 query 都会记录到 master 的 binary log 中,slave 复制时
候 sql 线程会解析成合原来的 master 端执行过的相同的 query.

优点是:

不需记录每条变化,减少 log,节省 io。

缺点是:必须每条语句相关信息,即上下文信息。

Row level 级别 5.1 以后:

Binary log 会记录成每一行数据被修改的形式,然后在 slave 端口对相同的数
据进行修改。锁表操作会大量减少。

优点:不需记录执行 query 语句的上下文信息,只需要记录那条被修改了,修
改成什么了。

缺点是:产生的 log 记录比较大

还有一种不常用的 mixed 级别。




搭建过程
可以参考 mysql 官方文档:
步骤:
1 Creating a User for Replication
2 Setting the Replication Master Configuration
3 Setting the Replication Slave Configuration
4 Obtaining the Master Replication Information
5 Creating a Data Snapshot Using mysqldump
6 Creating a Data Snapshot Using Raw Data Files
7 Setting Up Replication with New Master and Slaves
8 Setting Up Replication with Existing Data
9 Introducing Additional Slaves to an Existing Replication Environment
10 Setting the Master Configuration on the Slave

导致 master 和 slave 不同步的原因

1 delete update 改变行的时候不用使用 limit 语句,没有 order by

2 一些函数在使用 statements based replication 时候如下:
Lode_file,User,Found_rows,UUID, UUID_SHORT,SYSDATE(),

2 使用 session 变量在 sql 语句中,他会导致写到 binlog 里,老版本会出问题

3 不用使用临时表,当 slave crash 掉或者重启后,会丢失信息

4 slave down 掉

5 使用 replicate-ignore-db 和 binlog-ignore-db.

6 错误的 binglog 执行 sql 导致 binlog 堵上
具体可以详见:
 http://dev.mysql.com/doc/refman/5.0/en/replication.html

5 mysql replication 的历程


mysql 版本的 4.0-5.0:
Mysql 5.1




未来 6.0 和 5.4 的新功能:

不分主从库,可以循环 replication。
去掉一个 server 后




加入心跳监测 replication:




自动监测连接状态

Master 空闲时,relay log 不在循环
监测 master 和 slave 的配置在 millisecons

5.1 版本的 replication 的改变:

 250 replication bug 关闭

 重构了 slave 的 postion handle 部分

 修改了一些在 statement 不安全的复制 binglog model

 不安全的状态改变的语句会提示警告

 自动的引擎控制日志格式

 改变了一些配置

参考:http://onlamp.com/pub/a/onlamp/2005/06/16/MySQLian.html

http://mysqlha.blogspot.com/2007/11/how-to-keep-mysql-replication-in-
sync.html

Mais conteúdo relacionado

Mais procurados

MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践Lixun Peng
 
My sql管理基础 李春_v2
My sql管理基础 李春_v2My sql管理基础 李春_v2
My sql管理基础 李春_v2Pickup Li
 
内部MySQL培训.3.基本原理
内部MySQL培训.3.基本原理内部MySQL培训.3.基本原理
内部MySQL培训.3.基本原理Lixun Peng
 
introduce Okhttp
introduce Okhttpintroduce Okhttp
introduce Okhttp朋 王
 
MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践Lixun Peng
 
备库预热工具relayfetch介绍及性能测试
备库预热工具relayfetch介绍及性能测试备库预热工具relayfetch介绍及性能测试
备库预热工具relayfetch介绍及性能测试zhaiwx1987
 
发布系统安装说明
发布系统安装说明发布系统安装说明
发布系统安装说明Yiwei Ma
 
Google mysql-tools overview
Google mysql-tools overviewGoogle mysql-tools overview
Google mysql-tools overviewPickup Li
 
五款常用mysql slow log分析工具的比较
五款常用mysql slow log分析工具的比较 五款常用mysql slow log分析工具的比较
五款常用mysql slow log分析工具的比较 colderboy17
 
Php Webservers
Php WebserversPhp Webservers
Php Webserverssamon127
 
Docker+mesos安装最佳实践
Docker+mesos安装最佳实践Docker+mesos安装最佳实践
Docker+mesos安装最佳实践3908282
 
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)frogd
 
Apache与tomcat的三种连接方式
Apache与tomcat的三种连接方式Apache与tomcat的三种连接方式
Apache与tomcat的三种连接方式xddong77
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)Cyril Wang
 

Mais procurados (19)

MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践
 
My sql管理基础 李春_v2
My sql管理基础 李春_v2My sql管理基础 李春_v2
My sql管理基础 李春_v2
 
内部MySQL培训.3.基本原理
内部MySQL培训.3.基本原理内部MySQL培训.3.基本原理
内部MySQL培训.3.基本原理
 
Linux chapt3
Linux chapt3Linux chapt3
Linux chapt3
 
introduce Okhttp
introduce Okhttpintroduce Okhttp
introduce Okhttp
 
MySQL新技术探索与实践
MySQL新技术探索与实践MySQL新技术探索与实践
MySQL新技术探索与实践
 
备库预热工具relayfetch介绍及性能测试
备库预热工具relayfetch介绍及性能测试备库预热工具relayfetch介绍及性能测试
备库预热工具relayfetch介绍及性能测试
 
发布系统安装说明
发布系统安装说明发布系统安装说明
发布系统安装说明
 
Google mysql-tools overview
Google mysql-tools overviewGoogle mysql-tools overview
Google mysql-tools overview
 
Mesos intro
Mesos introMesos intro
Mesos intro
 
五款常用mysql slow log分析工具的比较
五款常用mysql slow log分析工具的比较 五款常用mysql slow log分析工具的比较
五款常用mysql slow log分析工具的比较
 
Php Webservers
Php WebserversPhp Webservers
Php Webservers
 
Cvs
CvsCvs
Cvs
 
Aswan&hump
Aswan&humpAswan&hump
Aswan&hump
 
Docker+mesos安装最佳实践
Docker+mesos安装最佳实践Docker+mesos安装最佳实践
Docker+mesos安装最佳实践
 
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
 
Apache与tomcat的三种连接方式
Apache与tomcat的三种连接方式Apache与tomcat的三种连接方式
Apache与tomcat的三种连接方式
 
Sae
SaeSae
Sae
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
 

Destaque

福祉ユニット冊子A5
福祉ユニット冊子A5福祉ユニット冊子A5
福祉ユニット冊子A5bktproject
 
Elaboració d'ítems v2
Elaboració d'ítems v2Elaboració d'ítems v2
Elaboració d'ítems v2lrgsdl
 
Trunking - Cable tray - Cable ladder - Enclosure stainless steel
Trunking - Cable tray - Cable ladder - Enclosure stainless steelTrunking - Cable tray - Cable ladder - Enclosure stainless steel
Trunking - Cable tray - Cable ladder - Enclosure stainless steelCông Ty Hoàng Bảo
 
Ys Gjensidige 2010
Ys Gjensidige 2010Ys Gjensidige 2010
Ys Gjensidige 2010Egil Rogne
 
Crocodilo
CrocodiloCrocodilo
CrocodiloJNR
 

Destaque (9)

福祉ユニット冊子A5
福祉ユニット冊子A5福祉ユニット冊子A5
福祉ユニット冊子A5
 
Elaboració d'ítems v2
Elaboració d'ítems v2Elaboració d'ítems v2
Elaboració d'ítems v2
 
1.p
1.p1.p
1.p
 
Copperfield2
Copperfield2Copperfield2
Copperfield2
 
Puestas De Sol
Puestas De SolPuestas De Sol
Puestas De Sol
 
Trunking - Cable tray - Cable ladder - Enclosure stainless steel
Trunking - Cable tray - Cable ladder - Enclosure stainless steelTrunking - Cable tray - Cable ladder - Enclosure stainless steel
Trunking - Cable tray - Cable ladder - Enclosure stainless steel
 
A Bailar
A BailarA Bailar
A Bailar
 
Ys Gjensidige 2010
Ys Gjensidige 2010Ys Gjensidige 2010
Ys Gjensidige 2010
 
Crocodilo
CrocodiloCrocodilo
Crocodilo
 

Semelhante a Mysql Replication

MySQL Replication新功能介绍
MySQL Replication新功能介绍 MySQL Replication新功能介绍
MySQL Replication新功能介绍 orczhou
 
MySQL基础技能与原理——高级应用
MySQL基础技能与原理——高级应用MySQL基础技能与原理——高级应用
MySQL基础技能与原理——高级应用Michael Zhang
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recoveryted-xu
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2redhat9
 
Mysql 培训-优化篇
Mysql 培训-优化篇Mysql 培训-优化篇
Mysql 培训-优化篇sunmonth
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture introted-xu
 
Mysql proxy cluster
Mysql proxy clusterMysql proxy cluster
Mysql proxy clusterYiwei Ma
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结redhat9
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展Sky Jian
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
淘宝主备数据库自动切换
淘宝主备数据库自动切换淘宝主备数据库自动切换
淘宝主备数据库自动切换mysqlops
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3redhat9
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0jinqing zhu
 
MySQL自动切换设计与实现
MySQL自动切换设计与实现MySQL自动切换设计与实现
MySQL自动切换设计与实现orczhou
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 maclean liu
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎frogd
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmmYiwei Ma
 
无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则wensheng wei
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优thinkinlamp
 

Semelhante a Mysql Replication (20)

MySQL Replication新功能介绍
MySQL Replication新功能介绍 MySQL Replication新功能介绍
MySQL Replication新功能介绍
 
MySQL基础技能与原理——高级应用
MySQL基础技能与原理——高级应用MySQL基础技能与原理——高级应用
MySQL基础技能与原理——高级应用
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
 
Mysql 培训-优化篇
Mysql 培训-优化篇Mysql 培训-优化篇
Mysql 培训-优化篇
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
 
Mysql proxy cluster
Mysql proxy clusterMysql proxy cluster
Mysql proxy cluster
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
淘宝主备数据库自动切换
淘宝主备数据库自动切换淘宝主备数据库自动切换
淘宝主备数据库自动切换
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0
 
MySQL自动切换设计与实现
MySQL自动切换设计与实现MySQL自动切换设计与实现
MySQL自动切换设计与实现
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmm
 
无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
 

Mais de liufabin 66688

人大2010新生住宿指南
人大2010新生住宿指南人大2010新生住宿指南
人大2010新生住宿指南liufabin 66688
 
中山大学2010新生住宿指南
中山大学2010新生住宿指南中山大学2010新生住宿指南
中山大学2010新生住宿指南liufabin 66688
 
武汉大学2010新生住宿指南
武汉大学2010新生住宿指南武汉大学2010新生住宿指南
武汉大学2010新生住宿指南liufabin 66688
 
天津大学2010新生住宿指南
天津大学2010新生住宿指南天津大学2010新生住宿指南
天津大学2010新生住宿指南liufabin 66688
 
清华2010新生住宿指南
清华2010新生住宿指南清华2010新生住宿指南
清华2010新生住宿指南liufabin 66688
 
南京大学2010新生住宿指南
南京大学2010新生住宿指南南京大学2010新生住宿指南
南京大学2010新生住宿指南liufabin 66688
 
复旦2010新生住宿指南
复旦2010新生住宿指南复旦2010新生住宿指南
复旦2010新生住宿指南liufabin 66688
 
北京师范大学2010新生住宿指南
北京师范大学2010新生住宿指南北京师范大学2010新生住宿指南
北京师范大学2010新生住宿指南liufabin 66688
 
北大2010新生住宿指南
北大2010新生住宿指南北大2010新生住宿指南
北大2010新生住宿指南liufabin 66688
 
Mysql Replication Excerpt 5.1 En
Mysql Replication Excerpt 5.1 EnMysql Replication Excerpt 5.1 En
Mysql Replication Excerpt 5.1 Enliufabin 66688
 
Drupal Con My Sql Ha 2008 08 29
Drupal Con My Sql Ha 2008 08 29Drupal Con My Sql Ha 2008 08 29
Drupal Con My Sql Ha 2008 08 29liufabin 66688
 
Application Partitioning Wp
Application Partitioning WpApplication Partitioning Wp
Application Partitioning Wpliufabin 66688
 
090507.New Replication Features(2)
090507.New Replication Features(2)090507.New Replication Features(2)
090507.New Replication Features(2)liufabin 66688
 
High Performance Mysql
High Performance MysqlHigh Performance Mysql
High Performance Mysqlliufabin 66688
 
high performance mysql
high performance mysqlhigh performance mysql
high performance mysqlliufabin 66688
 
Refactoring And Unit Testing
Refactoring And Unit TestingRefactoring And Unit Testing
Refactoring And Unit Testingliufabin 66688
 
Refactoring Simple Example
Refactoring Simple ExampleRefactoring Simple Example
Refactoring Simple Exampleliufabin 66688
 

Mais de liufabin 66688 (20)

人大2010新生住宿指南
人大2010新生住宿指南人大2010新生住宿指南
人大2010新生住宿指南
 
中山大学2010新生住宿指南
中山大学2010新生住宿指南中山大学2010新生住宿指南
中山大学2010新生住宿指南
 
武汉大学2010新生住宿指南
武汉大学2010新生住宿指南武汉大学2010新生住宿指南
武汉大学2010新生住宿指南
 
天津大学2010新生住宿指南
天津大学2010新生住宿指南天津大学2010新生住宿指南
天津大学2010新生住宿指南
 
清华2010新生住宿指南
清华2010新生住宿指南清华2010新生住宿指南
清华2010新生住宿指南
 
南京大学2010新生住宿指南
南京大学2010新生住宿指南南京大学2010新生住宿指南
南京大学2010新生住宿指南
 
复旦2010新生住宿指南
复旦2010新生住宿指南复旦2010新生住宿指南
复旦2010新生住宿指南
 
北京师范大学2010新生住宿指南
北京师范大学2010新生住宿指南北京师范大学2010新生住宿指南
北京师范大学2010新生住宿指南
 
北大2010新生住宿指南
北大2010新生住宿指南北大2010新生住宿指南
北大2010新生住宿指南
 
Optimzing mysql
Optimzing mysqlOptimzing mysql
Optimzing mysql
 
Mysql Replication Excerpt 5.1 En
Mysql Replication Excerpt 5.1 EnMysql Replication Excerpt 5.1 En
Mysql Replication Excerpt 5.1 En
 
Drupal Con My Sql Ha 2008 08 29
Drupal Con My Sql Ha 2008 08 29Drupal Con My Sql Ha 2008 08 29
Drupal Con My Sql Ha 2008 08 29
 
Application Partitioning Wp
Application Partitioning WpApplication Partitioning Wp
Application Partitioning Wp
 
090507.New Replication Features(2)
090507.New Replication Features(2)090507.New Replication Features(2)
090507.New Replication Features(2)
 
High Performance Mysql
High Performance MysqlHigh Performance Mysql
High Performance Mysql
 
high performance mysql
high performance mysqlhigh performance mysql
high performance mysql
 
Lecture28
Lecture28Lecture28
Lecture28
 
Refactoring And Unit Testing
Refactoring And Unit TestingRefactoring And Unit Testing
Refactoring And Unit Testing
 
Refactoring Simple Example
Refactoring Simple ExampleRefactoring Simple Example
Refactoring Simple Example
 
Refactoring Example
Refactoring ExampleRefactoring Example
Refactoring Example
 

Mysql Replication

  • 1. Mysql replication report 1 基本用途 2 基本原理 3 搭建过程 4 导致 master 和 slave 不同步的原因 5 Mysql replication 的历程 6 数据库不同步的一些解决方案 Replication 的用途: 1 数据分发 ,scale out,sacle up ,垂直划分,水平划分 2 负载均衡 load balance 3 备份,一般不会用作备份,一旦执行 delete 操作,replication 也不会保留 4 高可用 5 可以在不同的主从库上使用不同的存储引擎 6 测试 mysql 的升级 常见 replication 的架构
  • 2. 常见的负载均衡架构 当使用的 slavae 过多时,减轻 master 压力的级联架构,master2 打开 log-slave- updates 配置
  • 3. 一台 masterdown 时候的,冗余架构 Replication 不同的库到不同的主机 原理 1 三个进程: Mysql 的复制(replication)是一个异步的复制,从一个 Master 复制到另一个 Slave。实现整个复制操作主要由三个进程完成的,其中两个进程在 Slave(Sql 进程和 IO 进程),另外一个进程在 Master(IO 进程)上,可以分别在 master 如果 replication 在进行的话可以通过运行 show processlist 查看,slave 上 可以直线 show slave status 进行查看,里面的 Slave_IO_Running: No
  • 4. Slave_SQL_Running: No,是两个进程的状态是否在运行。Mysql4.0 是两个进程, 后有 yahoo 的一位工程师提出的 3 个进程,博客 为:http://jeremy.zawodny.com/mysql/ 2 三个 log 文件和两个 info 文件: 复制进行时,在 master 上执行的语句会记录到 bin.log 里面,日志的位置和数 字,当有变化 放生时,slave 会通过一个 io 进程读取 master 的二进制 log, 发现有变化时候,会把新的变化副知道他的 relay.log,会记录行的位置和数字 到一个新的文件叫 master.info,继续检查 master 的二进制 log,当 slave 的 sql 进程发现在 relay.log 里有变化时候会执行,同时 slave 也会通过 sql 进 程去对比 master 和 slave 的变化,如果对比发现不一致,复制进程会停止并把 错误信息计入 slave 的 error.log,如果结果能对的上,一个新的日子的位置和 数字会记录到 relay-log.info slave 会等另外一个变化到 relay log 文件。
  • 5. 3 复制的基本过程如下: 简单的讲就是 master 记录其变化到 binlog,slave 接收到变化后会记录到他的 Relay log,slave 通过重放 relay log,然后就写进自己的 log 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 端真实执行时候的那些可执行的内容,并在自身执行 4 Replication 的两种复制级别: Statement level 级别 mysql 3.23 后
  • 6. 每一条修改数据的 query 都会记录到 master 的 binary log 中,slave 复制时 候 sql 线程会解析成合原来的 master 端执行过的相同的 query. 优点是: 不需记录每条变化,减少 log,节省 io。 缺点是:必须每条语句相关信息,即上下文信息。 Row level 级别 5.1 以后: Binary log 会记录成每一行数据被修改的形式,然后在 slave 端口对相同的数 据进行修改。锁表操作会大量减少。 优点:不需记录执行 query 语句的上下文信息,只需要记录那条被修改了,修 改成什么了。 缺点是:产生的 log 记录比较大 还有一种不常用的 mixed 级别。 搭建过程 可以参考 mysql 官方文档: 步骤: 1 Creating a User for Replication 2 Setting the Replication Master Configuration 3 Setting the Replication Slave Configuration 4 Obtaining the Master Replication Information 5 Creating a Data Snapshot Using mysqldump 6 Creating a Data Snapshot Using Raw Data Files 7 Setting Up Replication with New Master and Slaves 8 Setting Up Replication with Existing Data 9 Introducing Additional Slaves to an Existing Replication Environment 10 Setting the Master Configuration on the Slave 导致 master 和 slave 不同步的原因 1 delete update 改变行的时候不用使用 limit 语句,没有 order by 2 一些函数在使用 statements based replication 时候如下:
  • 7. Lode_file,User,Found_rows,UUID, UUID_SHORT,SYSDATE(), 2 使用 session 变量在 sql 语句中,他会导致写到 binlog 里,老版本会出问题 3 不用使用临时表,当 slave crash 掉或者重启后,会丢失信息 4 slave down 掉 5 使用 replicate-ignore-db 和 binlog-ignore-db. 6 错误的 binglog 执行 sql 导致 binlog 堵上 具体可以详见: http://dev.mysql.com/doc/refman/5.0/en/replication.html 5 mysql replication 的历程 mysql 版本的 4.0-5.0:
  • 8. Mysql 5.1 未来 6.0 和 5.4 的新功能: 不分主从库,可以循环 replication。
  • 9. 去掉一个 server 后 加入心跳监测 replication: 自动监测连接状态 Master 空闲时,relay log 不在循环
  • 10. 监测 master 和 slave 的配置在 millisecons 5.1 版本的 replication 的改变: 250 replication bug 关闭 重构了 slave 的 postion handle 部分 修改了一些在 statement 不安全的复制 binglog model 不安全的状态改变的语句会提示警告 自动的引擎控制日志格式 改变了一些配置 参考:http://onlamp.com/pub/a/onlamp/2005/06/16/MySQLian.html http://mysqlha.blogspot.com/2007/11/how-to-keep-mysql-replication-in- sync.html