复制类型  

  (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. SIMLock锁卡功能解析

    一.锁卡背景介绍 锁卡即SIMLock,当手机开机启动或者插入SIM卡时,手机modem侧预置在NV项中的配置信息会与SIM卡中的信息做比对,检测是否匹配.若匹配,则SIM卡可以正常使用.若不匹配,则 ...

  2. 让linux开机默认开启小键盘

     linux默认开机不开启数字键盘numberlock,每次输入开机密码还得劳烦自己去点亮指示灯,让此灯开机自动点亮,需要一个软件才行,就是numlockx了,可以通过yum安装:yuminstall ...

  3. linux添加启动器图标(Ubuntu为例)

     添加启动器图标,以eclipse为例,%表示命令提示符,shell命令:%nano /usr/share/applications/eclipse.desktop-----------[Deskto ...

  4. logstash+elasticsearch+kibana管理日志(安装)

    logstash1.先安装jdk2.wget https://download.elastic.co/logstash/logstash/logstash-2.4.0.tar.gz tar -xzvf ...

  5. input文本框录入字母自动大写

    向文本框输入文字时,如何让小写字母自动变为大写呢?有一个简单有效的做法是用CSS. <input name="t1" type="text" style= ...

  6. 纯Swift编写的仿“随遇”应用源码

    纯Swift编写的仿“随遇”App概述 此项目是为了巩固Swift掌握而编写的,素材均来自“随遇”官方App 用Storyboard+Xib+Autolayout的方式来实现UI部分 由于项目不复杂, ...

  7. 使用GIT进行源码管理 —— 在VisualStudio中使用GIT

    GIT作为源码管理的方式现在是越来越流行了,在VisualStudio 2012中,就通过插件的现实对GIT进行了官方支持,并且这个插件在VS2013中已经转正.本文在这里简单的介绍一下如何在Visu ...

  8. 一个高级的J2E工程师需要面对MySQL要有那些基本功夫呢<上>

    1. MySQL的架构介绍1.1 MySQL简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不 ...

  9. Java类加载基本过程

    基本过程:   根据类的全限定名称加载定义类的二进制字节流. 将字节流代表的静态存储结构转化为方法区的运行时数据结构 内存中生成一个代表这个类的java.lang.Class对象,作为方法去这个类的各 ...

  10. shell脚本批量收集linux服务器的硬件信息快速实现

    安装ansible批量管理系统.(没有的话,ssh远程命令循环也可以) 在常用的数据库里面新建一张表,用你要收集的信息作为列名,提供可以用shell插入.