ITPub博客

首页 > 数据库 > MySQL > GTID复制实现

GTID复制实现

原创 MySQL 作者:biggerl 时间:2015-08-12 17:53:35 0 删除 编辑


一、新的master-slave
MySQL开始复制是很简单的过程,不过,根据特定的应用场景,都会在基本的步骤上有一些变化。最简单的场景就是一个新安装的master和slave,从高层来看,整个过程如下:
(1)在每个服务器上创建一个复制帐号
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.*  TO repl@'192.168.0.%' IDENTIFIED BY 'p4ssword';
(2)配置master和slave
配置master:接下来对master进行配置,包括打开二进制日志,指定唯一的servr ID。例如,在配置文件加入如下值:
[mysqld]
log-bin=mysql-bin
server-id=1          #一般是iP地址后几位

gtid_mode = on

enforce_gtid_consistency  = on

transaction-isolation = READ-COMMITTED

重启master,运行SHOW MASTER STATUS

配置Slave:
Slave的配置与master类似,你同样需要重启slave的MySQL。如下:
log_bin = mysql-bin
server_id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1        #对root失效
#slave_skip_errors  = OFF | ALL
#binlog_rows_query_log_events 


server_id是必须的,而且唯一。
设置备库上bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。
relay_log配置中继日志。
log_slave_updates表示slave将复制事件写进自己的二进制日志。
尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。

(3)启动slave
接下来就是让slave连接master,并开始重做master二进制日志中的事件。你不应该用配置文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,而且它可以为slave指定不同的master,而不需要停止服务器。如下:
mysql> CHANGE MASTER TO MASTER_HOST='server1',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='p4ssword';

mysql> START SLAVE;

检查状态:
1、
mysql> SHOW SLAVE STATUS\G slave上的两个进程IO 和SQL进程是否running yes。
2、mysql> show processlist \G
master: repl
slave:system user

二、从另一个master初始化新的slave
Slave与master同步时,需要两样东西:
(1)master的某个时刻的数据快照,一般是最新的全备份;
(2)master最新全备份以后的二进制文件。这两个值可以叫做日志文件坐标(log file coordinate),因为它们确定了一个二进制日志的位置,你可以用SHOW MASTER STATUS命令找到日志文件的坐标;
mysql> CHANGE MASTER TO MASTER_HOST='server1',
    -> MASTER_USER='repl',
    -> MASTER_PASSWORD='p4ssword',
    -> MASTER_LOG_FILE='',        #指定最新全备份以后的日志文件及位置。
    -> MASTER_LOG_POS=;



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29974949/viewspace-1769559/,如需转载,请注明出处,否则将追究法律责任。

上一篇: mysql复制原理
下一篇: 推荐的复制配置
请登录后发表评论 登录
全部评论

注册时间:2014-10-24

  • 博文量
    39
  • 访问量
    88849