前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql 主从复制

mysql 主从复制

作者头像
程序员同行者
发布2018-07-24 11:31:37
1.1K0
发布2018-07-24 11:31:37
举报
文章被收录于专栏:程序员同行者程序员同行者

如果是A-->B-->C这样的复制模式,B的配置文件中要加上

log_slave_updates=1

Mysql主从复制

1.1Mysql主从复制原理

Mysql的复制是一个异步复制的过程,从一个主(master)的复制到另一个备(salve)的。在主备之间实现复制过程主要有三个线程来完成,其中两个线程(sql线程和IO线程)在备端,另一个线程(IO线程)在主端。

要实现主备之间的复制,首先要打开master端的二进制日志(mysql-bin.XXXXXX)功能。因为整个复制过程实际上就是slave从master端获取该日志然后再在自己身上按照顺序的执行日志中所记录的各种操作。

打开mysql的二进制日志可以通过在启动mysql server的过程中使用“-log-bin”参数选项,或者在my.cnf配置文件中的msyqld参数组([mysqld]标识后的参数部分)增加“log-bin”参数项。

如:log-bin=mysql-bin

1.2Msyql复制基本过程

Slave上的IO线程连接上master,并要求从指定日志文件的指定位置之后的日志内容;

Master接收到来自slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位置之后的信息,返回给slave端的IO线程。返回信息中除了日志包含的信息之外,还包括本次返回的信息在master端的二进制日志文件的名称以及在二进制日志中的位置;

Slave的IO线程接收到信息后,将接收到的日志内容依次写入到slave端的Relay Log文件(mysql-relay-bin.XXXXXX)的最末端,并读取到的master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉master“我需要某个bin-log的哪个位置开始之后的日志内容,请发给我”;

Slave的sql线程检测到Relay Log中新增加了内容后,会马上解析该Log文件中的内容成为在master端真实执行时候的那些可执行的Query语句,并在自身执行这些Query语句。这样就是在master和slave执行力同样的Query,所以两端的数据是完全一样的。

1.3Mysql主从复制实现过程

环境介绍:

服务器名

IP地址

数据库版本

Data目录

Master

192.168.2.98

Mysql-5.5.24

/servyou/app/mysql/data/

Slave

192.168.2.133

Mysql-5.5.24

/servyou/app/mysql/data/

1.4Master端设置

1)   修改my.cnf配置文件;

[mysqld] log-bin=mysql-bin 启动二进制文件 server-id=1 服务器ID #binlog-do-db=test需要同步的二进制数据库名 #binlog-ignore-db=mysql不需要同步的二进制数据库,如果不需要可注释掉

2)   重启mysql;

/etc/init.d/mysqld restart

3)   建立slave复制所需要使用的帐号,并授权给slave服务器;

mysql> grant replication slave on *.* to 'backup'@'192.168.2.194'  identified by 'backup';

4)   设置读锁,清除写入操作;

mysql>flush tables with read lock;

5)   获得二进制日志文件名和偏移量

mysql> show master status;

6)   备份数据库

mysqldump  test >  test.sql

7)   解锁;

mysql>unlock tables;

1.5Slave端设置

还原master端备份的数据库

1)  修改my.cnf配置文件

修改my.cnf配置文件

[mysqld] log-bin=mysql-bin 启动二进制文件 server-id=2 服务器ID #binlog-do-db=test需要同步的二进制数据库名 #binlog-ignore-db=mysql不需要同步的二进制数据库,如果不需要可注释掉

2)  执行同步

mysql> change master to master_host='192.168.2.179', master_user='backup', master_password='backup' ,master_log_file='mysql-bin.000032' ,master_log_pos=249279507;

3)  启动备服务器的slave线程

mysql> start slave;

4)  验证

mysql> show slave status\G;

看到上面的两个“Yes”说明同步成功。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-12-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档