MySql架构设计

在MySql中,当数据量大的时候,一般选择方案:

1.    分库

    (1)可以按照业务需求来垂直分库。

2.    读写分离,

    (1)可以将从库中分出一台来做特殊业务查询。例如供开发人员查询问题、报表查询等等。

3.    分表

    (1)最后使用,可以按照更细微的业务来分表。

MySql读写分离实现机制方法:

1.    基于程序实现 一般不用

2.    基于MySql自带主从同步机制

MySql的主从同步机制实现原理:当主库有sql过来的时候,会进行两个操作:

1.    更新data数据

2.    将数据放在binlogs中。 所以MySql要实现主从同步,第一步需要开启binlog文件。所有提交语句都会提交到这来。binlogs记录了所有关于修改、数据变动的sql语句。。

从数据库会有两个Thread.

1.    用I\O Thread来定时同步主数据库的binlogs文件,将sql放在从库的relay binlogs文件。

2.    用SQL Thread取出sql 语句并执行, 将数据写入从库的data中。


出现的风险:

1.    数据一致性问题。当两个库间通信突然中断,会导致数据出现不一致问题。

解决方案:MySql提供了半同步方式。如果在Master配置半同步, 当数据过来时候,主库不会立刻写入data,而会等待。从库从主库binlog中拿到数据,会通知主库binlog已经取到数据,那binlog在通知data来修改主库。

带来的后果:

        一.    影响MySql写入性能。 根据公司业务场景,来做平衡。如果对数据要求很严格,推荐半同步。

       二.    当从库很多,需要很久来等待从库返回信息给binlog。  那MySql允许设置保护机制,设置等待时间,例如1秒(一般 设置),data直接写入。binlog只要检测到一个从库同步成功,就会通知data,不需要等所有从库同步完成。

2.    从库执行SQL Thread失败。

解决方案:从库会抛出异常,直到解决该sql异常。

3.    延迟问题。

解决方案:延迟问题一般出现在I/O Thread跟SQL Thread,可以配置多个线程。提高CPU.

binlog用途之二:用于恢复数据库。

如何设置读写架构:

用Atlas代理来区分读写分离。App--->Altas---->写操作---->Master  MySql

                                                                    ----->读操作---->Slave MySql

Altas只会有I/O的限制。但目前来说无压力。

实施流程:

1. 修改Master配置my.cnf

2. 修改slave配置:a. my.cnf   b.配置master地址、端口、密码

3.安装atlas

4.配置atlas

配置Master步骤:1.修改server id。 2.修改my.cnf





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值