mariadb主从多用于网站架构,因为该主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建

主:可以写,可以读,从同步

从:可读,但是写的话主不会同步

工作原理: 当有数据进入到master 时,binarylog (二进制日志)会做出相应的记录,从节点要想读取到主节点的Binarylog日志,需要在master 上创建一个同步账号,用来从节点(master)登录来读取Binarylog(二进制日志),当从节点(slave)用同步账号登录主节点(master)来读取Binarylog日志时,从节点(slave)会生成两个线程,分别为 i/o thread  与 SQL thread ,i/o 线程主要是读 主节点(master) 中的 Binarylog 日志,而master会生成一个线程(dumpthread)用来接收从节点(slave)端所发出的请求,并返回数据到从节点(salve),通过 i/o thread 写入到 Relaylog (中继日志),这时 从节点(salve)的另一个线程 SQLthread  进行读取 Relaylog(中继日志)并回放;从而实现了主从同步,一个主从架构最少会有三个线程

这只是有一个从节点,然而多个从节点呢,因为每有一个从节点(salve) 来读取主节点(master)的Binarylog  (二进制日志),主节点(master)就会生成一个dump thread 进程,当从节点(salve) 达到几百台甚至上千台,可想而知会对主节点(master)造成多大的压力,这时我们可以设置一个master的代理主节点,使它的mariadb引擎改成backhole,使他不写不读,只记录Binarylog 文件,它就没有了读写压力。这样就减少了了主节点的压力(master)

Binarylog 日志: 串行记录(一条一条的记录)

mariadb 的主从架构属于 异步同步, 会有延迟, 在数据量大的情况下,可能会同步几个小时,这样有利也有弊;

利:运维人员意外操作导致数据库出错,可以切断 主节点与从节点的连接,从节点不会被同步(在一定的时间内)

弊:数据第一时间不能同步

异步同步与实时同步的区别

实时同步:安全性比较高,效率低

异步同步:安全性较低,效率高

二、

通过上图可以发现,mariadb 主从架构 存在着单点故障,这时我们可以用MHA 来监控主从架构

MHA节点: 通过配置文件去监控主从架构,可以监控多个主从架构, 在监控到的master节点故障时,会提升其中用于最新数据的slave节点成为新的master节点,在此期间,MHA会通过其他从节点获取额外信息来避免一致性方面的问题。MHA还提供了master节点的在线切换功能,即按需切换master/slave节点。

第二种方案:

互为主备 (主主)

mariadb  主从架构属于异步同步,存在在着延迟, 例如在master端加入了一条数据 100修改为200,master 进行同步,因为存在着延迟,在这延迟时间内,master2又有一条数据100修改为100插入 ,因为延迟,可能会导致数据的不一致

缺点:可能会造成数据的不一致

一般这种情况会用在  该数据库一般只用来读,没有太多的更删改查可以考虑这种方法但是可能会造成数据的不一致

第三种方案:

galera 集群 (实时同步)(多主)

特性

基于行复制的完全并行同步复制

实时多主架构,任意节点可读写

无延迟复制,事务零丢失,可靠健壮的读写体验。

自动化节点关系控制:节点故障自动摘除,节点加入自动协调

工作原理:一条事务同时提交

三、部署mariadb 主从架构

环境准备: 1.两台服务器

2.数据库版本以及里面信息必须一样

主节点(master端) :192.168.206.3

从节点 (salve端):192.168.206.5

操作系统:CentOS7.5

数据库版本:MariaDB-10.3.7

1>yum配置,两端一样

[mariadb]

name=MariaDB

baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/

gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

gpgcheck=1

注:master端数据库与slave 端据库 需要版本一致,里边信息一致,那么如何实现数据信息一致呢,这里就用到了数据库的备份功能,将master端的数据库备份,然后将备份文件发送给slave端,salve端 进行数据恢复。再反过来备份一次发送回去,

&这里我备份salve端传到 master端

#1salve端

#master端

在数据库里使用 seq 语句:  source   lichao.sql   恢复

#master端 再备份一次

#salve端   恢复   source lijie.sql

#查看两个数据库是否一致

master:

slave端:

2>master 配置

&修改配置文件

vim /etc/my.cnf.d/server.cnf

在[mysqld]下添加  (也可以在 [server] 下编辑 )

server-id=1log-bin=mysql-bin

3>重启数据库

4>创建主从连接账号

把从角色 赋予给这个 slave 这个用户

#刷新

#查看

5>查看下 主节点状态

show  master status;

6>配置从节点 (slave 端)

编辑配置文件 vim /etc/my.cnf.d/server.cnf

7>重启mariadb

8>登录

CHANGE MASTER TO MASTER_HOST='192.168.206.3', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE=' mysql-bin.000002', MASTER_LOG_POS=;

9>起线程并查看从节点状态

&1>

start slave;

&2>

show slave status\G;   ( \G 竖列查看)

配置完成成功

10>测试

#master 端 创建数据库

#查看slave端是否同步

同步成功!

Mariadb 主从的更多相关文章

  1. Docker部署Zabbix监控MariaDB主从同步(Percona Monitoring Plugins for Zabbix)

    一.安装Docker并部署Zabbix 建议先配置清华大学的docker-ce yum源,速度有保障:清华大学repo源 1.Zabbix Server节点配置 部署环境: [root@server0 ...

  2. mariadb主从备份

    mariadb主从备份 master主库配置 停止mariadb systemctl stop mariadb 修改配置文件my.conf vim /etc/my.cnf [mysqld] serve ...

  3. mariadb主从架构

    mariadb主从架构(异步)和集群 一般应用的场所是网站,主的机器是可以写可以读,从的机器可以读,也可以写,但不会同步.只有主的机器增删改,从的机器才会同步. 主从至少三个线程:dump.I/O t ...

  4. MariaDB主从备份记录

    一.预期效果: 环境: centos 6.5   mariadb 10.0.14 (mysql -V) 主服务器:192.168.5.206   从服务器:192.168.5.207   主服务器数据 ...

  5. MariaDB 主从同步与热备(14)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...

  6. MariaDB主从半同步复制详解

    半同步复制(Semisynchronous replication) 介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay lo ...

  7. 使用python3脚本部署mariadb主从架构

    环境准备 一个脚本自动部署master服务 另一个部署slave服务 关闭主从节点的防火墙 以及事先设置好root远程登陆的权限. master import paramikossh=paramiko ...

  8. 使用python脚本部署mariadb主从架构

    环境准备 一个脚本自动部署master服务 另一个部署slave服务 关闭主从节点的防火墙 以及事先设置好root远程登陆的权限. grant all on *.* to root@'%'  iden ...

  9. mysql(mariadb)主从配置

    环境: 内核版本:uname -r 系统版本:cat /etc/redhat-release

随机推荐

  1. CREATE LANGUAGE - 定义一种新的过程语言

    SYNOPSIS CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name HANDLER call_handler [ VALIDATOR valfunctio ...

  2. Hibernate修改操作 删除操作 查询操作 增加操作 增删改查 Hibernate增删查改语句

    我用的数据库是MySQL,实体类叫User public class User { private Integer uid; private String username; private Stri ...

  3. 四种方案解决ScrollView嵌套ListView问题 [复制链接]

    以下文章转自@安卓泡面 在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollVie ...

  4. sqllite相关总结

    一,sqlite 简介 前面写了一篇博文讲如何在 C# 中使用 ADO 访问各种数据库,在移动开发和嵌入式领域也有一个轻量级的开源关系型数据库-sqlite.它的特点是零配置(无需服务器),单磁盘文件 ...

  5. bootstrap不兼容ie8如何解决

    说起bootstrap大家一定都不陌生,可以说是目前最受欢迎的前端框架,简洁.直观.强悍.移动设备优先的前端开发框架,让web开发更迅速.简单. 但是在实际运用中也会遇到各种各样的问题,比如最近项目中 ...

  6. nodejs初探

    var http= require('http');var server= http.createServer(function(req,res){ res.writeHead(200,{" ...

  7. 计算机网络概述下(OSI模型)

    1. 用什么作为计算机网络的性能的指标? 1. 速率:即数据率或称数据传输速率或者比特率.(计算机网络的最重要的一个性能指标) 单位时间(秒)传输的信息(比特)量.单位:b/s(bps),kb/s,M ...

  8. SpringBoot Banner 图片定制修改

    启动Spring Boot项目的时候,在控制台会默认输出一个启动图案 这个图案如果你需要的话是可以自己修改的,修改方式很简单: 1. 在src/main/resources下新建一个banner.tx ...

  9. mongodb的安装与简单操作

    MongoDB中文社区:http://www.mongoing.com     数据库的使用场景 SQL(关系型数据库):MySQL.SQLServer  --->磁盘操作 1.高度事务性的场景 ...

  10. php7 安装swoole扩展

    昨天无意中看到一篇关于直播的视频教程 里面讲到了swoole,对于这个东西我相信大家(接近1年phper)都是听过它,但没有真正去用它,当然也是不知道如何使用(me too). 此处总结一下(借鉴了几 ...