复制类型  

  (1)基于语句的复制:  在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。  一旦发现没法精确复制时,会自动选着基于行的复制。

  (2)基于行的复制:把改变的内容复制过去
  (3)混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

复制解决的问题

(1)    数据分布
         (2)    负载平衡
         (3)    备份
         (4)    高可用性和容错行

步骤

   (1)  master将改变记录到二进制日志中(binary log);
      (2)  slave将master的binary log拷贝到它的中继日志(relay log);
      (3)  slave重做中继日志中的事件,将改变反映它自己的数据。

配置

主服务器必须激活二进制日志功能。从服务器必须具备让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限

关停Master服务器,将Master中的数据拷贝到B服务器中,使得Master和slave中的数据同步,并且确保在全部设置操作结束前,

禁止在Master和slave服务器中进行写操作,使得两数据库中的数据一定要相同

1.在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接maste

授予REPLICATION SLAVE权限

create user backup;
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'10.0.0.1' IDENTIFIED BY '123456';

2.设置master

my.ini文件,在[mysqld]下面增加

log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=mshop
binlog_ignore_db=mysql

  注:

  server-id=1中的1可以任定义,只要唯一的就行。
  binlog-do-db=wordpress是表示只备份wordpress。
  binlog_ignore_db=mysql表示忽略备份mysql。不加binlog-do-db和binlog_ignore_db,表示备份全部数据库

  重启mysql,是否成功,用show variables like "%log_%";

  SHOW MASTER STATUS可查看日志

3.设置slave

my.ini文件,在[mysqld]下面增加

log_bin           = mysql-bin
server_id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1

  slave没有必要开启二进制日志,但是如果slave为其它slave的master,必须设置bin_log

4.启动slave

让slave连接master,并开始重做master二进制日志中的事件

change master to master_host='10.0.0.1', //Master 服务器Ip
master_port=3306,
master_user='backup',
master_password='123456',
master_log_file='mysql-bin.000001',//Master服务器产生的日志
master_log_pos=0;

5.启动slave

start slave;

6.检查是否正常

(1)在主服务器上执行

SHOW MASTER STATUS

(2)在从服务器上执行

SHOWSHOW SLAVE STATUS

  检查是否slave_IO_Running和slave_SQL_Running的值均为Yes

  Slave_IO_Running 如果是 Yes 的话代表成功从主服务器中同步到 bin-log 日志
  Slave_SQL_Running 如果是 Yes 的话代表成功执行 bin-log 日志中的 SQL 语句

(3)如果从服务器正在运行,查看是否建立了与主服务器的连接

SHOW PROCESSLIST

  如果I/O线程状态为Connecting to master,验证主服务器上复制用户的权限、主服务器主机名、DNS设置,是否主服务器真正在运行,以及是否可以从从属服务器访问

注意:主服务器与从服务器的时区必须一致,否则mysql执行与时间相关的函数将会导致数据不一致

7.复制的基本原则

(1)    每个slave只能有一个master;
(2)    每个slave只能有一个唯一的服务器ID;
(3)    每个master可以有很多slave;
(4)    如果你设置log_slave_updates,slave可以是其它slave的master,从而扩散master的更新 

说明:编写一shell脚本,用nagios监控slave的两个yes。如果都是yes,就表明主从有问题了。Nagios是一个监视系统运行状态和网络信息的监视系统。可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等

Mysql主从架构的复制的更多相关文章

  1. 高性能Mysql主从架构的复制原理及配置详解

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  2. 转:高性能Mysql主从架构的复制原理及配置详解

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  3. 高性能Mysql主从架构的复制原理及配置详解(转)

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  4. 高性能Mysql主从架构的复制原理及配置

    1. 复制概述 1.1 mysql支持的复制类型 1.2 复制解决的问题 1.3 复制如何工作 2. 2 复制配置 2.1创建复制帐号 2.2拷贝数据 2.3配置master 2.4配置slave 2 ...

  5. Mysql学习总结(18)——Mysql主从架构的复制原理及配置详解

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  6. Mysql主从架构的复制原理及配置详解

    一.简述Mysql复制 Mysql复制是通过将mysql的某一台主机的数据复制到其他主机(slaves)上,并且在slaves上重新执行一遍来实现.主服务器每次数据操作都会将更新记录到二进制日志文件, ...

  7. MySQL 主从架构配置详解

    无论是哪一种数据库,数据的安全都是至关重要的,因此熟练掌握数据库的安全备份功能,是作为开发人员,特别是后端开发人员的一项必备技能.MySQL 数据库内建的复制功能,可以帮助我们对数据进行异地备份,读写 ...

  8. MySQL主从架构之Master-Slave主从同步

    MySQL复制 MySQL复制是指将主库上的DDL和DML操作通过二进制日志传到从库上,使主库和从库上的数据保持同步 复制原理: 主服务器将更新写入二进制日志文件,并维护文件的一个索引来跟踪日志循环. ...

  9. Mysql主从架构报错-Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work...

    在搭建Mysql主从架构过程中,由于从服务器是克隆的主服务器系统,导致主从mysql uuid相同, Slave_IO无法启动,报错如下: The slave I/O thread stops bec ...

随机推荐

  1. Mysql性能优化三(分表、增量备份、还原)

    接上篇Mysql性能优化二 对表进行水平划分 如果一个表的记录数太多了,比如上千万条,而且需要经常检索,那么我们就有必要化整为零了.如果我拆成100个表,那么每个表只有10万条记录.当然这需要数据在逻 ...

  2. Mybatis框架的模糊查询(多种写法)、删除、添加(四)

    学习Mybatis这么多天,那么我给大家分享一下我的学习成果.从最基础的开始配置. 一.创建一个web项目,看一下项目架构 二.说道项目就会想到需要什么jar 三.就是准备大配置链接Orcl数据库 & ...

  3. CSS3之新UI方案

    border-radius 圆角 参数可为像素 也可为百分比 当一个参数时 作用范围为四个角 当两个参数时 作用范围为 左上右下 右上左下 当三个参数时 作用范围为 左上 右上左下 右下 当四个参数时 ...

  4. JavaScript 函数表达式

    JavaScript中创建函数主要有两种方法:函数声明和函数表达式.这两种方式都有不同的适用场景.这篇笔记主要关注的是函数表达式的几大特点以及它的使用场景,下面一一描述. 主要特点 可选的函数名称 函 ...

  5. Android 手机卫士--平移动画实现

    本文实现如下几个界面之间的平移动画实现 本文地址:http://www.cnblogs.com/wuyudong/p/5954847.html,转载请注明出处. 分析: 导航界面移动过程中,平移动画 ...

  6. Swift3 - String 字符串、Array 数组、Dictionary 字典的使用

    Swift相关知识,本随笔为 字符串.数组.字典的简单使用,有理解.使用错误的地方望能指正. ///************************************************** ...

  7. NSURLSession网络请求

    个人感觉在网上很难找到很简单的网络请求.或许是我才疏学浅 ,  所有就有了下面这一段 , 虽然都是代码 , 但是全有注释 . //1/获取文件访问路径 NSString *path=@"ht ...

  8. angularJS 学习演示

    开源网址(带中文说明注释):https://github.com/EnhWeb/angularJS.git

  9. SQL Server 2014新特性:其他

    AlwaysOn 增强功能 SQL Server 2014 包含针对 AlwaysOn 故障转移群集实例和 AlwaysOn 可用性组的以下增强功能: “添加 Azure 副本向导”简化了用于 Alw ...

  10. SQL语句中的where 1=1 和0=1

    摘自:http://blog.sina.com.cn/s/blog_afe616ab0101camd.html SQL where 1=1 和0=1的作用 where 1=1; 这个条件始终为True ...