2018年10月11日第二十七节课笔记——mysql主从

内容摘要

  • mysql主从介绍
  • 准备工作
  • 配置主
  • 配置从
  • 测试主从同步
  • 扩展

一、MySQL主从介绍

  •  MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的
  •  MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
  •  主从过程大致有3个步骤
  1. 主将更改操作记录到binlog里
  2. 从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
  3. 从根据relaylog里面的sql语句按顺序执行
  •  主上有一个log dump线程,用来和从的I/O线程传递binlog
  •  从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地
  • MySQL主从原理图

2018年10月11日第二十七节课笔记——mysql主从

  • 常见的使用场景有两个:
  1. 作为备份使用
  2. 分担主数据库的压力

二、准备工作

实现MySQL主从复制需要进行的配置

  • 主服务器:
  1. 开启二进制日志
  2. 配置唯一的server-id
  3. 获得master二进制日志文件名及位置
  4. 创建一个用于slave和master通信的mysql用户账号
  • 从服务器:
  1. 配置唯一的server-id
  2. 使用master分配的用户账号读取master二进制日志
  3. 启用slave服务
  • 主从数据库版本最好一致
  • 主从数据库内数据保持一致

三、 配置主

  • 修改/etc/my.cnf,增加配置语句:server-id任意数字不能与从服务器相同

server-id=130

log_bin=aminglinux1

  • 重启mysql:/etc/init.d/mysqld restart
  • 备份blog,zrlog数据库,作为测试使用(除mysql默认生成的库performance_schema,mysql,test):
  1. mysqldump -uroot blog > /tmp/blog.sql
  2. mysqldump -uroot zrlog > /tmp/zrlog.sql

2018年10月11日第二十七节课笔记——mysql主从

  • 创建用作同步数据的用户:grant replication slave on *.* to 'repl'@192.168.157.130 identified by 'zhaoyujie';
  • 锁定主数据库:flush tables with read lock;
  • 查看数据库状态(file和position显示的信息将在配置从数据库是用到):show master status;

2018年10月11日第二十七节课笔记——mysql主从

四、配置从

  • 修改/etc/my.cnf,增加配置语句(在从上执行):server-id=132       要求和主不一样
  • 重启mysql:/etc/init.d/mysqld restart
  • 把主上需要同步的库,导入到从的数据库中(在从上执行):
  • 在从数据库中创建zrlog库:create database zrlog;
  • 在从数据库中创建blog库:create database blog;
  • 将主数据库备份的文件传输到从上(在从上执行): scp [email protected]:/tmp/zrlog.sql /tmp/
  • 导入备份文件:mysql -uroot -p zrlog < /tmp/zrlog.sql
  • 在从数据库上执行命令:stop slave
  • 在从数据库上执行命令: change master to master_host='192.168.157.128', master_user='repl', master_password='zhaoyujie', master_log_file='zhaoyujie.000001', master_log_pos=11037;
  1.  change master to master_host=主数据库的IP
  2.  master_user=用于主从的数据库用户名
  3. master_password=用于主从的数据库用户的密码
  4.  master_log_file=主数据库使用命令show master status;中file显示的信息
  5. master_log_pos=主数据库使用命令show master status;中Position显示的信息,不需要使用单引号
  • 查看主从同步是否正常开启:show slave stauts\G
  • 显示两个yes时表示开启成功:

 Slave_IO_Running: Yes

 Slave_SQL_Running: Yes

 Seconds_Behind_Master: 0  为主从延迟的时间

2018年10月11日第二十七节课笔记——mysql主从

五、测试主从同步

  • 主服务器上几个配置参数

 binlog-do-db=      仅同步指定的库

 binlog-ignore-db=   忽略指定库

  • 从服务器上几个配置参数

 replicate_do_db=                   

 replicate_ignore_db=

 replicate_do_table=

 replicate_ignore_table=

 replicate_wild_do_table=     如aming.%, 支持通配符%   主要使用该配置

 replicate_wild_ignore_table=   如aming.%, 支持通配符%   主要使用该配置

  • 查看主数据库blog的表

2018年10月11日第二十七节课笔记——mysql主从

  • 删除主数据库blog的plugin表:drop table blog.plugin;
  • 查看从数据库blog的表:可以看到从数据库bkog的plugin表也已经被删除。

2018年10月11日第二十七节课笔记——mysql主从

六、扩展

  1. http://www.rfyy.net/archives/2309.html
  2. http://blog.51cto.com/storysky/259280
  • 关于 auto_increment  
  1. https://blog.****.net/leshami/article/details/39779509
  2. http://www.cnblogs.com/ygqygq2/p/6045279.html