MySQL主从架构

存储引擎
MYISAM:
MyISAM存储引擎的表在数据库中,每一个表都被存储为三个以表名命名的物理文件。首先是任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI 文件,分别存放了表的数据(.MYD)和索引数据(.MYI)。
yisam存储引擎的特点:
表级锁,读取时对需要读到的所有表加锁,写入时则对表加排它锁
数据库在读写过程中相互堵塞,在数据写入的过程中阻塞用户对数据的读取,在数据读取的过程中阻塞用户写入数据。
表级锁开销小,影响范围大,适合读多写少的表
不支持事务
不支持外键
不支持崩溃后的安全恢复
2、Innodb:
Innodb 存储引擎也和MyISAM 不太一样,虽然也有.frm文件来存放表结构定义相关的元数据,但是表数据和索引数据是存放在一起的。至于是每个表单独存放还是所有表存放在一起,完全由用户来决定。
Innodb存储引擎的特点:
行级锁,锁定行的开销要比锁定全表要大。影响范围小,适合写操作比较频繁的数据表。但是全表扫描仍然会是表级锁定
支持事物,支持四个事务隔离级别
支持外键
支持崩溃后的安全恢复
总体来讲,MyISAM适合SELECT密集型的表,而InnoDB适合INSERT和UPDATE密集型的表。
查看默认的存储引擎:
mysql> show variables like ‘%storage_engine%’;
查看支持的存储引擎:
mysql> show engines;
详解死锁
锁的概念:当客户端操作表(记录)时,为了保证操作的隔离性(多个客户端操作不能互相影响),通过加锁来处理。
操作方面:
读锁:读操作时增加的锁,也叫共享锁,S-lock。特征是阻塞其他客户端的写操作,不阻塞读操作。(并发读)
写锁:写操作时增加的锁,也叫独占锁或排他锁,X-lock。特征是阻塞其他客户端的读,写操作。
锁定粒度(范围):
行级:提升并发性,锁本身开销大
表级:不利于并发性,锁本身开销小。
死锁:
死锁的本质是一种僵持状态,之所以出现死锁,是因为多个线程对资源的强占,你要我的,我也要你的,两人堵在路上谁都不让,所以死锁了。
MySQL主从架构
MYSQL REPLICATION
在实际生产环境中,如果对数据库的读和写都在一个数据库服务器中操作。无论是在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(master-slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力这样的方案来进行部署与实施。
什么是MYSQL REPLICATION(mysql主从复制)
1、主从复制是指当master(主)库的数据发生变化的时候,变化会实时的同步到一个或多个slave(从)库。
2、默认情况下属于异步复制,无需维持长连接。
3、通过配置,可以复制所有的库或者几个库,甚至库中的一些表。
4、replication是MySQL内建的,本身自带。
MYSQL REPLICATION的原理
简单的说就是master将数据库的更新操作写入二进制日志,slave同步这些二进制日志中的数据更新事件并写入中继日志文件中,然后读取relay日志,把二进制的日志解析成SQL语句,并执行这些SQL语句,使其与master中的数据一致。
在这里插入图片描述

注:
DML:SQL操作语句,update, insert,delete等数据更新操作语句。
Relay log :中继日志
MYSQL REPLICATION的作用
1、读写分离,提供查询服务
使用主从复制,让主库负责写,从库负责读。这样,即使主库进行数据更新操作出现了锁表的情景,通过读从库也可以保证业务的正常运作。
2、实时灾备,用于故障切换。
当系统中某个节点发生故障时,可以方便的故障切换,实现高可用(HA)。例如,做数据的热备,slave作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
3、水平扩展数据库的负载能力
随着系统中业务访问量的增大,如果是单机部署数据库,就会导致I/O访问频率过高。有了主从复制,增加多个数据存储节点,将负载分布在多个从节点上,降低单机磁盘I/O访问的频率,提高单个机器的I/O性能。
MYSQL REPLICATION支持的复制类型
Statement:即基于语句的复制,会将对数据库操作的sql语句写入到binlog中,效率比较高。
row:即基于行的复制,会将每一条数据的变化写入到binlog中。
mixed:即混合模型的复制,statement与row的混合,MySQL会根据执行的SQL语句选择日志保存方式。即交替使用行和语句、由mysql服务器自行判断。
MYSQL REPLICATION如何工作
整体上来说,复制的工作过程有3个步骤:
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave根据中继日志中的事件,对salve数据库做相应的操作,使其与master中的数据一致。
MYSQL REPLICATION常见方案:
一主一从
一主多从
级联复制(M-S-S)
双主互备 (互为主从)
多主一从

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值