MySQL主从复制架构及原理

一、简介

在实际生产中,数据的重要性不言而喻,因此考虑到数据的重要性比如单点故障导致后端数据库奔溃,或者后端数据库访问压力过大等,mysql数据库做主从非常有必要,减轻后端数据库压力,主服务器负责读写,从服务器只负责读,这样一来即保证了数据的可靠性,同时提高服务器的高可用。

MySQL主从复制架构如图:

MySQL主从复制原理:

master服务器将数据的改变记录二进制日志,当master上的数据发生改变时,则将其改变写入二进制日志中,salve服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件,同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

二、主从复制配置实现

要求:

1、双方mysql版本需一致,如不一致,只要主节点低于从节点

2、两节点间时间需同步

配置:

主服务器配置如下:

1、修改/etc/my.cnf配置文件

log-bin=/mydata/data/binlogs/master-bin

2、创建此目录并修改属组属主为mysql

mkdir /mydata/binlogs/

chown -R mysql.mysql /mydata/binlogs/

3、授权用户

grant replication slave,replication client on *.* to 'repluser'@'10.1.10.%' identified by 'pass';

flush privileges;

从服务器配置如下:

1、修改/etc/my.cnf配置文件,注释二进制日志,开启中继日志,修改server-id和主节点不一致

server-id=11

relay-log=/mydata/relaylogs/relay-bin

2、创建其目录并授予此目录的属主、属组为mysql

mkdir /mydata/relaylogs/

chown -R mysql.mysql /mydata/relaylogs/

3、连接主服务器

change master to master_host='10.1.10.1',master_user='repluser',master_password='pass';

完成上诉配置过程即可各自启动mysql服务器,且在从服务器上启动I/O,SQL线程,例如:start slave

测试两数据可数据是否能同步,则可在主库上插入数据在从库上查看是否存在,注意:从库只能读,而不能写

三、实战:主从不同步时,如何进行数据同步至一致

描述:当主服务器已经运行一段时间,并且存在不小的数据时,则需把主服务器备份,然后在从服务器恢复,从备份时所在的位置开始复制。

1、将主服务器上的数据做完全备份

2、在从服务器上导入主服务上的完全备份,在导入时关闭I/O和SQL线程

总结:此实战中最为关键主要有两步①主服务器上锁表做完全备份,并滚动日志,②从服务器上进行半道恢复.

作者:小耳朵

来源:http://purify.blog.51cto.com/10572011/1876048

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

经典案例:遭遇RMAN-06004,RMAN-20003后

黄廷忠(网名:认真就输) 云和恩墨技术专家 个人博客:http://www.htz.pw/ 故障描述: 最近遇到11.2.0.3 RAC FOR AIX平台在出...

25960
来自专栏运维技术迷

centos7下卸载python后yum不能使用的恢复方法

手贱!本来是想把python2.7重新安装一下,结果直接remove了。然后使用yum install python的时候发现已经command not fou...

48660
来自专栏CaiRui

Mysql-14-mysql的日志管理

1.简介   日志文件记录着mysql数据库运行期间发生的变化,如:mysql数据库的客户端连接状况、sql语句的执行情况和错误信息等。当数据库遭到意外的损坏时...

24050
来自专栏运维小白

12.3/12.4 PHP安装

PHP安装目录概要 和LAMP安装PHP方法有差别,需要开启php-fpm服务 cd /usr/local/src/ wget http://cn2.php.n...

35580
来自专栏Java开发

Centos用parted分区超过2TB硬盘-分区格式化

CentOS 6.x 在格式化大于16TB的ext4分区时,会提示如下错误: mke2fs 1.41.12 (17-May-2010) mkfs.ext4:...

71420
来自专栏猿天地

elasticsearch 5.0.1安装analysis-ik分词器

在用es做全文检索时必备的一个插件就是分词器,今天介绍下怎么安装ik分词器。 源码安装 git clone https://github.com/medcl/e...

386100
来自专栏逸鹏说道

数据库改名系列(数据库名,逻辑名,物理文件名)

汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 某系统设计的不是很合理,库很多,图形化操作分离都...

36460
来自专栏杨建荣的学习笔记

海量数据迁移之分区并行切分(r2笔记60天)

在海量的数据迁移中,如果某个表特别大,可以考虑对表中的分区进行切分,比如某个表有100g,还有100个分区,那么可以考虑针对这100个分区,那么可以考虑把这10...

31440
来自专栏流柯技术学院

CentOS7下使用yum安装MariaDB

从CentOS 7开始,使用 MariaDB 替代默认的 MySQL。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许...

35050
来自专栏xiaoxi666的专栏

linux常用命令(不断更新)

10220

扫码关注云+社区

领取腾讯云代金券