Mysql复制(Master/Slave实现)

1、Mysql复制方式:

* 基于行的复制(5.1中引入)

* 基于语句的复制

注:都是通过在主库上记录binlog、在备库上重放日志的方式来实现异步的数据复制的。这意味着,在同一时间点备库上的数据可能与主库存在不一致性,并且无法保证主备之间的延迟。

2、应用场景:

* 数据分布: Mysql复制通常不会对带宽造成很大的压力,但是基于行的复制会比传统的基于语句复制模式的带宽压力更大些。

* 负载均衡: 通过Mysql复制可以装读操作分布到多个服务器上,实现对读密集型应用的优化,并且实现方便,通过简单的代码就可以实现基本的负载均衡。(如:对机器人名做硬编码或将一个机器名指向多个IP地址。等等)

* 备份数据

* 高可用性和故障切换

* Mysql升级测试

3、复制工作流:

1)在主库上把数据更改记录到二进制日志中。

每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志中。Mysql会按事务提交的顺序而非每条语句的执行顺序来记录二进制日志。记录完  成后,主会告诉存储引擎可以提交事务;

2)备库将主库上的日志复制到自己的中继日志中。

由备库启动一个工作线程,称为I/O线程, 跟主库建立一个连接,然后在主库上启动一个特殊的二进制转储(binlog dump)线程(该线程没有对应的sql命令),这个二进制转储线程会读取主库上二进制日志中的事件。它不会对事件进行轮询。如果该线程追赶上主库,将进入休眠状态,直到主库发送信号通知其有新的事件产生才会被唤醒,备库IO线程会将接收到的事件记录到中继日志中。

3)备库读取中继日志中的事件,将其重放在备库数据之上。

4、XXOO:

Mysql基于语句与行复制,感觉与Redis的RDB与AOF实现都差不多。 估计Master与Slave这样的架构都这么实现吧

时间: 2024-07-28 23:22:54

Mysql复制(Master/Slave实现)的相关文章

MySQL的Master/Slave集群安装和配置

本文讲述MySQL的Master/Slave集群安装和配置,安装的版本是最新的稳定版本GA 5.6.19. 为了支持有限的HA,我们使用Master/Slave简单的读写分离集群.有限的HA是指当Master不可用时,数据不会丢失,但在Master宕机的情况下是不可写的,必须手工处理故障.如果要支持更高的可用性,可以使用两台Master来做热切换. Master和Slave的MySQL安装是相同的,只是my.cnf的配置不同,需要配置二进制日志文件复制. 没有特殊说明,命名中带#的为root用户

mysql (master/slave)复制原理及配置

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

Redis的复制(Master/Slave)

是什么 : 也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 能干嘛: 读写分离,容灾恢复 怎么玩: 1.配从(库)不配主(库) 2.从库配置:slaveof 主库IP 主库端口 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件 Info replication 3.修改配置文件细节操作 拷贝多个redis.conf文件 开启daemonize yes Pid文件名字

MySQL show master / slave status 命令参数

一.show master status 二.show slave status Slave_IO_State SHOW PROCESSLIST输出的State字段的拷贝.SHOW PROCESSLIST用于从属I/O线程.如果线程正在试图连接到主服务器,正在等待来自主服务器的时间或正在连接到主服务器等,本语句会通知您 Master_User 被用于连接主服务器的当前用户. Master_Port 当前的主服务器接口. Connect_Retry --master-connect-retry选项

Redis学习十:Redis的复制(Master/Slave)【重要】

一.是什么 官网 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 二.能干嘛 读写分离  容灾恢复 三.怎么玩 1.配从(库)不配主(库) 2.从库配置:slaveof 主库IP 主库端口 说明: 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件 Info replication 3.修改配置文件细节操作 [1]拷贝多个redis.conf文件 [2]开启dae

基于levelDB可复制master/slave(zookeeper+levelDB)

Leveldb是一个google实现的非常高效的kv数据库,是单进程的服务,能够处理十亿级别规模Key-Value型数据,占用内存小. 基于可复制LevelDB的集群方案,需要引入ZooKeeper.根据ZooKeeper的使用方式可以分为单节点的ZooKeeper和Zookeeper集群.这里我们只讲述ZooKeeper集群,单节点不是一个可靠的选择. 4.1 Zookeeper集群配置 ZooKeeper可以在网站http://zookeeper.apache.org/ 下载.我们使用的是z

Windows下搭建MySQL Master Slave

转:http://www.cnblogs.com/gaizai/p/3248207.html http://www.cnblogs.com/gaizai/archive/2013/03/15/2961868.html   MySQL表数据迁移自动化 http://www.cnblogs.com/gaizai/archive/2012/10/23/2735556.html  Ubuntu10下MySQL搭建Master Slave 一.背景 服务器上放了很多MySQL数据库,为了安全,现在需要做M

mysql主从复制 master和slave配置的参数大全

master所有参数1 log-bin=mysql-bin 1.控制master的是否开启binlog记录功能: 2.二进制文件最好放在单独的目录下,这不但方便优化.更方便维护. 3.重新命名二进制日志很简单,只需要修改[mysqld]里的log_bin选项,如下例子:要重新调整logbin的路径为"/home/mysql/binlog"[mysqld]log_bin=/home/mysql/binlog/binlog.log ll /home/mysql/binlog-rw-rw--

mysql 主从配置(master slave)

mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修改主服务器master:   #vi /etc/my.cnf       [mysqld]       log-bin=mysql-bin   //[必须]启用二进制日志       server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP