Mariadb 主从
一
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 主从的更多相关文章
- Docker部署Zabbix监控MariaDB主从同步(Percona Monitoring Plugins for Zabbix)
一.安装Docker并部署Zabbix 建议先配置清华大学的docker-ce yum源,速度有保障:清华大学repo源 1.Zabbix Server节点配置 部署环境: [root@server0 ...
- mariadb主从备份
mariadb主从备份 master主库配置 停止mariadb systemctl stop mariadb 修改配置文件my.conf vim /etc/my.cnf [mysqld] serve ...
- mariadb主从架构
mariadb主从架构(异步)和集群 一般应用的场所是网站,主的机器是可以写可以读,从的机器可以读,也可以写,但不会同步.只有主的机器增删改,从的机器才会同步. 主从至少三个线程:dump.I/O t ...
- MariaDB主从备份记录
一.预期效果: 环境: centos 6.5 mariadb 10.0.14 (mysql -V) 主服务器:192.168.5.206 从服务器:192.168.5.207 主服务器数据 ...
- MariaDB 主从同步与热备(14)
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...
- MariaDB主从半同步复制详解
半同步复制(Semisynchronous replication) 介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay lo ...
- 使用python3脚本部署mariadb主从架构
环境准备 一个脚本自动部署master服务 另一个部署slave服务 关闭主从节点的防火墙 以及事先设置好root远程登陆的权限. master import paramikossh=paramiko ...
- 使用python脚本部署mariadb主从架构
环境准备 一个脚本自动部署master服务 另一个部署slave服务 关闭主从节点的防火墙 以及事先设置好root远程登陆的权限. grant all on *.* to root@'%' iden ...
- mysql(mariadb)主从配置
环境: 内核版本:uname -r 系统版本:cat /etc/redhat-release
随机推荐
- python 内置2to3工具将python2代码转换为python3代码
python2与python3代码不兼容,如果需要python2代码在python3环境下运行,需要将代码进行转换,本文介绍使用python3内置工具2to3.py对代码进行转换 一:2to3.py在 ...
- C#筆記--DataGridView使用
1.databingcomplete 当数据源的内容更改时,或者当 DataSource.DataMember 或 BindingContext 属性的值更改时,会引发此事件. 例如,如果要基于内容更 ...
- CAD参数绘制填充(com接口)
填充是CAD图纸中不可或缺的对象,在机械设计行业,常常需要将零部件剖开,以表现其内部的细节,而这些被剖开的截面会用填充来表示:在工程设计行业,一些特殊的材料或地形,也会用填充来表示. C#中实现代码说 ...
- 【东软实训】SQL函数
SQL函数 SQL是用于访问和处理数据库的标准的计算机语言,我们所使用的的是Oracle SQL 一个数据库通常包含一个或多个表,每个表有一个名字表示,下图即为一个名为“emp”的表,接下来的操作都将 ...
- 三个层面学playbook(核心)
三个层面学playbook(核心) ansible-playbook是ansible工具中的核心,对比ad-hoc(ansible)命令,可以把playbook理解为一系列动作的组成,结果传递.判断等 ...
- 问题:执行[root@node01 hadoop-2.6.0-cdh5.14.0]# sbin/start-dfs.sh 后,namenode未启动
执行[root@node01 hadoop-2.6.0-cdh5.14.0]# sbin/start-dfs.sh 后,namenode未启动. 解决步骤: 查看/export/servers/had ...
- Android首页轮播图直接拿来用
import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import jav ...
- 2019浙师大校赛(浙大命题)(upc复现赛)总结
2019浙师大校赛(浙大命题)(upc复现赛)总结 早上九点开始.起得迟了,吃了早饭慌慌张张跑过去,刚到比赛就开始了. 开始分别从前往后和从后往前看题,一开始A题,第一发WA,第二次读题发现漏看了还有 ...
- 【2019 1月集训 Day1】回文的后缀
题意: 给定 n,s,求有多少个字符集大小为 s ,长度为 n 的字符串,使得其不存在一个长度大于 1 的回文后缀. 答案对 m 取模. 分析: 考场见到计数题的链式反应,想写暴力—>暴力难写— ...
- nginx搭建静态资源服务器
nginx配置访问前端工程 1.前端工程目录 crm-view |-- view |-- user.html 2.工程位置 C:\Users\Administrator\Desktop\CRM系统\c ...