一、MySQL主从搭建
搭建主从架构的MySQL常用的有两种实现方式:
基于binlog的fileName + postion模式完成主从同步。
基于gtid完成主从同步搭建。
本篇就介绍如何使用第一种方式完成MySQL主从环境的搭建。
基于fileName和position去实现主从复制,所谓的fileName就是bin-log的name,position指的是slave需要从master的binlog的哪个位置开始同步数据。
这种模式同步数据方式麻烦的地方就是需要我们自己通过如下的命令去查找应该从哪个bin-log的哪个position去开始同步。
二、主库
2.1、确定主库的binlog是否开启
命令:show variables like 'bin-log'
原因:了解MySQL中常见的三个日志:
单机MySQL的undolog日志中记录着如何将现有的数据恢复成被修改前的旧数据。
单机MySQL的redolog. 中记录事物日志。
主从模式的MySQL通过bin-log日志同步数据。
2.2、骚气的命令
grant replication slave on *.* to MySQLsync@"127.0.0.1" identified by "MySQLsync123";
这条命令是在干什么呢?
捋一下思路:我们做主从同步,在主库这边我们其实会单独创建一个账号用于实现主从同步。下面的命令其实就会帮我们创建出 username=mysqlsync password=mysqlsync123的账户专门用户主从同步使用。
执行完上面的命令后,执行如下的命令查看上面的grant执行结果:
select user, host from mysql.user like '%mysqlsync%'
2.3、记录主库的master状态
注意主库的查看主库当前是第几个binlog,已经数据的position。
因为一会从库就是根据这两个信息知道自己该从主库的第几个binlog的什么positon开始同步。
三、从库
3.1、从库和主库保持同步
从库执行change语句,和主库保持同步
CHANGE MASTER TO
MASTER_HOST='10.157.23.158',
MASTER_USER='mysqlsync',
MASTER_PASSWORD='mysqlsync123',
MASTER_PORT=8882,
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=1013;
CHANGE MASTER TO
MASTER_HOST = '${new_master_ip}',
MASTER_USER = '${user}',
MASTER_PASSWORD = '${password}',
MASTER_PORT = ${new_master_port},
master_auto_position = 1;
CHANGE MASTER TO
MASTER_HOST = '10.157.23.123',
MASTER_USER = 'mysqlsync',
MASTER_PASSWORD = 'mysqlsync123',
MASTER_PORT = 8882,
master_auto_position = 1;
3.2、开启主从同步
start slave
show slave status \G
当我们可以看到 io线程和sql线程的状态都是yes时,说明此刻主从同步已经搭建完成了。
3.3、从库:如何断开主从
stop slave io_thread
stop slave sql_thread
3.4、主库:如何断开主从
把用于进行主从同步的账号删除就好了
drop user ${user}@${slave_ip}
四、中断处理
中断处理部分说的是,一开始我们搭建主从很可能并不是一番风顺的,就比如上面的Slave_IO_Running和Slave_SQL_Running很可能处于NO的状态。下面介绍一下常见的解决方式。
4.1、S