顶级MySQL主从复制企业应用

  1. 云栖社区>
  2. 博客>
  3. 正文

顶级MySQL主从复制企业应用

技术小阿哥 2017-11-27 14:24:00 浏览1082

复习:

日志类型:

1、查询日志

2、慢查询日志:和查询日志的区别在于慢查询日志记录查询执行时长

3、错误日志:记录错误,警告,服务器关闭,从服务器线程启动信息

4、二进制日志:记录方式包括基于语句和基于行的记录。

5、事物日志:

6、中继日志:用在复制环境中(通常是从服务器从主服务器哪里获取二进制日志后暂存的格式。)

复制:就是将远程服务器上的二进制日志里面的数据在本地服务器上执行一遍的过程。

239970.tmp

mysql从服务器特点:

1、从服务器通常并不启用二进制日志功能。

2、实现数据读写分离。

3、减轻主服务器压力。

4、如果主服务器压力很大,可以创建一个专门的“中继”服务器,为从服务器提供复制转发功能,而自身并不提供mysql的读功能。此服务器使用的是blackhole引擎。

657233.tmp

双主复制工作方式:

1、双方均记录二进制日志,并接受对方的二进制请求。

2、通过serverID来解决双主复制结构中产生的循环复制问题。

3、并不能降低写操作

4、优势就是可以实现写操作。但是不靠谱

5、真正可以实现分担写操作的方式是通过业务细化分开,将耦合性低的表分开到不同的服务器上实现写分担。

二、主从MySQL设置

主服务器:

1、设置serverID
2、创建二进制日志

3、创建具有复制权限的账户,不要用管理员账户。

4、设置二进制日志的写同步机制,sync_binlog=on

从服务器:

1、启动中继日志,关闭二进制日志(可选)

2、设置server-ID

3、启动复制线程

4、关闭从服务器自动启动从复制功能,skip-slave-start=on

注意:MySQL的版本要求一致,服务器之间要求时间同步。

主服务器:10.40.0.226 server-id 1

从服务器:10.40.0.227 server-id 100

1、安装MySQL软件,修改my.cnf的server-id。这里主的是1,从的是100

主服务器:

log-bin=/mysqldata/binlog/


# binary logging format - mixed recommended

binlog_format=mixed


# required unique id between 1 and 2^32 - 1

# defaults to 1 if master-host is not set

# but will not function as a master if omitted

server-id       = 1

从服务器:

server-id= 100

#set mysqlserver relay log

relay-log=/mysqldata/data/relay-mysql

#mysqlserver is read only

read-only=1


2、主服务器创建具有复制权限的用户,权限为replication slave,replaication licent

mysql> GRANT  REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'gongbing'@'10.40.0.%' IDENTIFIED BY 'gongbing'

    -> ;

Query OK, 0 rows affected (0.00 sec)


3、启动二进制日志,尽量将日志不要和数据放在同一个目录下。设置二进制日志类型

[root@node6.dtedu.com ~]# vim /etc/my.cnf 


[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

server-id=1

log-bin=/mysqldata/binlog/

binlog_format=mixed

sync_binlog = 1


4、进入从服务器的mysql中,设置主服务器连接

使用方法:mysql> help change master to


CHANGE MASTER TO

  MASTER_HOST='master2.mycompany.com',

  MASTER_USER='replication',

  MASTER_PASSWORD='bigs3cret',

  MASTER_PORT=3306,

  MASTER_LOG_FILE='master2-bin.001',

  MASTER_LOG_POS=4,

  MASTER_CONNECT_RETRY=10;

mysql> change master to MASTER_HOST='10.40.0.226',MASTER_USER='gongbing',MASTER_PASSWORD='gongbing';

Query OK, 0 rows affected (0.01 sec)


mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)



mysql> show slave status\G;

*************************** 1. row ***************************

               Slave_IO_State: 

                  Master_Host: 10.40.0.226

                  Master_User: REPLICATION CLIENT

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: 

          Read_Master_Log_Pos: 4

               Relay_Log_File: relay-mysql.000001

                Relay_Log_Pos: 4

        Relay_Master_Log_File: 

             Slave_IO_Running: No

            Slave_SQL_Running: No

              Replicate_Do_DB: 

          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: 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)


ERROR: 

No query specified


5、启动从服务器的MySQL从功能,即可完成主从服务器之间数据备份功能。(此方法复制是将主服务器的数据完整复制过来,但有时要从半路复制的,比如先通过备份还原,再复制的情况,就要看后面的设置方法了。)

mysql> start slave;

Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql> show slave status\G;

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 10.40.0.226

                  Master_User: gongbing

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000002

          Read_Master_Log_Pos: 357

               Relay_Log_File: relay-mysql.000003

                Relay_Log_Pos: 502

        Relay_Master_Log_File: mysql-bin.000002

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          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: 357

              Relay_Log_Space: 798

              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)


ERROR: 

No query specified


三、主从MySQL复制方式之“半路”复制

适用环境:在现有MySQL环境中添加新的用于读操作的MySQL数据库,需要完全备份还原后再设置复制

要点:需要在从服务器上设置change master to 的时候指定主服务器的二进制文件节点位置。

备份方式:mysqldump,lvm,xtrabackup

主服务器完全备份:

[root@node6.dtedu.com /mysqldata/data]# mysqldump -u root --all-database --lock-all-tables --master-data=2 --events >/gong.sql


通过查看主服务器的备份内容获知二进制备份节点位置

[root@node6.dtedu.com /mysqldata/data]# head  -30 /gong.sql 

-- MySQL dump 10.13  Distrib 5.1.73, for redhat-linux-gnu (x86_64)

--

-- Host: localhost    Database: 

-- ------------------------------------------------------

-- Server version 5.1.73-log


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

/*!40103 SET TIME_ZONE='+00:00' */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


--

-- Position to start replication or point-in-time recovery from

--


-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=641;


--

-- Current Database: `gongbing`

--


从服务器设置,首先还原备份的数据,然后开启relay-log日志,设置只读功能,启动从服务器功能,最后启动从服务器

mysql> source /root/gong.sql


server-id= 100

#set mysqlserver relay log

relay-log=/mysqldata/data/relay-mysql

#mysqlserver is read only

read-only=1

mysql> change master to MASTER_HOST='10.40.0.226',MASTER_USER='gongbing',MASTER_PASSWORD='gongbing', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=641;

Query OK, 0 rows affected (0.00 sec)


mysql> start slave;

Query OK, 0 rows affected (0.00 sec)


知识点:

1、从服务器数据日志存储文件介绍:

relay_log.info:记录从服务器的中继日志和主服务器二进制日志之间的当前同步信息位置记录。

master.info:记录主服务器信息记录,包括地址,端口,用户名,密码,二进制文件位置等。

master_auto_position=1这条适用于启动了gtid功能后有效。

2、重置slave设置使用reset命令,当主从复制不同步的时候通常检查以下几种情况:

a、时间是否一致

b、检查主mysql服务器的二进制日志文件是否和从mysql匹配,建议在change master to 的时候指定清楚master_log_file。(重要)

mysql> reset slave all;

Query OK, 0 rows affected (0.00 sec)





四、半同步复制

MySQL半同步复制

从MySQL5.5开始,MySQL以插件的形式支持半同步复制。如何理解半同步呢?首先我们来看看异步,全同步的概念

异步复制(Asynchronous replication)

MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

全同步复制(Fully synchronous replication)

指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。

半同步复制(Semisynchronous replication)

介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

1、安装插件plugins,主服务器安装semisync_master.so,从服务器安装semisync_slave.so。

2、在主从服务器上启动相关插件

主:mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> mysql> install rpl_semi_sync_master SONAME 'semisync_master.so’;     \\将库文件加载进来

Query OK, 0 rows affected (0.03 sec)


mysql> show global variables like '%semi%’; \\查看变量状态值

+------------------------------------+-------+

| Variable_name                      | Value |

+------------------------------------+-------+

| rpl_semi_sync_master_enabled       | OFF   |

| rpl_semi_sync_master_timeout       | 10000 |

| rpl_semi_sync_master_trace_level   | 32    |

| rpl_semi_sync_master_wait_no_slave | ON    |

+------------------------------------+-------+

4 rows in set (0.00 sec)


mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1; \\设置启动半同步功能

Query OK, 0 rows affected (0.00 sec)


mysql> set global rpl_semi_sync_master_timeout = 1000; \\设置超时时间为1000毫秒

Query OK, 0 rows affected (0.00 sec)



从:mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;


mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so’; \\将库文件加载进来

Query OK, 0 rows affected (0.00 sec)


mysql> show global variables like '%semi%';

+---------------------------------+-------+

| Variable_name                   | Value |

+---------------------------------+-------+

| rpl_semi_sync_slave_enabled     | OFF   |

| rpl_semi_sync_slave_trace_level | 32    |

+---------------------------------+-------+

2 rows in set (0.00 sec)


mysql> set global rpl_semi_sync_slave_enabled = 1 \\设置启动半同步功能

    -> ;

Query OK, 0 rows affected (0.01 sec)

mysql> stop slave; //重启slave服务

Query OK, 0 rows affected (0.00 sec)


mysql> start slave;

Query OK, 0 rows affected (0.01 sec)


检查半同步工作状态:


mysql> show global status like '%semi%';

+--------------------------------------------+-------+

| Variable_name                              | Value |

+--------------------------------------------+-------+

| Rpl_semi_sync_master_clients               | 1     | //启动成功

| Rpl_semi_sync_master_net_avg_wait_time     | 0     |

| Rpl_semi_sync_master_net_wait_time         | 0     |

| Rpl_semi_sync_master_net_waits             | 0     |

| Rpl_semi_sync_master_no_times              | 0     |

| Rpl_semi_sync_master_no_tx                 | 0     |

| Rpl_semi_sync_master_status                | ON    |

| Rpl_semi_sync_master_timefunc_failures     | 0     |

| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |

| Rpl_semi_sync_master_tx_wait_time          | 0     |

| Rpl_semi_sync_master_tx_waits              | 0     |

| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |

| Rpl_semi_sync_master_wait_sessions         | 0     |

| Rpl_semi_sync_master_yes_tx                | 0     |

+--------------------------------------------+-------+

14 rows in set (0.00 sec)

这里是通过命令直接令mysql生效的,如果希望下次启动还能生效,则需要在my.cnf文件中分别配置主从服务器的rpl_semi_sync_slave_enabledrpl_semi_sync_master_enabled 参数

参考文献:http://www.cnblogs.com/ivictor/p/5735580.html

错误汇总:

1、yum安装MySQL过程中,在没有复制my-large.cnf文件到/etc/my.cnf中,可以正常启动,但是复制后,启动各种错误都有

[root@node6.dtedu.com /var/lib/mysql]# tail /var/lib/mysql/node6.dtedu.com.err 

170710  0:53:09 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

170710  0:53:09  InnoDB: Initializing buffer pool, size = 8.0M

170710  0:53:09  InnoDB: Completed initialization of buffer pool

170710  0:53:09  InnoDB: Started; log sequence number 0 44233

170710  0:53:09 [Note] Recovering after a crash using mysql-bin

170710  0:53:09 [Note] Starting crash recovery...

170710  0:53:09 [Note] Crash recovery finished.

170710  0:53:09 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)

170710  0:53:09 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)

170710 00:53:09 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended


[root@node6.dtedu.com ~]# service mysqld start

MySQL Daemon failed to start.

Starting mysqld:                                           [FAILED]


原因可能和之前安装过有关,需要做如下操作:(其实就是需要重新初始化一下,并设置好权限)

a、删除/var/lib/mysql目录

b、通过mysql_inittab_db —user=root —datadir=/mysqldata/data,需要设置目录权限为mysql

c、重启服务。

2、如果在/mysqldata/data/hostname.err文件中出现以下信息:

[root@node6.dtedu.com /mysqldata/data]# tail /mysqldata/data/node6.dtedu.com.err 

170710  1:31:54 [ERROR] Failed to open log (file './mysql-bin.000013', errno 13)

170710  1:31:54 [ERROR] Could not open log file

170710  1:31:54 [ERROR] Can't init tc log

170710  1:31:54 [ERROR] Aborting


170710  1:31:54  InnoDB: Starting shutdown...

170710  1:31:59  InnoDB: Shutdown completed; log sequence number 0 44233

170710  1:31:59 [Note] /usr/libexec/mysqld: Shutdown complete


170710 01:31:59 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended


需要考虑以下情况

1) 如果mysql没有开启binlog,则不会遇到这个问题;

2) 如果mysql开启了binlog,并且在Datadir物理迁移的过程中,修改了datadir的路径,就会遇到这个问题,此时,可以编辑log-bin-index文件修复log-bin文件的路径或者直接删除,然后启动mysql服务;

3) 为了避免遇到这个问题,在进行datadir迁移的时候,尽量不要改变datadir的路径;

以上种种情况均均是由于mysql_inittab_db进行初始化的时候出现的,原因是此脚本搭载的参数和my.cnf参数的冲突,在初始化的时候,my.cnf的优先级高于脚本在后面带的参数,如—user=root。如果产生 冲突势必会给后面的使用造成各种各样的问题。

所以两处设置一处就可以了,并且在初始化时要删除数据存储目录下的文件才可以。

查看当前二进制日志工作节点位置:

mysql> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000002 |      106 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)


mysql> 


五、主从复制之过滤功能

通过在主服务器或者从服务器上设置过滤功能,实现从服务器只复制某一个特定的数据库,而不是所有数据库,这样适用于有多个从服务器的情况。

将过滤功能设置在主服务器优点是节约了从服务器读取二进制日志的数据量,但是由于这种过滤是通过只记录有一个数据库操作记录完成的所以在数据恢复的时候回造成数据丢失。(需要二进制日志备份的时候)

从服务器启动过滤功能,最常用,从服务器完整的复制过来主服务器的二进制日志,然后自己进行过滤,只复制其中的指定数据库。

左边的适用于主服务器过滤,右边适用于从服务器过滤。

以do为白名单为主,以ignore为黑名单。

六、主从复制之多线程复制(一从一主)

通常情况下,主服务器是使用多线程对请求进行操作的,但是在早期版本的mysql中,从服务器并不允许使用多线程复制主服务器的二进制日志,直到MySQL5.6以后才支持此功能,但是有一个前提条件就是,一个数据库只能有一个线程进行操作,如果主服务器有五个数据库,就可以有5个线程对应进行复制操作。

TID:事物的ID号

GTID:全局事物的ID号

GTID复制原理:

主服务器宕机后,在B或C中选择一个服务器作为主服务器,并且他们之间的复制是通过Gtid完成的,目的是保证id号的唯一性,当B和C之间存在不一致时,新的主服务器从另一个从服务器中复制差异部分。

MySQL的高可用方法:

MMM:

MHA:

galera:一种复制机制,独立于mysql之外。

实现GTID复制的前提条件: 要求python使用2.7以上版本。

binlog-format:二进制日志格式,有row、statement、mixed几种。

当设置隔离级别为read-commited时必须设置格式为row,并且官方认为statement已经不适合使用了,mixed在默认的事物隔离级别下,可能会造成主从服务不一样。

log-slave-updates、gtid-mode、enforce-gtid-consistency、report-port和report-host:适用于启动GTID及满足附属的其他需求。

master-info-repository和relay-log-info-repository:用于实现在崩溃时保证二进制及从服务器安全的功能。

sync-master-info:启用可确保无信息丢失

slave-paralles-workers:设定从服务器的SQL线程数,0表示关闭多线程复制。

binlog-rows-query-log-events:启用之可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度

log-bin:启动二进制日志,保证复制功能的基本前提

server-id:同一个复制拓扑图中的所有服务器id号必须唯一

binlog-checksum、master-verify-checksum和slave-sql-verify-checksum:启动复制有关的所有校验信息

主节点(www.node9.com)配置文件:

pid-file = /var/lib/mysql/mysql.pid

log-bin = /mysqldata/data/binlog

sync_binlog = 1

binlog-format = row

gtid-mode = on

enforce-gtid-consistency = true

master-info-repository = table

relay-log-info-repository = table

sync-master-info = 1

slave-parallel-workers = 2

binlog-checksum = crc32

master-verify-checksum = 1

slave-sql-verify-checksum = 1

binlog-rows-query-log_events = 1

log-slave-updates = 1

server-id = 1

report-port = 3306

port = 3306

datadir = /mysqldata/data

socket = /var/lib/mysql/mysql.sock //这个位置不要改变


report-host = www.node9.com


从节点(www.node8.com)配置文件:

[mysqld]


port  = 3306

datadir = /mysqldata/data

socket = /mysqldata/data/mysql.sock

pid-file = /mysqldata/data/mysqld.pid

log-error = /mysqldata/data/mysql.err

binlog-format=row

log-slave-updates=true

gtid-mode=on

enforce-gtid-consistency=true

master-info-repository=table

relay-log-info-repository=table

sync-master-info=1

slave-parallel-workers=2

binlog-checksum=crc32

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log_events=1

server-id=100

report-port=3306

log-bin=mysql-bin.log

datadir=/mysqldata/data

socket=/mysqldata/data/mysql.sock

report-host=www.node8.com

[mysql]

socket = /mysqldata/data/mysql.sock


[mysqlsafe]

log-error=/mysqldata/data/mysqld.log

pid-file =/mysqldata/datamysqld.pid

socket  = /mysqldata/data/mysql.sock


datadir = /mysqldata/data


设置从节点连接主节点:

mysql> change master to MASTER_HOST='10.40.0.228',MASTER_USER=‘gongbing',MASTER_PASSWORD='gongbing',MASTER_AUTO_POSITION=1;

mysql>start slave;


mysql> show slave status\G;

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 10.40.0.228

                  Master_User: gongbing

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: binlog.000025

          Read_Master_Log_Pos: 619

               Relay_Log_File: mysqld-relay-bin.000002

                Relay_Log_Pos: 823

        Relay_Master_Log_File: binlog.000025

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          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: 619

              Relay_Log_Space: 1028

              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: 1

                  Master_UUID: 8392feb9-703e-11e7-b41d-000c29c776c1

             Master_Info_File: mysql.slave_master_info

                    SQL_Delay: 0

          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: 8392feb9-703e-11e7-b41d-000c29c776c1:1-2

            Executed_Gtid_Set: 8392feb9-703e-11e7-b41d-000c29c776c1:1-2

                Auto_Position: 1

1 row in set (0.00 sec)


ERROR: 

No query specified

查看启动复制进程信息:

mysql> show processlist;

+-----+-------------+-----------+------+---------+--------+-----------------------------------------------------------------------------+------------------+

| Id  | User        | Host      | db   | Command | Time   | State                                                                       | Info             |

+-----+-------------+-----------+------+---------+--------+-----------------------------------------------------------------------------+------------------+

| 206 | root        | localhost | NULL | Query   |      0 | init                                                                        | show processlist |

| 211 | system user |           | NULL | Connect |   1418 | Waiting for master to send event                                            | NULL             |

| 212 | system user |           | NULL | Connect |   1418 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL             |

| 213 | system user |           | NULL | Connect | -41245 | Waiting for an event from Coordinator                                       | NULL             |

| 214 | system user |           | NULL | Connect | -41587 | Waiting for an event from Coordinator                                       | NULL             |

+-----+-------------+-----------+------+---------+--------+-----------------------------------------------------------------------------+------------------+

5 rows in set (0.01 sec)

mysql工具下载地址:https://github.com/mysql/mysql-utilities

1、mysqlreplicate:用途是快速启动从服务器

2、mysqlrplcheck:用来校验主从节点之间数据库数据是否一致。

3、mysqlrplshow:快速显示当前主从节点间拓扑结构。

4、mysqlfailover:快速实现故障转移。

5、mysqlrpladmin:手动将主服务器下线。




本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968807,如需转载请自行联系原作者