您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

MySQL数据库架构和同步复制流程

时间:2020-06-09 21:01:51  来源:  作者:

在分布式系统里面,往往制约整个系统发展的瓶颈点就是数据库,所以数据库的架构和高可用以及数据库的切分都是我们值得花大力气去学习的。

首先我们来说说数据库的架构。

1、MySQL主从架构,如图:

MySQL数据库架构和同步复制流程

 

这种架构基本上90%以上会采用的数据库架构。这种架构的 优点: 1、数据库架构简单 2、维护方便 缺点: 1、master存在单点问题,不能停机维护 2、读压力大slave过多的话,主从同步会影响master的性能

2、Dual Master 复制架构

上面的主从架构存在明显的单点master问题,master不能停机维护,那么就有了接下来这猴子那个双主架构。如图:

MySQL数据库架构和同步复制流程

 

这种双主架构,数据库有两个主,主和主之间是有双向复制的,但是我们应用程序切记不能有一个写入口,不能同时两个master都做写操作,这样可以避免可能出现的数据不一致的情况,另外一台主机视情况而定,如何读压力大,另外一台主机可以做读操作,读压力不大,另外一台主机纯粹是为了做多活做主的备份,可以用第三方工具做主备切换,比如keepalived。 这种双主架构的 优点: 1、不存在master的单点问题 缺点: 1、读压力大的时候,扛不住

3、级联复制架构(Master --- Slaves --- Slaves ...) ...)

级联复制架构是为了解决大量slave连到master造成master性能下降的问题。那么架构图如下:

MySQL数据库架构和同步复制流程

 

从架构图看,由slave来把数据同步到另外的slave,这样连接到master节点的slave就变少了。 优点: 1、减轻了master复制数据的压力 缺点 1、存在数据延迟的问题

4、Dual Master 与级联复制结合架构(Master - Master - Slaves)

前面的双主和级联复制都存在问题,现在这个架构是结合了这两种的架构,架构图如下:

MySQL数据库架构和同步复制流程

 

这种架构就集合前面两种架构的优点 优点 1、不存在master单点问题 2、减轻了写节点master的复制压力 缺点 1、写节点master挂了以后,另外一台master变成写节点,挂了的master启动以后,要把所有slave切换到这台启动的master上做数据同步。

前面讲到了4种数据库加过,里面大量提到了数据库同步的概念,那么接下来说说mysql数据库同步流程,流程图如下:

MySQL数据库架构和同步复制流程

 

mysql默认是采用的异步复制模式,流程如下: master端 1、用户提交 2、写binlog日志 3、引擎级别提交 4、结果返回客户端程序

slave端 1、master端event监控到binlog日志变化,通知给master端的dump进程 2、dump进程通知给slave端的IO进程 3、IO进程从master-info中获取需要同步的文件和文件位置 4、IO进程把binlog文件和pos位置通知master端dump进程 5、master准备数据把数据同步给slave端 6、slave收到数据把数据写到relay log中 7、slave relay log写成功后给master一个成功的应答

mysql异步复制配置 master端my.cnf配置 server-id=135 #开启复制功能 log-bin=mysql-bin auto_increment_increment=2 auto_increment_offset=1 lower_case_table_names=1 #binlog-do-db=mstest //要同步的mstest数据库,要同步多个数据库 #binlog-ignore-db=mysql //要忽略的数据库

slave端my.cnf配置 server-id=133 log-bin=mysql-bin auto-increment-increment=2 auto-increment-offset=2 lower_case_table_names=1 #replicate-do-db = wang #需要同步的数据库 #binlog-ignore-db = mysql #binlog-ignore-db = information_schema

1、在master mysql添加权限 GRANT REPLICATION SLAVE,FILE,REPLICATION CLIENT ON . TO 'repluser'@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;

2、在master上查看master的二进制日志 show master status;

MySQL数据库架构和同步复制流程

 

3、在slave中设置master的信息 change master to master_host='192.168.88.135',master_port=3307,master_user='repluser',master_password='Jack@123456',master_log_file='mysql-bin.000001',master_log_pos=154;

4、开启slave,启动SQL和IO线程 start slave;

5、查看slave的状态 show slave statusG

6、master slave查看进程信息 SHOW PROCESSLIST;

mysql增强版半同步复制 增强版半同步复制配置: 1、加载lib,所有主从节点都要配置 主库:install plugin rpl_semi_sync_master soname 'semisync_master.so'; 从库:install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; 可以一起装。建议一起装,因为会有主从切换的情景

2、查看,确保所有节点都成功加载 show plugins;

3、启用半同步 先启用从库上的参数,最后启用主库的参数 从库:set global
rpl_semi_sync_slave_enabled = {0|1}; # 1:启用,0:禁止 主库: set global
rpl_semi_sync_master_enabled = {0|1}; # 1:启用,0:禁止 set global
rpl_semi_sync_master_timeout = 10000; # 单位为ms

4、前面配置弄完以后,在slave节点必须关闭io_thread节点才能使半同步复制生效 stop slave io_thread; start slave io_thread;

master节点日志信息: 开启半同步,关闭异步

MySQL数据库架构和同步复制流程

 

半同步复制在master端进行引擎提交的时候会等待,直到slave写relay log成功后,给master ACK应答成功才会进行引擎提交。



Tags:MySQL数据库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  Tags: MySQL数据库  点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  Tags: MySQL数据库  点击:(17)  评论:(0)  加入收藏
1. 介绍1.1 介绍今天开始我们来学习Java操作MySQL数据库的技巧,Java操作MySQL是借助JdbcTemplate这个对象来实现的。JdbcTemplate是一个多数据库集中解决方案,而我们今天只讲...【详细内容】
2021-11-05  Tags: MySQL数据库  点击:(30)  评论:(0)  加入收藏
Mysql数据库安装与操作之一 以下操作是在Linux-xshell环境下进行的(不懂的,大家可以留言) 一.安装 1. 安装数据库 wget -i -c http://dev.mysql.com/get/mysql57-community-rele...【详细内容】
2021-09-01  Tags: MySQL数据库  点击:(62)  评论:(0)  加入收藏
之前管理mysql数据库,我是远程VNC登陆到服务器,然后在服务器上通过mysql command line client进行查询操作等,偶然前几天,发现可以不远程登陆服务器,本地CMD可以直接登陆,后研究了...【详细内容】
2021-08-17  Tags: MySQL数据库  点击:(53)  评论:(0)  加入收藏
【目标】本文介绍了MySQL数据库命令规范、数据库基本设计规范、数据库字段设计规范、索引设计规范、常见索引列建议、如何选择索引列的顺序、以及数据库SQL开发规范等。一...【详细内容】
2021-07-08  Tags: MySQL数据库  点击:(62)  评论:(0)  加入收藏
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库...【详细内容】
2021-06-09  Tags: MySQL数据库  点击:(77)  评论:(0)  加入收藏
2014年6月,Red Hat公司发行的Linux社区版CentOS7.0,因甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,为避开这个风险,CentOS7已将MySQL数据库软件从默认的程序列表中移除,用ma...【详细内容】
2021-04-15  Tags: MySQL数据库  点击:(194)  评论:(0)  加入收藏
生活中,你我一定都看到过这种「xx元爆改出租屋」,「爆改小汽车」之类的文章,做为IT人,折腾的劲头一点也不差。软件开发过程中,你是否有时候,会拿着业务提供的一个个CSV或者JSON的...【详细内容】
2021-01-06  Tags: MySQL数据库  点击:(159)  评论:(0)  加入收藏
在企业的Liunx运维中,经常需要应用到各种shell脚本,比如Mysql数据库备份Shell脚本和Mysql主从同步监控Shell脚本等等常用企业运维shell脚本。。下面分享两例,希望对大家有帮助...【详细内容】
2020-12-18  Tags: MySQL数据库  点击:(195)  评论:(0)  加入收藏
▌简易百科推荐
写一个shell获取本机ip地址、网关地址以及dns信息。经常会遇到取本机ip、网关、dns地址,windows一个命令ipconfig /all全部获取到,但linux系统却并非如此。linux系统都自带ifc...【详细内容】
2021-12-27  K佬食古    Tags:shell   点击:(2)  评论:(0)  加入收藏
步骤1、配置 /etc/sysconfig/network-scripts/ifcfg-eth0 里的文件。it动力的CentOS下的ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifc...【详细内容】
2021-12-24  忆梦如风    Tags:网卡   点击:(10)  评论:(0)  加入收藏
1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可...【详细内容】
2021-12-17  郭主任    Tags:运维   点击:(20)  评论:(0)  加入收藏
对于经常上网的朋友来说,除了手机购物上网,pc端玩网页游戏还是很多小伙伴首选的,但是有时候明明宽带链接上了,打开浏览器却出现上不了网的现象,下面小编要来跟大家说说电脑有网络...【详细内容】
2021-12-16  小白系统    Tags:网页无法打开   点击:(28)  评论:(0)  加入收藏
在访问像github、gitlab这样的外国网站时,很有可能会出现页面加载不出来或找不到页面的错误。这时候有的朋友就会以为是网络的问题,于是把Wifi断掉连上自己手机的热点,结果却还...【详细内容】
2021-12-15  启施技术IT狼叔    Tags:外网   点击:(16)  评论:(0)  加入收藏
网络地址来源:获取公网IP地址 https://ipip.yy.com/get_ip_info.phphttp://pv.sohu.com/cityjson?ie=utf-8http://www.ip168.com/json.do?view=myipaddress...【详细内容】
2021-12-15  韦廷华12    Tags:外网ip   点击:(15)  评论:(0)  加入收藏
准备好软件IPOP、用ENSP模拟一下华为交换机 启动交换机 <Huawei>sysEnter system view, return user view with Ctrl+Z.[Huawei]sysname FTPClient[FTPClient]interface vla...【详细内容】
2021-12-15  思源Edward    Tags:交换机   点击:(24)  评论:(0)  加入收藏
我们经常用到netstat命令查看主机连接状况,包括连接ip、端口、状态等,今天就练习下shell分析netsat结果。描述假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:Pro...【详细内容】
2021-12-14  K佬食古    Tags:netstat   点击:(19)  评论:(0)  加入收藏
什么是滑动窗口?窗口是操作系统开辟的一块缓存空间,发送方在收到接收方ACK应答之前,必须在缓冲区保留已发送的数据,如果按期收到确认应答,数据就可以从缓冲区移除。什么是滑动窗...【详细内容】
2021-12-14  DifferentJava    Tags:TCP   点击:(30)  评论:(0)  加入收藏
概述日常管理华为路由设备过程中,难为会忘记设备登录密码,那么该如何重置设备登录密码吗?本期文章将全面向各位小伙伴总结分享。重置华为设备登录密码思路先行 采用console登录...【详细内容】
2021-12-10  onme0    Tags:   点击:(27)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条