crm和mysql_华为CRM资深架构师:MySQL数据库架构和同步复制流程,看完就懂

前言:

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

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

1、mysql主从架构,如图:

这种架构基本上90%以上会采用的数据库架构。

这种架构的优点:数据库架构简单

维护方便

缺点:master存在单点问题,不能停机维护

读压力大slave过多的话,主从同步会影响master的性能

2、Dual Master 复制架构

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

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

这种双主架构的优点:不存在master的单点问题

缺点:读压力大的时候,扛不住

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

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

从架构图看,由slave来把数据同步到另外的slave,这样连接到master节点的slave就变少了。

优点:减轻了master复制数据的压力

缺点:存在数据延迟的问题

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

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

这种架构就集合前面两种架构的优点

优点:不存在master单点问题

减轻了写节点master的复制压力

缺点:写节点master挂了以后,另外一台master变成写节点,挂了的master启动以后,要把所有slave切换到这台启动的master上做数据同步。

前面讲到了4种数据库加过,里面大量提到了数据库同步的概念,那么接下来说说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;

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 status\G

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节点日志信息:

开启半同步,关闭异步

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在瞬息万变的市场环境中,企业要立于不败之地,必须依托现代化的管理思想和手段,其中客户管理尤为重要。本例中的客户管理系统实现了企业客户管理的信息化,可对企业所有客户的相关信息进行有效管理,并且可以通过邮件与客户进行沟通、交流。本系统属于小型的数据库管理系统,可以对中、小型企业客户进行有效管理。 (7)本系统有两种操作员,一种是系统管理员;一种是普通用户。系统管理员拥有所有权限,普通用户不能添加操作员及设置操作员的权限;也不能添加客户资料及竞争对手;还没有设置“我方信息管理”的权限。 业务流程 在使用本系统时,请按照以下流程进行操作: (1)通过“用户管理”菜单中的“用户管理”模块添加操作员。 (2)通过“用户管理”菜单中的“设置权限”模块为操作员分配操作权限。 (3)通过“我方信息管理”菜单中的菜单项添加本单位信息资料。 (4)通过“资料管理”菜单中的菜单项添加客户资料信息。 (5)在“统计分析”菜单中分别实现了对客户级别和客户来源的图表分析。 (6)通过“系统维护”菜单可以对数据进行备份、还原及清理。 注意:在清理或还原数据前最好先对数据进行备份,以免造成数据丢失。 (7)本系统提供了很多辅助功能。在“帮助”菜单中可以直接启动记事本、word、Excel等。其中“水平平铺”和“重直平铺”的效果,需要在打开两个以上模块的情况下实现。 (8)操作用户可通过“用户管理”菜单中的“更改密码”菜单项修改自己的密码。 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值