解决高并发的数据库主从复制结构

高并发的企业架构

解决高并发的数据库主从复制结构_第1张图片

    在高并发下企业架构主要是由集群支撑的。本文主要是讨论主从复制的数据库集群搭建。

主从复制的数据库集群架构

解决高并发的数据库主从复制结构_第2张图片

详解:

    数据库的操作主要分为两种,联机事务处理(OLTP):增删改,联机分析处理(OLAP):查,这里主要是将这两种操作用数据库路由器分开,有写服务器集群和读服务器集群。

    对于读服务器集群来说,只是读取数据,并不会对数据的一致性造成影响。但是对于写操作来说,在写操作完成之后,必须让所有的服务器同步此操作,因此才有了主从复制的架构。

    如图,写操作的服务器为双主服务器,当然也可以为多主服务器。(须知:在整体架构上,写服务器为主服务器群,读服务器为从服务器群,在主服务器群中,又分为主服务器和从服务器)。在一台写服务器写完成操作后,会产生一个二进制日志,之后将二进制日志分发给其他写服务器和性能较好的读服务器,收的日志我们称之为中继日志,这些服务器会根据中继日志来更新数据库中的数据,保持数据的一致性,较好的读服务器收到中继日志后先对自己进行数据更新,之后产生二进制日志再分发给其他的读服务器,这样来保持整个服务器群的数据一致性。

详细配置

说明:这里我们使用两台windows server2008来模拟两台数据库服务器,每台windows server2008上装有一台mysql(免安装版,自己配置集群方便)。

第一步:准备两台windowsserver2008并把免安装版的mysql放在c盘。

第二步:修改配置文件

    这里提供了两个.ini简要配置文件(my-master.ini和my-slave.ini),重命名为my.ini后分别放在mysql根目录下,并修改内部的相应配置项。

第三步:在两台服务器上安装并启动mysql服务

         命令名字--install 服务名字 --defaults-file="配置文件"

         mysqld.exe--install MySQL0930 --defaults-file="my文件的路径"

第四步:进入master服务器,并添加用户

         登录

         mysql-u root -p

         添加用户

         mysql>create user jk;

         添加用户的权限

         mysql>grant replication slave on *.*to jk identified by '密码';

第五步:登入slave服务器,并修改配置

         先用root用户登入

         再修改:

         changemaster to

         master_host='192.168.57.128',

         master_port=3306,

         master_user='cll',

         master_password='123456';

         最后开启主从复制

         startslave;

第六步:验证,在主数据库上创建数据库后,从数据库会也会有相应的改变。

附录

【my-master.ini】

[client]
port=3306
default-character-set=utf8

[mysqld]
port=3306

character_set_server=utf8
#character_set_server=utf8 一定要这样写;

basedir=C:\Program Files\MySQL\mysql-5.6.16-win32
#解压目录

datadir=C:\Program Files\MySQL\mysql-5.6.16-win32\data
#解压目录下data目录,必须为data目录

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这个有问题,在创建完新用户登录时报错
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


#主服务器的配置
#开启二进制日志
log-bin=master-bin
#使用二进制日志的索引文件
log-bin-index=master.bin.index
#为服务器添加唯一的编号
server-id=1

【my-slave.ini】

[client]
port=3306
default-character-set=utf8

[mysqld]
port=3306

character_set_server=utf8
#character_set_server=utf8 一定要这样写;

basedir=C:\Program Files\MySQL\mysql-5.6.16-win32
#解压目录

datadir=C:\Program Files\MySQL\mysql-5.6.16-win32\data
#解压目录下data目录,必须为data目录

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这个有问题,在创建完新用户登录时报错
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

server-id=2
relay-log=slave-relay-log-bin
relay-log-index=slave-relay-log-bin.index


你可能感兴趣的:(others)