MySQL5.6新特性GTID、多线程复制 
在Oracle发布MySQL5.6看到众多新特性之后很兴奋,包括对复制的改进.在MySQL5.5半同步复制之后MySQL5.6又引入GTID、多线程复制,在这里总结这一下这两个新特性.
1、引入GTID,在MySQL5.6以前对于主从复制出现问题有时候需要你分析BINLOG找到POS点,然后在CHANG MASTER TO.对于新手来说很容易犯错,造成主从复制错误.在新版本中,不必在需要寻找BINLOG和POS点,你只需要知道MASTER的IP、密码、端口就可以,因为MySQL会从内部GTID机制自动找到同步点. 
2、多线程复制,在MySQL5.6之前,复制是单线程队列式的,只能一个一个运行.在新版中支持基于库的多线程复制,但是库里的表不能多线程. 
下面实现以下这两个新特性 
注:以下实验数据库版本MySQL5.6.15 
MASTER: 
my.cnf添加以下参数 
binlog_format = row 
gtid_mode = ON 
enforce-gtid-consistency = ON 
slave_parallel_workers=4           --开启基于库的多线程复制默认0不开启 
binlog_cache_size = 8M 
max_binlog_size = 50M 
max_binlog_cache_size = 100M 
sync_binlog = 1 
expire_logs_days = 1 
log-slave-updates=true 
SLAVE: 
my.cnf添加以下参数  
binlog_format = row 
gtid_mode = ON 
enforce-gtid-consistency = ON 
binlog_cache_size = 8M 
max_binlog_size = 50M 
max_binlog_cache_size = 100M 
sync_binlog = 1 
expire_logs_days = 1 
slave_parallel_workers=4 
max_relay_log_size = 50M 
relay_log_purge = 1 
relay_log_recovery = 1  
master_verify_checksum = 1        --主事件校验 
slave_sql_verify_checksum = 1     --从事件校验 
slave_allow_batching = 1 
log-slave-updates=true 
MASTER: 
mysql> use percona; 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 
Database changed 
mysql>  
mysql> show tables; 
+-------------------+ 
| Tables_in_percona | 
+-------------------+ 
| test              | 
+-------------------+ 
1 row in set (0.00 sec) 
  
mysql> select * from test; 
Empty set (0.02 sec) 
  
mysql> desc test; 
+-------+---------+------+-----+---------+-------+ 
| Field | Type    | Null | Key | Default | Extra | 
+-------+---------+------+-----+---------+-------+ 
| id    | int(11) | YES  |     | NULL    |       | 
+-------+---------+------+-----+---------+-------+ 
1 row in set (0.00 sec) 
mysql> insert into test values (1); 
Query OK, 1 row affected (0.04 sec) 
mysql> insert into test values (1); 
Query OK, 1 row affected (0.00 sec) 
mysql> insert into test select * from test; 
Query OK, 64 rows affected (0.00 sec) 
Records: 64  Duplicates: 0  Warnings: 0 
mysql> flush logs; 
Query OK, 0 rows affected (0.02 sec) 
mysql>  
SLAVE: 
mysql> change master to master_host='192.168.40.176',master_port=3306,master_user='repl',master_password='123456',master_auto_position=1,master_delay=20;   --master_delay此参数表示relay日志会同步到slave机,但是会根据事件时间戳延时20秒,在某些场景会用到. 
Query OK, 0 rows affected, 0 warnings (0.05 sec) 
mysql> start slave; 
Query OK, 0 rows affected, 0 warning (0.04 sec) 
mysql> show slave status\G 
*************************** 1. row *************************** 
               Slave_IO_State: Waiting for master to send event 
                  Master_Host: 192.168.40.176 
                  Master_User: repl 
                  Master_Port: 3306 
                Connect_Retry: 10 
              Master_Log_File: mysql-bin.000046 
          Read_Master_Log_Pos: 191 
               Relay_Log_File: mysqld-relay-bin.000004 
                Relay_Log_Pos: 401 
        Relay_Master_Log_File: mysql-bin.000046 
             Slave_IO_Running: Yes 
            Slave_SQL_Running: Yes 
              Replicate_Do_DB: test,percona,mysql 
          Replicate_Ignore_DB:  
           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: 191 
              Relay_Log_Space: 693 
              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:  
  Replicate_Ignore_Server_Ids:  
             Master_Server_Id: 2 
                  Master_UUID: 69a73914-62ca-11e3-870f-080027dff846 
             Master_Info_File: /mysql/data/master.info 
                    SQL_Delay: 30 
          SQL_Remaining_Delay: NULL 
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it 
           Master_Retry_Count: 86400 
                  Master_Bind:  
      Last_IO_Error_Timestamp:  
     Last_SQL_Error_Timestamp:  
               Master_SSL_Crl:  
           Master_SSL_Crlpath:  
           Retrieved_Gtid_Set:  
            Executed_Gtid_Set:  
                Auto_Position: 1 
1 row in set (0.00 sec) 
mysql> show slave status\G 
*************************** 1. row *************************** 
               Slave_IO_State: Waiting for master to send event 
                  Master_Host: 192.168.40.176 
                  Master_User: repl 
                  Master_Port: 3306 
                Connect_Retry: 10 
              Master_Log_File: mysql-bin.000050 
          Read_Master_Log_Pos: 191 
               Relay_Log_File: mysqld-relay-bin.000009 
                Relay_Log_Pos: 401 
        Relay_Master_Log_File: mysql-bin.000050 
             Slave_IO_Running: Yes 
            Slave_SQL_Running: Yes 
              Replicate_Do_DB: test,percona,mysql 
          Replicate_Ignore_DB:  
           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: 191 
              Relay_Log_Space: 856 
              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:  
  Replicate_Ignore_Server_Ids:  
             Master_Server_Id: 2 
                  Master_UUID: 69a73914-62ca-11e3-870f-080027dff846 
             Master_Info_File: /mysql/data/master.info 
                    SQL_Delay: 20 
          SQL_Remaining_Delay: NULL 
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it 
           Master_Retry_Count: 86400 
                  Master_Bind:  
      Last_IO_Error_Timestamp:  
     Last_SQL_Error_Timestamp:  
               Master_SSL_Crl:  
           Master_SSL_Crlpath:  
           Retrieved_Gtid_Set: 69a73914-62ca-11e3-870f-080027dff846:13-36 
            Executed_Gtid_Set: 69a73914-62ca-11e3-870f-080027dff846:1-36 
                Auto_Position: 1 
1 row in set (0.00 sec) 
开启SLAVE观察Retrieved_Gtid_Set与Executed_Gtid_Set 
Retrieved_Gtid_Set:记录从MASTER获取BINLOG的位置 
Executed_Gtid_Set:记录从机执行的MASTER和SLAVE BINLOG日志位置 
注: 
UUID:身份ID,第一次启动MySQL时会产生UUID写入到auto.cnf文件,不建议修改 
例: 
[mysql@localhost ~]$ cat /mysql/data/auto.cnf  
[auto] 
server-uuid=69a73914-62ca-11e3-870f-080027dff846 
GTID:全局事务标识符,每次BINLOG写入事务都会产生唯一一个标识符,由UUID+Transcation ID组成. 
例: 
mysql> show master status; 
+------------------+----------+--------------------+------------------+-------------------------------------------+ 
| File             | Position | Binlog_Do_DB       | Binlog_Ignore_DB | Executed_Gtid_Set                         | 
+------------------+----------+--------------------+------------------+-------------------------------------------+ 
| mysql-bin.000050 |      191 | test,percona,mysql |                  | 69a73914-62ca-11e3-870f-080027dff846:1-36 | 
+------------------+----------+--------------------+------------------+-------------------------------------------+ 
1 row in set (0.00 sec)

MySQL5.6 GTID、多线程复制的更多相关文章

  1. MySQL5.7配置基于GTID的复制

    MySQL5.7下配置GTID复制的方法: 修改主库和从库的配置文件,加入下列部分的配置项:主库:[mysqld]log-bin=mysql-binbinlog_format= ROWgtid-mod ...

  2. MySQL并发复制系列二:多线程复制

     http://blog.itpub.net/28218939/viewspace-1975822/ 并发复制(Parallel Replication) 系列二: Enhanced Multi-th ...

  3. MySQL并发复制系列二:多线程复制 2016

    并发复制(Parallel Replication) 系列二: Enhanced Multi-threaded Slaves作者:沃趣科技MySQL数据库工程师  麻鹏飞 首先梳理下传统MySQL/M ...

  4. MySQL5.6 GTID Replication

    MySQL 5.6 的新特性之一,是加入了全局事务 ID (Global Transaction ID) 来强化数据库的主备一致性,故障恢复,以及容错能力.官方文档:http://dev.mysql. ...

  5. MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)

    MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves) http://www.tuicool.com/articles/m2Unmeq 姜承饶 简称MTS:基于binlog ...

  6. MySQL5.6 GTID新特性实践

    MySQL5.6 GTID新特性实践 GTID简介 搭建 实验一:如果slave所需要事务对应的GTID在master上已经被purge了 实验二:忽略purged的部分,强行同步 本文将简单介绍基于 ...

  7. MySQL\MariaDB 多线程复制初探

    背景: MariaDB 在10.0.5就已经支持了并行复制的功能,即从库多线程复制的功能.MySQL最先在5.6.3中支持.目前暂时没有用MySQL5.6的版本,故暂时只对MariaDB进行一些说明, ...

  8. MYSQL 基于GTID的复制

    1.概述 从MYSQL5.6 开始,mysql开始支持GTID复制. 基于日志点复制的缺点: 从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致. 基于GTID复制: ...

  9. MySQL5.7 GTID 浅析

    https://yq.aliyun.com/articles/68441 摘要: # GTID 简介 GTID (global transaction identifier)在MySQL5.6时引入, ...

随机推荐

  1. Sprint(第十天11.23)

  2. Windows下的Memcache安装

    Windows下的Memcache安装: 1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached2. 在终端(也即cmd命令界面)下输入 'c:\memca ...

  3. Linux环境部署(JDK/Tomcat/MySQL/证书)

    #################### 安装JDK1.7.x ####################下载JDK1.7版本的tar包(http://www.oracle.com/technetwor ...

  4. 理解RESTful

    REST全称为Representational State Transfer,可以翻译为“表现状态转换”,是由是Roy Thomas Fielding在他2000年的博士论文中提出的,目的是为了得到一 ...

  5. 实现table的单线边框的办法

    实现table的单线边框的办法 现在给出效果图: 1.实现方法一:    <table border="0" cellspacing="1" style= ...

  6. md语法之行内代码和代码片续集

    md语法之行内代码和代码片 一行之内嵌入一小段代码, 简称行内代码. 其方法为: 用撇号把代码围起来. 比如: import numpy as ny就可以了. 代码片的方法: 三个连续的撇号+pyth ...

  7. MFC编程入门之二十(常用控件:静态文本框)

    上一节讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控 ...

  8. MVC 使用 Ueditor富文本编辑器

    一.Ueditor 1.下载Ueditor富文本编辑器 官方下载地址: http://ueditor.baidu.com/website/download.html 建议下载开发版,此处我下载的是 . ...

  9. openssl lhash 数据结构哈希表

    哈希表是一种数据结构,通过在记录的存储位置和它的关键字之间建立确定的对应关系,来快速查询表中的数据: openssl lhash.h 为我们提供了哈希表OPENSSL_LHASH 的相关接口,我们可以 ...

  10. openssl stack 数据结构栈基本操作

    堆栈是两种不同的数据结构: 堆:数据先进先出: 栈:数据先进后观: 在stack.h 中 openssl 为我们提供了一个通用的栈,利用提供的接口我们可以方便的用此栈来存放开发中的任意数据. open ...