ITPub博客

首页 > 数据库 > MySQL > mysql5.7主从复制说明及配置主从详细步骤

mysql5.7主从复制说明及配置主从详细步骤

原创 MySQL 作者:pingdanorcale 时间:2019-03-07 17:03:18 0 删除 编辑

一、 mysql主从复制原理

      MySQL数据库自身提供的主从复制功能可以实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。

Mysql主从复制的实现原理图大致如下:

 


 MySQL之间数据复制的基础是二进制日志文件(binary log file),原理如下:

1.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;

2.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息,偏移量和binlog文件名等发送给从库

3.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名

4.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。

5.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息

6.从库如果也要做主库,也要打开log_bin 和log-slave-update参数

二、 mysql主从复制类型 

 

1 基于语句的复制

    主服务器上面执行的语句在从服务器上面再执行一遍,在MySQL-3.23版本以后支持。

2 基于行复制

    把主服务器上面改编后的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的,在MySQL-5.0版本以后引入。

3 混合复制类型

     MySQL默认使用基于语句的复制,当基于语句的复制会引发问题的时候就会使用基于行的复制,MySQL会自动进行选择。

在MySQL主从复制架构中,读操作可以在所有的服务器上面进行,而写操作只能在主服务器上面进行。主从复制架构虽然给读操作提供了扩展,可如果写操作也比较多的话(多台从服务器还要从主服务器上面同步数据),单主模型的复制中主服务器势必会成为性能瓶颈。

三、 MySQL主从复制详细配置  

 

1.配置说明

   ·          主服务器:

o     开启二进制日志

o     配置唯一的server-id ---一般设置IP地址后两位

o     获得master二进制日志文件名及位置

o     创建一个用于slave和master通信的用户账号

·          从服务器:

o     配置唯一的server-id

o     使用master分配的用户账号读取master二进制日志

o     启用slave服务

2. 具体实现过程如下:

    

1、准备工作

    (1).主从数据库版本最好一致

(2).主从数据库内数据保持一致

主数据库:192.168.1.158 /linux6.5

从数据库:10.168.1.159 /linux6.5

Mysql 版本为5.7

2、主数据库master修改
1.修改mysql配置my.cnf  


 主要参数

 log-bin

 server-id

不同步哪些数据库 

 (一般同步不要同步mysql库,因为有很多用户名和密码)

binlog - ignore - db  =  mysql 

binlog - ignore - db  =  sys

…….

2.重启并创建同步数据的用户

mysql> grant replication slave on *.* to 'rep'@'10.168.1.159' identified by '123456';

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

3.备份需要同步的数据库

锁定一下表:

flush tables with read lock;(为了同步前数据一致。)

mysqldump     -B  dbname1  dbaname2 -uroot -p > /u01/fulldb.sql


4.查看master状态,记录二进制文件

3.从服务器slave配置
1、修改my.cn f


2、重启并恢复数据库

mysql -uroot –p  < /u01/fulldb.sql

3、执行同步sql语句

 change master to 

 master_host='192.168.1.158',

 master_port=3307,

 master_user='rep',

 master_password='123456', 

 master_log_pos=592;

4、启动slave同步进程

 在master上执行

  mysql>unlock tables;

   mysql>start slave;  

5、查看slave状态

状态主要看

Slave_IO_Running: Yes 

//此状态必须YES

Slave_SQL_Running: Yes 

//此状态必须YES

全变YES说明主从配置成功,当MySQL主服务器有更新变化时,从服务器会根据具体配置做相应的同步。

6、设置从库只读

mysql> set global read_only=1;

  Query OK, 0 rows affected (0.00 sec)


至此配置完成。

  

参考资料:

mysql 官方文档


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10201716/viewspace-2637828/,如需转载,请注明出处,否则将追究法律责任。

全部评论

注册时间:2009-01-02

  • 博文量
    48
  • 访问量
    89773