Mysql主从复制介绍及配置

本文主要通过四方面介绍Mysql的主从复制:

  • 主从复制支持的类型
  • 主从复制的优点
  • 主从复制实现原理
  • 主从复制的配置及demo

1.类型

Mysql支持的复制类型有三种,如下:

  • 基于语句的复制
    在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高
  • 基于行的复制
    把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持
  • 混合型复制
    默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制

2.优点

  • 数据分布 (Data distribution )
  • 负载平衡(load balancing)
  • 备份(Backups)
  • 高可用性和容错行 High availability and failover

3.原理

主从复制最少需要两台机器才能实现,一个作为Master,一个作为Slave,当然也可以有一个Master和多个Slave的情况,如果再加上其他技术或者中间件则也可以实现多个Master的情况,此处分成三个步骤来介绍原理:

  1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
  2. slave将master的binary log events拷贝到它的中继日志(relay log);
  3. slave重做中继日志中的事件,将改变反映它自己的数据

4.配置

配置主要分为两步:Master配置、Slave配置,配置完成后需要进行验证同步。

4.1.前提

  • 主服务器(Master)、从服务器(Slave)mysql版本一致(或者从服务器mysql版本高)
  • 主从服务器上需要配置的数据库中的数据一致,如果都是空数据库最好

4.2.Master配置

4.2.1.编辑my.cnf

命令:

vim /etc/my.cnf

内容如下:

#服务器唯一id,一般取ip最后一段
server_id=65
#指定binlog
log-bin=mysql-bin
#指定需要配置主从的库,如果多个库,则设置多个此属性,不配置此项则所有库都执行复制
binlog-do-db=vote
#指定忽略的库
binlog-ignore-db=mysql
4.2.2.重启Mysql服务

根据mysql版本选择命令:service mysql restart 或者 service mysqld restart

service mysql restart
4.2.3.登录mysql,查看master状态

命令:

show master status

输入如下:
Mysql主从复制介绍及配置_第1张图片

4.2.4.登录mysql,建立用户并授权给slave

命令:

grant replication slave on *.* to 'myslave'@'192.168.45.%' identified by 'root';

命令语法如下:

grant replication slave on *.* to '用户名'@'192.168.45.%' identified by '密码';

其中%是通配符,也可以不用通配符直接指定具体ip。

4.3.Slave配置

4.3.1.编辑my.cnf

命令:

vim /etc/my.cnf

内容如下:

#服务器唯一id,一般取ip最后一段
server_id=64
#指定binlog(此slave做为其他slave的master时候需要配置此项,如果配置此项则必须同时配置log_slave_updates )
#log-bin=mysql-bin
#中继日志
#relay_log=mysql-relay-bin
#log_slave_updates = 1
4.3.2.重启Mysql服务

根据mysql版本选择命令:service mysql restart 或者 service mysqld restart

service mysql restart
4.3.3.登录mysql,停止slave
slave stop
4.3.4.登录mysql,指定master信息

命令(命令中master_log_filemaster_log_pos的值是在master中查看状态结果的信息):

change master to master_host='192.168.45.65',master_user='myslave',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=106;
4.3.5.登录mysql,停止slave
slave start
4.3.6.登录mysql,查看slave状态

查看Slave_IO_Running属性和Slave_SQL_Running属性是yes,则配置成功,命令:

show slave status;

输出如下:
Mysql主从复制介绍及配置_第2张图片

4.3.配置完成,验证同步

登录主库,找到主库my.cnf中binlog-do-db属性对应的数据库名称,在对应的数据库中创建表插入数据,查看slave中对应的数据库是否创建了对应的表和数据。

你可能感兴趣的:(Mysql)