关闭

mysql集群+复制

287人阅读 评论(0) 收藏 举报
分类:
详解MySQL集群下的复制(replicate)原理
1. 集群下的复制

1.1. 简述

从MySQL 5.1 开始,就支持集群+复制了,这对于想要构建一个高可用方案的用户来说,无疑是个惊喜。在这种模式下,既有主从的实时备份,又有基于集群的负载均衡,不足指出在于,从我的测试结果来看,这种方案下的性能还不是太高,仍有待改进。

集群+复制的配置其实很简单,就是配置好2个独立的集群后,把其中一个的SQL节点作为另一个集群SQL节点的slave即可。甚至可以使用下面几种架构:


3个集群,3个SQL节点,形成一个3个点环形的复制。



3个集群,6个SQL节点,形成一个3个点环形的复制。

1.2. 开始配置

1.2.1. master上的配置

由于集群下的复制是基于row-based复制的,因此需要设置logbin-format的格式为:ROW 或者 MIXED。
相对于普通的mysqld服务器配置,只需要增加类似如下2行:

    server-id = 1  
    binlog_format = "ROW" #or MIXED

1.2.2. slave上的配置

新版本的MySQL已经不再通过 my.cnf 来指定master相关的信息了,而是通过 CHANGE MASTER 指令来管理。因此,slave上只需简单增加类似如下几行:

    server-id = 2
    relay-log-purge=1
    skip-slave-start  
    replicate-ignore-db=mysql

1.3. 启动slave

先按照正常的方式启动master和slave上的mysqld后,执行SHOW PROCESSLIST 可以看到2个mysqld都只有2个进程:

    mysql> SHOW PROCESSLIST;  
    +----+-------------+-----------+------+---------+------+-----------------------------------+------------------+  
    | Id | User        | Host      | db   | Command | Time | State                             | Info             |  
    +----+-------------+-----------+------+---------+------+-----------------------------------+------------------+  
    |  1 | system user |           |      | Daemon  |    0 | Waiting for event from ndbcluster | NULL             |  
    |  2 | root        | localhost | NULL | Query   |    0 | NULL                              | show processlist |  
    +----+-------------+-----------+------+---------+------+-----------------------------------+------------------+  
    2 rows in set (0.00 sec)

在slave上执行 SHOW SLAVE STATUS 再看看:

    mysql> show slave status\G  
    Empty set (0.00 sec)

可以看到,现在还没有任何复制相关的配置。因此,我们需要先在master上添加一个账户用于复制:

    mysql> GRANT REPLICATION SLAVE, GRANT REPLICATION CLIENT ON *.* TO rep@’192.168.1.2’ IDENTIFIED BY ‘rep’;  
    Query OK, 0 rows affected (0.00 sec)

然后,我们用 CHANGE MASTER 指令来指定一下 master 相关的参数:

    mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.2', MASTER_USER='rep', MASTER_PASSWORD='rep';   
    Query OK, 0 rows affected (0.01 sec)  
     
    mysql> SHOW SLAVE STATUS\G  
    *************************** 1. row ***************************  
                   Slave_IO_State:   
                      Master_Host: 192.168.0.2  
                      Master_User: rep  
                      Master_Port: 3306  
                    Connect_Retry: 60  
                  Master_Log_File:   
              Read_Master_Log_Pos: 4  
                   Relay_Log_File: slave-relay-bin.000001  
                    Relay_Log_Pos: 4  
            Relay_Master_Log_File:   
                 Slave_IO_Running: No  
                Slave_SQL_Running: No  
                  Replicate_Do_DB:   
              Replicate_Ignore_DB: mysql  
               Replicate_Do_Table:   
           Replicate_Ignore_Table:   
          Replicate_Wild_Do_Table:   
      Replicate_Wild_Ignore_Table:   
                       Last_Errno: 0  
                       Last_Error:   
                     Skip_Counter: 0  
              Exec_Master_Log_Pos: 0  
                  Relay_Log_Space: 106  
                  Until_Condition: None  
                   Until_Log_File:   
                    Until_Log_Pos: 0  
               Master_SSL_Allowed: No  
               Master_SSL_CA_File:   
               Master_SSL_CA_Path:   
                  Master_SSL_Cert:   
                Master_SSL_Cipher:   
                   Master_SSL_Key:   
            Seconds_Behind_Master: NULL  
    Master_SSL_Verify_Server_Cert: No  
                    Last_IO_Errno: 0  
                    Last_IO_Error:   
                   Last_SQL_Errno: 0  
                   Last_SQL_Error:   
    1 row in set (0.00 sec)

执行 START SLAVE 来启动它。

    mysql> start slave;  
    Query OK, 0 rows affected (0.00 sec)

再来看看:

    mysql> SHOW SLAVE STATUS\G  
    *************************** 1. row ***************************  
                   Slave_IO_State: Waiting for master to send event  
                      Master_Host: 192.168.0.2  
                      Master_User: rep  
                      Master_Port: 3306  
                    Connect_Retry: 60  
                  Master_Log_File: binlog.000001  
              Read_Master_Log_Pos: 256  
                   Relay_Log_File: slave-relay-bin.000002  
                    Relay_Log_Pos: 398  
            Relay_Master_Log_File: binlog.000001  
                 Slave_IO_Running: Yes  
                Slave_SQL_Running: Yes  
                  Replicate_Do_DB:   
              Replicate_Ignore_DB: mysql  
               Replicate_Do_Table:   
           Replicate_Ignore_Table:   
          Replicate_Wild_Do_Table:   
      Replicate_Wild_Ignore_Table:   
                       Last_Errno: 0  
                       Last_Error:   
                     Skip_Counter: 0  
              Exec_Master_Log_Pos: 256  
                  Relay_Log_Space: 557  
                  Until_Condition: None  
                   Until_Log_File:   
                    Until_Log_Pos: 0  
               Master_SSL_Allowed: No  
               Master_SSL_CA_File:   
               Master_SSL_CA_Path:   
                  Master_SSL_Cert:   
                Master_SSL_Cipher:   
                   Master_SSL_Key:   
            Seconds_Behind_Master: 0  
    Master_SSL_Verify_Server_Cert: No  
                    Last_IO_Errno: 0  
                    Last_IO_Error:   
                   Last_SQL_Errno: 0  
                   Last_SQL_Error:   
    1 row in set (0.00 sec)

1.4. 简单测试

这个留给读者自己按照常规的测试去完成吧。
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

mysql复制主从集群搭建

最近搭了个主从复制,中间出了点小问题,排查搞定,记录下来 1 环境: 虚拟机: OS: centos6.5 Linux host2 2.6.32-431.el6.x86_64 #1 SMP Fri...
  • BeiiGang
  • BeiiGang
  • 2014-08-28 17:50
  • 3275

mysql主主复制,只因为mycat集群需要

本来想着搭建一下mysql的主从复制,可以把mycat的mysql集群搞起来,发现,mysql主从搭建的mycat mysql集群不太合理,所以,还是用先搭建下mysq的主主复制吧。顺便记下笔记,将来...
  • yingxiake
  • yingxiake
  • 2016-06-16 17:49
  • 1288

mysql_经典的mysql数据库集群、 备份 <Replication>。

前言 MySQLReplicaion本身是一个比较简单的架构,就是一台MySQL服务器(Slave)从另一台MySQL服务器(Master)进行日志的复制然后再解析日志并应用到自身。一个复制环境仅...
  • l308718280
  • l308718280
  • 2014-12-25 13:46
  • 629

集群之MYsql主从服务之引伸出Mysql互为主从(环形结构)

本人资历很浅,说的不对话,万望各位前辈不要计较, 另关于环形的问题,我在后面的评论给予回复, 其实环形,解决多地域问题比较好的选择 关于配置步骤我重新整理了一下(主从AND环形)的配置步骤 在...
  • abcd1f2
  • abcd1f2
  • 2015-07-29 15:32
  • 412

Weblogic 12c 集群部署和session复制

在上一篇Weblogic12c集群搭建的基础上,这一篇介绍Weblogic12c集群应用的部署和session复制.1、启动服务首先在weblogic12c控制台,启动受托管服务server1、ser...
  • yulei_qq
  • yulei_qq
  • 2016-10-10 17:30
  • 2701

MongoDB搭建ReplSet复制集群

MongoDB的复制集是一个主从复制模式 又具有故障转移的集群,任何成员都有可能是master, 当master挂掉用会很快的重新选举一个节点来充当master。 复制集中的组成主要成员 ...
  • tao1992
  • tao1992
  • 2017-04-17 15:31
  • 383

MySQL集群搭建步骤详解

本文将搭建一个最简化的MySQL Cluster系统,配置方法中的所有命令都是以root账户运行。这个MySQL Cluster包含一个管理结点、两个数据结点、两个SQL结点,这五个结点会分别安装在五...
  • lifuxiangcaohui
  • lifuxiangcaohui
  • 2015-05-05 14:12
  • 1116

MySQL复制的三种架构

MySQL复制相对比较简单,就是将主数据库的DDL和DML操作通过二进制日志传到复制服务器(也叫从库)上,然后在从库 上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。其他主要商业...
  • OnlyQi
  • OnlyQi
  • 2016-01-30 16:24
  • 965

MySQl复制---基于行的复制

一、环境: 主库(master)和从库(slave)均为刚刚安装好,且都是默认的数据库,也就是说两台服务器上的数据均相同 二、MySQl实际复制过程概述: 1)在主库上把数据更改记录到二进制日志...
  • chlinwei
  • chlinwei
  • 2017-03-28 09:54
  • 824

MySQL 5.6 复制介绍

           1、介绍 MySQL复制使得用户能够经济高效地提高应用性能、可扩展性以及高可用性。许多全球流量最大的网站,例如eBay、Facebook、T...
  • winsonyuan
  • winsonyuan
  • 2015-03-04 10:57
  • 1392
    个人资料
    • 访问:525853次
    • 积分:6445
    • 等级:
    • 排名:第4368名
    • 原创:139篇
    • 转载:219篇
    • 译文:6篇
    • 评论:24条
    文章分类
    最新评论