gtid_mode = on
enforce_gtid_consistency
= on
transaction-isolation = READ-COMMITTED
一、新的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地址后几位
配置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博客 ” ,链接:https://blog.itpub.net/29974949/viewspace-1769559/ ,如需转载,请注明出处,否则将追究法律责任。