搜索
您的当前位置:首页正文

mysql的主从复制

来源:小奈知识网
Mysql的主从复制。

背景

我们一般应用对数据库而言都是‘读多写少’,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案,

其中一个是主库,负责写入数据,我们称之为:写库 其他都是从库,负责读取数据,我们称之为:读库 那么,对我们的要求是:

1.读库和写库的数据一致 2.写数据必须写到写库 3.读数据必须到读库

方案:

解决读写分离的方案有两种:应用层解决和中间件解决

应用层解决: 方案一:

优点:

1.多数据源切换方便,由程序自动完成 2.不需要引入中间件 3.理论上支持任何数据库 缺点:

1.由程序员完成,运维参与不到 2.不能做到动态增加数据源

中间件解决:

优点:

1.源程序不需要做任何改动就可以实现读写分离 2.动态添加数据源不需要重启程序 缺点:

没有特别成熟的中间件产品,

应用层解决,用spring实现,可以不动代码,选择方案1

大概的过程:

主数据库需要创建一个同步账户,确定一个同步的数据库,从数据库中设置主数据库的信息。

原理和问题

主库数据变更时,记录二进制文件(查询不要记录),从数据库读取这些二进制文件,变更数据。

问题:主数据库记录变更,从数据库读取,肯定会有时间差存在。

解决:我们设计架构的时候就需要知道到这个问题的所在,要避免这个问题,这个时间差我们能不能接受,对我们以后的数据有什么影响。

主从复制需要注意的问题:

从数据库不需要开启日志记录的二进制文件 主数据库和从数据库版本要一致

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 发现问题后要准确定位问题,才能有效的解决问题 我在搭建主从复制的时候遇到的问题?

主从复制搭建不成功,通过读取mysql的日志文件,发现是主数据库和从数据库uuid一样造成的,然后我就百度解决问题。Mysql的文件里data>文件夹>里面有个auto.conf,修改UUID之后,重启服务器,同步成功。

方案一结合spring完成读写分离,通过方法名称,

实现方式:

Spring提供了一个配置动态数据源的类。

配置一个动态数据源,里面设置多个数据源,设置默认的数据源,默认走写库。 定义aop切面,通过方法名确定访问那个数据库。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top