MySQL 主从复制

了解MySQL主从复制:
MySQL的复制功能是构建大型,高性能应用程序的基础。主从复制是指一台服务器充当主数据库服务器(master),另一台或多台服务器充当从数据库服务器(slave),主服务器中的数据自动复制到从服务器之中。MySQL主从复制的基础是主服务器对数据库修改并记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。

复制解决的问题:

  • 数据分布 (Data distribution)
  • 负载均衡 (Load balancing)
  • 高可用及容错 (High availability and failover)
  • 备份(Backups)

MySQL复制的类型:

  • SBR(statement based replicate):基于语句的复制,在主服务器上执行的SQL语句,在从服务器上执行同样的语句。
  • RBR(row based replicate):基于行的复制,将主服务器上改变的内容复制过去。
  • MIX(mixed):默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

MySQL主从复制原理:

  1. master将改变的内容记录到二进制日志中(binary log),这些记录叫做二进制日志事件(binary log events);
  2. slave通过 IO thread 接收master的binary log,并写入到slave的 realay log(中继日志)中,SQL thread 从realay log 读取事件,并更新slave数据。

 

MySQL主从配置:

master配置:
禁用GTID:gtid_mode=OFF
server_id:103306 (建议IP后两位加数据库端口号)
log_bin:log_bin=ON
binlog_format:binlog_format=ROW (可选:mixed|statement )
创建复制账号:

grant replication slave on *.* to 'repl'@'%' identified by 'password';


查看master状态:

show master status\G;

查看Binlog Dump:

show processlist\G;

  Command: Binlog Dump
  State: Master has sent all binlog to slave; waiting for more updates

 

slave配置:
禁用GTID:gtid_mode=OFF
server_id:113306 (建议IP后两位加数据库端口号)
log_bin:log_bin=ON
log_slave_updates:log_slave_updates=ON
连接主库:

CHANGE MASTER TO
 MASTER_HOST='192.168.100.10',
 MASTER_USER='repl',
 MASTER_PASSWORD='password',
 MASTER_PORT=3306,
 MASTER_LOG_FILE='mysql-bin.000002',
 MASTER_LOG_POS=3141

开启同步:

start slave;

其他命令:

stop slave:关闭同步
start slave io_thread:开启IO线程,stop 关闭
start slave sql_thread:开始SQL线程,stop 关闭

查看slave状态:

show slave status\G;

  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
IO thead 和 SQL thead线程:

show processlist\G;

  Command: Connect
  State: Waiting for master to send event
  Command: Connect
  State: Slave has read all relay log; waiting for more updates

posted @ 2018-02-06 22:28  erdancry  阅读(94)  评论(0编辑  收藏  举报