复制功用:

  数据分布
  负载均衡:读操作,适用于读密集型的应用
  备份
  高可用和故障切换
  MySQL升级测试

在从服务器上有两个线程:

  I/O线程:从master请求二进制日志信息,并保存至中继日志

  SQL线程:从relay log中读取日志信息,在本地完成重放

在主服务器上为每个从服务器的I/O线程启动一个dump线程,向其发送binary log events

过程图:

  

补充:对数据库修改的操作首先得应用到磁盘文件才能被写入磁盘二进制日志,因此不可避免从服务器上的数据是会落后于主服务器的

随着网站的发展,当主节点拥有过多从服务器,会给主节点带来过大压力,可以专门使用一台从服务器从主节点上复制二进制日志,再使此从节点变为其他从节点的主节点

过程图:

补充:第一台从服务器不需要存储数据,它只负责传递二进制日志,因此此从服务器的数据库引擎使用BLACKHOLE 当重放中继日志时,它会把所有的数据都放入/dev/null(这相当于一个宇宙黑洞)

二进制日志的格式:建议使用mixed模式,如果可以使用row模式

主从配置过程:

  主:1.启用二进制日志,2.设置一个在当前集群中惟一的server-id(以上两步在配置文件中修改):

    

  3.创建一个有复制权限(REPLICATION SLAVE, REPLICATION CLIENT)账号:

      grant replication slave,replication client on *.* to 'repl'@'%' identified by 'replpass';

      flush privileges;

  从:1.启用中继日志,2.设置一个在当前集群中惟一的server-id(以上两步在配置文件中修改):

    

    3.使用有复制权限用户账号连接至主服务器,并启动复制线程: 

change master to master_host='192.168.238.224',master_user='repl',master_password='replpass',master_log_file='ON.000003',master_log_pos=4;

使用help change master to查看命令帮助

start slave;  开启I/O和SQL线程

show slave status; 查看同步状态,其中的Seconds_Behind_Master可以查看是否落后主节点,以及落后多少

查看从节点是否只读show global variables like 'read_only';

log_slave_updates = 1 (允许备库将其重放的事件也记录到自身的二进制日志,这样自己既可是从节点也可是主节点)

sync_binlog =1 mysql每次在提交内存中的事物会将内存中的二进制日志同步到磁盘上,保证在服务器崩溃的时候不会丢失事件

innodb_support_xa 默认为true,如果关闭则binlog记录事务的顺序可能与实际不符,造成slave不一致    

如果有一台新的从服务器加入,该怎么融入架构中:

    1.在主节点做一个完全备份,并记录二进制日志文件及位置

    2.在从节点恢复此完全备份,并在启动复制时从记录的二进制日志文件和位置开始

问题:如何提供主节点的高可用?

mariadb主从复制架构学习笔记的更多相关文章

  1. aws基础架构学习笔记

    文章大纲 Aws 的优势 架构完善的框架(WAF) Aws 学习笔记 Aws架构中心 Aws 的优势 4.速度优势 5.全球优势 数分钟内实现全球部署 Aws全球基础设施 Aws 数据中心 来自多家O ...

  2. Spring Cloud 微服务架构学习笔记与示例

    本文示例基于Spring Boot 1.5.x实现,如对Spring Boot不熟悉,可以先学习我的这一篇:<Spring Boot 1.5.x 基础学习示例>.关于微服务基本概念不了解的 ...

  3. 大型视频网站YouTube架构学习笔记

    http://www.kaiyuanba.cn/html/1/131/147/7540.htm这几天一直在关注和学习一些大型网站的架构,希望有一天自己也能设计一个高并发.高容错的系统并能应用在实践上. ...

  4. ARMv8 内存管理架构.学习笔记

    http://blog.csdn.net/forever_2015/article/details/50285955 版权声明:未经博主允许不得转载,请尊重原创, 谢谢!   目 录 第1章 分级存储 ...

  5. mariadb数据库备份学习笔记

    备份类型: 完全备份 部分备份:仅备份其中的一张表或多张表 增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分 热备份:在线备份,读写操作不受影响 温备份:在线备份,读操作可继续进行,但写操作 ...

  6. 13 JSP、MVC开发模式、EL表达式和JSPL标签+软件设计架构---学习笔记

    1.JSP (1)JSP概念:Java Server Pages 即java服务器端页面可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码用于简化书写!!! (2)原理 ...

  7. linux云计算集群架构学习笔记:用户管理和root用户密码重置

    RHEL7用户管理 本节所讲内容: 用户和组的相关配置文件 管理用户和组 RHEL7破解root密码 与windows 相比 LINUX中的用户和账号的作用是一样的. 都是基于用户对访问的资源做控制, ...

  8. linux云计算集群架构学习笔记:命令查看文件内容

    查看文件内容 1.cat 命令 作用:查看文件内容 语法:cat 文件名 2. more 命令 作用:分页查看文件内容 语法:more  文件名 例:more /etc/passwd 按下回车刷新一行 ...

  9. linux云计算集群架构学习笔记:系统文件的目录结构

    文件的基本管理和XFS文件系统备份恢复 1.1  Linux系统目录结构,相对/绝对路径. 1.2  创建/复制/删除文件,rm -rf / 意外事故 1.3 查看文件内容 1.4 xfs文件系统的备 ...

随机推荐

  1. linux 去掉 ^M

    要去除他,最简单用下面的命令: dos2unix filename 亲测可用   以下方式不可以: set ff=unix  %s/^M//g 可能是^M输入方式有问题 ^M 输入方法: ctrl+V ...

  2. spark1.2.0版本SparkSQL使用parquet类型注意事项

    在Spark1.2.0版本中是用parquet存储类型时注意事项: sql语句: select * from order_created_dynamic_partition_parquet; 在spa ...

  3. js对象1--杂志

    1.对象数组 var arr = [ ]       //直接量创建 var arr = array()   //通过函数创建 2. 变量与对象 var a = 12;    //变量,不属于谁(默认 ...

  4. Ceph源码解析:PG peering

    集群中的设备异常(异常OSD的添加删除操作),会导致PG的各个副本间出现数据的不一致现象,这时就需要进行数据的恢复,让所有的副本都达到一致的状态. 一.OSD的故障和处理办法: 1. OSD的故障种类 ...

  5. Android Studio使用中的小常识

    1.如何继承抽象类? 1.1新建一个类如下: public class PersonDBOpenHelper{ } 1.2手写extends 你继承的类名 public class PersonDBO ...

  6. 【测试】通过SYS用户,对SCOTT用户的会话进行跟踪,并分析此会话中性能消耗较高的SQL,分析并给出优化建议。

    ①连接到scott下,查询scott对应的sid,serial# SQL> select sid,serial#,username from v$session where username=' ...

  7. 洛谷P1459 三值的排序 Sorting a Three-Valued Sequence

    P1459 三值的排序 Sorting a Three-Valued Sequence 166通过 369提交 题目提供者该用户不存在 标签USACO 难度普及- 提交  讨论  题解 最新讨论 那么 ...

  8. 解决服务器复制中SID冲突问题

    解决服务器复制中SID冲突问题 如果你有多部的主机需要安装,最快的方法是什么?想必就是用像GHOST之类的软件来进行硬盘的复制.当然,如果是安装在虚拟机之中,则需要复制虚拟的硬盘档案即可,以微软的VP ...

  9. Redis+php-resque实现消息队列

      服务器硬件配置 Dell PowerEdge R310英特尔单路机架式服务器 Intel Xeon Processor X3430 2.4GHz, 8MB Cache 8GB内存(2 x 4GB) ...

  10. std::cout彩色输出

    Mac OS效果 Windows 效果 想写这个东西其实是因为最近要写个命令行的工具,但是有个问题是什么呢?就是传统的那个黑漆漆的窗口看起来很蛋疼.并且完全看不到重点,于是就想起 来这么一个东西.相对 ...