003.MMM双主-双从读写分离部署

一 前期规划

1.1 主机规划


功能

IP

主机名

server id

应用属性

VIP

MySQL版本

Monitor

172.24.8.20

Monitor

——

监控

——

——

Master01

172.24.8.10

Master01

1

写-writer

172.24.8.100

MySQL 5.6.37

Master02

172.24.8.11

Master02

2

读-reader

写-writer


172.24.8.101

172.24.8.102

172.24.8.103

172.24.8.104


Slave01

172.24.8.12

Slave01

3

读-reader

Slave02

172.24.8.13

Slave02

4

读-reader

1.2 虚拟IP规划


VIP

备注

172.24.8.100

Master01主库写操作

Master01正常时候,Master02的vip对外提供只读服务;

Master01出现故障时候,Master02接替Master01对外提供读写服务。


172.24.8.101

只读,读查询VIP,每个数据节点一个读VIP,

可搭配LVS,HAProxy等负载均衡软件对读VIP进行负载均衡。


172.24.8.102

172.24.8.103

172.24.8.104

1.3 用户列表


角色

权限

描述

monitor

replication client

mmm监控MySQL服务健康

agent user

SUPER, REPLICATION CLIENT, PROCESS

mmm代理用来更改只读模式、复制的主服务器等

replication user

replication slave

用于复制

提示:以上角色需要在所有节点添加。

1.4 整体架构

1.4 hosts修改

  1 [[email protected] ~]# vi /etc/sysconfig/network
  2 NETWORKING=yes
  3 HOSTNAME=Master01
  4 [[email protected] ~]# vi /etc/hosts
  5 Master01    172.24.8.10
  6 Master02    172.24.8.11
  7 Slave01     172.24.8.12
  8 Slave02     172.24.8.13
  9 Monitor     172.24.8.20

提示:所有主机添加对应的hostname和hosts,此步骤非必须,为方便之后简化配置,建议修改hosts。

1.5 NTP配置

略,具体可参考笔记NTP-《003.NTP客户端配置》。

提示:针对高可用的优化,建议所有节点均配置NTP服务。

二 部署MySQL

2.1 安装MySQL

略,具体可参考MySQL主从复制-《MySQL高可用主从复制部署》。

提示:除去monitor节点外所有节点均需要部署。

三 双主复制部署

3.1 master01 my.cf配置

  1 [[email protected] ~]# vi /etc/my.cnf
  2 [mysqld]
  3 ……
  4 server-id=1				#设置主服务器master的id
  5 log-bin=mysql-bin			#配置二进制变更日志命名格式
  6 replicate-wild-ignore-table=mysql.%
  7 replicate-wild-ignore-table=test.%
  8 replicate-wild-ignore-table=information_schema.%
  9 sync-binlog=1              		#每条自动更新,安全性高,默认是0
 10 auto_increment_increment=2  	#字段一次递增多少
 11 auto_increment_offset=1    		#自增字段的起始值
 12 log_slave_updates          		#当一个主故障,另一个立即接管
 13 read_only=1

注意:




master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:

方法一:

  1 # 不同步哪些数据库
  2 binlog-ignore-db = mysql
  3 binlog-ignore-db = test
  4 binlog-ignore-db = information_schema
  5 # 只同步哪些数据库,除此之外,其他不同步
  6 binlog-do-db = mysqltest

方法二:

建议采用以下方式配置过滤:

  1 replicate-wild-ignore-table=mysql.%	#从库配置不同步表
  2 replicate-wild-do-table=test.%		#从库配置需要同步的表

提示:不要在主库使用binlog-ignore-db和binlog-do-db,也不要在从库使用replicate-wild-ignore和replicate-wild-do-table。

3.2 Master02 my.cf配置

  1 [[email protected] ~]# service mysqld start
  2 [[email protected] ~]# mysql -uroot -px120952576
  3 mysql> grant replication slave on *.* to ‘repl_user‘@‘172.24.8.%‘ identified by ‘x12345678‘;
#创建用于复制的账号
  4 mysql> grant replication client on *.* to ‘mmm_monitor‘@‘172.24.8.%‘ identified by ‘x12345678‘;
#创建用于监控MySQL服务健康的账号
  5 mysql> grant super,replication client,process on *.* to ‘mmm_agent‘@‘172.24.8.%‘ identified by ‘x12345678‘;
#创建用于切换只读模式、同步Master信息的账号
  6 mysql> grant select,insert,update,delete,create,drop on *.* to ‘mmm_test‘@‘172.24.8.%‘  identified by ‘x120952576‘ with grant option;        #创建之后用于读写分离测试的账号
  7 mysql> flush privileges;
  8 [[email protected] ~]# service mysqld restart
  9 [[email protected] ~]# mysql -uroot -px120952576
 10 mysql> show master status;

master01:

file:mysql-bin.000001

position:120

注意:读写分离对于用于super或者all privileges权限的用户无效,需要创建普通用户进行测试。

3.4 Master02创建账号

略,同3.3 Master01创建账号同样操作即可。

  1 [[email protected] ~]# service mysqld restart
  2 [[email protected] ~]# mysql -uroot -px120952576
  3 mysql> show master status;

master02:

file:mysql-bin.000001

position:120

3.5 启动双主复制




提示:如果Master01和Master02已经存在数据,则在开启主备复制之前,需要将Master01和Master02手动同步一次(/var/lib/mysql整个目录打包tar.gz),具体方法略。

注意:本实验都是重新安装的MySQL,可直接启动同步

  1 [[email protected] ~]# mysql -uroot -px120952576
  2 Enter password:
  3 mysql> change master to master_host=‘172.24.8.11‘,
  4     -> master_user=‘repl_user‘,
  5     -> master_password=‘x12345678‘,
  6     -> master_log_file=‘mysql-bin.000001‘,
  7 -> master_port=3306,
  8     -> master_log_pos=120;
  9 mysql> start slave;
 10 mysql> show slave status\G			#查看slave状态

3.3 启动Master02的slave功能

  1 [[email protected] ~]# mysql -uroot -px120952576
  2 mysql> change master to master_host=‘172.24.8.10‘,
  3     -> master_user=‘repl_user‘,
  4     -> master_password=‘x12345678‘,
  5     -> master_log_file=‘mysql-bin.000001‘,
  6     -> master_log_pos=120;
  7 mysql> start slave;
  8 mysql> show slave status\G			#查看slave状态

提示:




slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。日志的位置增加了,意味着一些事件被获取并执行了。如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。

四 其他节点配置

4.1 所有Slave节点配置配置

  1 [[email protected] ~]# scp /etc/my.cnf [email protected]:/etc/
  2 [[email protected] ~]# scp /etc/my.cnf [email protected]:/etc/
  3 [[email protected] ~]# vi /etc/my.cnf
  4 [mysqld]
  5 ……
  6 server-id=3				#设置主服务器Slave01的id
  7 [[email protected] ~]# vi /etc/my.cnf
  8 [mysqld]
  9 ……
 10 server-id=4				#设置主服务器Slave02的id

提示:从Master01将复制my.cnf至所有节点(除去monitor外),并修改相应的server id。

4.2 所有Slave节点创建账号

  1 [[email protected] ~]# service mysqld start
  2 [[email protected] ~]# mysql -uroot -px120952576
  3 mysql> grant replication slave on *.* to ‘repl_user‘@‘172.24.8.%‘ identified by ‘x12345678‘;			                               #创建用于复制的账号
  4 mysql> grant replication client on *.* to ‘mmm_monitor‘@‘172.24.8.%‘ identified by ‘x12345678‘;			                               #创建用于监控MySQL服务健康的账号
  5 mysql> grant super,replication client,process on *.* to ‘mmm_agent‘@‘172.24.8.%‘ identified by ‘x12345678‘;
                                       #创建用于切换只读模式、同步Master信息的账号
  6 mysql> grant select,insert,update,delete,create,drop on *.* to ‘mmm_test‘@‘172.24.8.%‘  identified by ‘x120952576‘ with grant option;	               #创建之后用于读写分离测试的账号
  7 mysql> flush privileges;

提示:Slave02如上操作。

4.2 Slave节点配置Master01为主

  1 [[email protected] ~]# service mysqld restart
  2 [[email protected] ~]# mysql -uroot -px120952576
  3 mysql> change master to master_host=‘172.24.8.10‘,
  4     -> master_user=‘repl_user‘,
  5     -> master_password=‘x12345678‘,
  6     -> master_log_file=‘mysql-bin.000001‘,
  7     -> master_log_pos=120;
  8 mysql> start slave;
  9 mysql> show slave status\G        #查看slave状态

提示:Slave02如上操作。




注意:读写分离对于用于super或者all privileges权限的用户无效,需要创建普通用户进行测试。

五 安装MMM组件

5.1 监控Monitor节点安装MMM

  1 [[email protected] tmp]# wget http://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm
  2 [[email protected] tmp]# rpm -ivh epel-release-latest-6.noarch.rpm
  3 [[email protected] ~]# yum -y install mysql-mmm*

5.2 其他节点安装MMM

  1 [[email protected] ~]# wget http://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm
  2 [[email protected] ~]# rpm -ivh epel-release-latest-6.noarch.rpm
  3 [[email protected] ~]# yum -y install mysql-mmm-agent

注意:



  • MMM组件在常规YUM中不包含,需要安装epel源;

  • 除monitor节点外其他节点只需要安装mysql-mmm-agent即可。

提示:若yum安装出现以下报错,建议在所有节点改用编译安装,操作见附1-附2:

附1 添加安装Perl脚本

  1 [[email protected] ~]# cat install.sh
  2 #!/bin/bash
  3 wget http://xrl.us/cpanm --no-check-certificate
  4 mv cpanm /usr/bin
  5 chmod 755 /usr/bin/cpanm
  6 cat > /root/list << EOF
  7 install Algorithm::Diff
  8 install Class::Singleton
  9 install DBI
 10 install DBD::mysql
 11 install File::Basename
 12 install File::stat
 13 install File::Temp
 14 install Log::Dispatch
 15 install Log::Log4perl
 16 install Mail::Send
 17 install Net::ARP
 18 install Net::Ping
 19 install Proc::Daemon
 20 install Thread::Queue
 21 install Time::HiRes
 22 EOF
 23 for package in `cat /root/list`
 24 do
 25     cpanm $package
 26 done

附2 编译安装

  1 [[email protected] tmp]# wget http://mysql-mmm.org/_media/:mmm2:mysql-mmm-2.2.1.tar.gz
  2 [[email protected] tmp]# mv \:mmm2\:mysql-mmm-2.2.1.tar.gz mysql-mmm-2.2.1.tar.gz
  3 [[email protected] tmp]# tar -zxvf mysql-mmm-2.2.1.tar.gz
  4 [[email protected] tmp]# cd mysql-mmm-2.2.1/
  5 [[email protected] mysql-mmm-2.2.1]# make install

注意,注意,注意:




通常使用以上编译安装也会失败,强烈建议使用yum安装,但yum安装必须使得MySQL版本为mysql-community-server-5.6.37(或以上)!

5.3 目录构成


目录

介绍

/usr/lib/perl5/vendor_perl/5.8.8/MMM

MMM使用的主要perl模块

/usr/lib/mysql-mmm

MMM使用的主要脚本

/usr/sbin

MM使用的主要命令的路径

/etc/init.d/

MMM的agent和monitor启动服务的目录

/etc/mysql-mmm

MMM配置文件的路径,默认所以的配置文件

/var/log/mysql-mmm

默认的MMM保存日志的位置

六 配置MMM

6.1 Master01的mmm_agent配置

  1 [[email protected] ~]# vi /etc/mysql-mmm/mmm_agent.conf
  2 include mmm_common.conf
  3 this db1

提示:设置db1的配置信息,此db1名字可自定义,但必须和mmm_common.conf 中一致。

6.2 Master01的mmm_common配置

  1 [[email protected] ~]# vi /etc/mysql-mmm/mmm_common.conf
  2 active_master_role      writer
  3 #当设置为writer的时候,需要在所有MySQL节点设置“read_only=1”,则MMM会本剧每个节点的角色进行动态判断,当MMM的角色设置<role writer>时候,则会自动添加“set global read_only=0”操作,即打开写权限。
  4 <host default>
  5 cluster_interface       eth0			        #设置网络接口,不能为子接口。
  6 pid_path                /var/run/mysql-mmm/mmm_agentd.pid	#设定PID文件路径
  7 bin_path                /usr/libexec/mysql-mmm/		#设置MMM可执行文件路径
  8 replication_user        repl_user			        #设置复制的用户名
  9 replication_password    x12345678			        #设置复制的用户名的密码
 10 agent_user              mmm_agent			        #设置更改只读操作的用户
 11 agent_password          x12345678			        #设置更改只读操作用户的密码
 12 </host>
 13
 14 <host db1>                          #设置db1的配置信息,此db1名字可自定义,但必须和mmm_agent.conf中一致。
 16 ip      172.24.8.10			#设置db1的物理IP
 17 mode    master			#设置db1角色为Master
 18 peer    db2				#设置db1对等的主机名,即db2和db1均为Master
 19 </host>
 20
 21 <host db2>				#类似db1的设置
 22 ip      172.24.8.11
 23 mode    master
 24 peer    db1
 25 </host>
 26
 27 <host db3>				#类似db1的设置
 28     ip      172.24.8.12
 29     mode    slave			#设置db3的角色为Slave
 30 </host>
 31
 32 <host db4>				#类似db1的设置
 33     ip      172.24.8.13
 34     mode    slave			#设置db4的角色为Slave
 35 </host>
 36
 37 <role writer>			#设置可写角色
 38 hosts   db1, db2			#设置可执行写操作的主机
 39 ips     172.24.8.100		#设置可写的虚拟IP
 40 mode    exclusive	                #设置角色的模式为互斥,互斥角色只有一个IP,并且同一时间只能分配一个主机。
 41 </role>
 42
 43 <role reader>			#设置只读角色
 44 hosts   db1, db2, db3, db4		#设置只读角色的主机
 45 ips     172.24.8.101, 172.24.8.102, 172.24.8.103, 172.24.8.104
 46 #设置可读的虚拟IP,可以有多个。
 47 mode    balanced
#设置角色的模式为负载均衡,在负载均衡角色中,可以有多个IP,这些IP被均衡地、动态地分配给多个MySQL主机。
 49 </role>

6.3 Master01的mysql-mmm-agent配置

  1 [[email protected] ~]# vi /etc/default/mysql-mmm-agent
  2 ENABLED=1

注意:使用yum安装则不需要配置mysql-mmm-agent ,默认已经添加了ENABLED=1。

6.4 其他节点配置

  1 [[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
  2 [[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
  3 [[email protected] ~]# scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/
  4 [[email protected] ~]# scp /etc/default/mysql-mmm-agent [email protected]://etc/default/
  5 [[email protected] ~]# scp /etc/default/mysql-mmm-agent [email protected]://etc/default/
  6 [[email protected] ~]# scp /etc/default/mysql-mmm-agent [email protected]://etc/default/

提示:所有节点的mysql-mmm-agent和mmm_common.conf内容一致,从Master01复制即可,Monitor不需要配置agent。

  1 [[email protected] ~]# vi /etc/mysql-mmm/mmm_agent.conf
  2 include mmm_common.conf
  3 this db2
  4 [[email protected] ~]## vi /etc/mysql-mmm/mmm_agent.conf
  5 include mmm_common.conf
  6 this db3
  7 [[email protected] ~]## vi /etc/mysql-mmm/mmm_agent.conf
  8 include mmm_common.conf
  9 this db4

6.5 管理Monitor节点配置

  1 [[email protected] ~]# vi /etc/mysql-mmm/mmm_mon.conf
  2 include mmm_common.conf
  3 <monitor>
  4     ip                  127.0.0.1                          #为了安全,只设置本机监听,mmm_mond默认监听的端口为9988
  6     pid_path            /var/run/mysql-mmm/mmm_mond.pid    #设置mmm_mond进程pid文件位置
  8     bin_path            /usr/libexec/mysql-mmm             #mmm可执行文件路径
 10     status_path         /var/lib/mysql-mmm/mmm_mond.status #mmm集群的状态文件
 12     ping_ips            172.24.8.10, 172.24.8.11, 172.24.8.12, 172.24.8.13
 13 #用于测试的IP,只要其中有一个地址能ping通,代表网络正常,不要写入本机(即Monitor)IP。
 14     auto_set_online     60                                 #设置是否自动上线,若大于0,抖动的主机在抖动时间范围过后,自动上线。
 16 ……
 17 </monitor>
 18
 19 <host default>
 20     monitor_user        mmm_monitor                        #设置mmm_monitor账号。
 22     monitor_password    x12345678                          #设置mmm_monitor密码。
 24 </host>
 25 debug 0                                                    #mmm管理器的运行模式,1为debug模式,0为正常模式。

注意:mmm-mon.conf只需要在监控管理Monitor节点上配置即可。

七 MMM集群的启动

7.1 管理监控Monitor节点启动

  1 [[email protected] ~]# /etc/init.d/mysql-mmm-monitor start
  2 [[email protected] ~]# chkconfig mysql-mmm-monitor on

7.2 所有agent节点启动

  1 [[email protected] ~]# /etc/init.d/mysql-mmm-agent start
  2 [[email protected] ~]# chkconfig mysql-mmm-agent on
  3 [[email protected] ~]# /etc/init.d/mysql-mmm-agent start
  4 [[email protected] ~]# chkconfig mysql-mmm-agent on
  5 [[email protected] ~]# /etc/init.d/mysql-mmm-agent start
  6 [[email protected] ~]# chkconfig mysql-mmm-agent on
  7 [[email protected] ~]# /etc/init.d/mysql-mmm-agent start
  8 [[email protected] ~]# chkconfig mysql-mmm-agent on

八 MMM基本维护

8.1 MMM常见命令

  1 [[email protected] ~]# mmm_control help
  2 Valid commands are:
  3     help                              - show this message	        #显示帮助信息
  4     ping                              - ping monitor		#测试网络运行状态
  5     show                              - show status		        #显示MMM集群节点状态
  6     checks [<host>|all [<check>|all]] - show checks status          #显示MMM集群中指定(所有)节点的详细状态
  8     set_online <host>                 - set host <host> online      #将MMM集群中的节点设置为online状态
 10     set_offline <host>                - set host <host> offline     #将MMM集群中的节点设置为offline状态
 12     mode                              - print current mode.         #显示MMM集群当前的运行模式,有active(默认)、manual和passive三种模式。
 14     set_active                        - switch into active mode.
 15     set_manual                        - switch into manual mode.
 16     set_passive                       - switch into passive mode.   #切换MMM集群到以上三种模式。
 18     move_role [--force] <role> <host> - move exclusive role <role> to host <host>
 19 #在互斥模式下切换角色
 20                                      (Only use --force if you know what you are doing!)
 21     set_ip <ip> <host>                - set role with ip <ip> to host <host>
 22 #用来在被动模式下操纵角色

8.2 查看集群状态

  1 [[email protected] ~]# mmm_control show

解释:

ONLINE:节点运行正常,处于在线状态;

ADMIN_OFFLINE:节点是通过手动模式离线的;

HARD_OFFLINE:节点是MMM集群执行ping操纵失败或检测到MySQL失败而切换的一种状态;

AWAITING_RECOVERY:等待恢复状态;

REPLICATION_FAIL:主从复制失败状态,一般由于复制主线程没运行导致;

REPLICATION_DELAY:复制日志有延迟,一般是由于检测日志失败导致的。

8.3 查看集群运行模式

  1 [[email protected] ~]# mmm_control mode

解释:

ACTIVE:表示主动模式,也是默认模式,即活动的Master故障后另一个备份的Master可自动接管故障Master角色,继续提供服务。Slave故障后其他节点的Slave也会自动接管故障Slave角色,继续提供服务。

MANUAL:表示手动模式,该模式不会自动执行切换,节点故障需要手动进行切换。

PASSIVE:表示被动模式,在此模式下,MMM管理端不会改变集群节点的角色,也不更新状态文件和发送任何信息给每个agent节点。

8.4 检查节点情况

  1 [[email protected] ~]# mmm_control checks all

解释:

ping:主要用来探测网络可用性;

MySQL:检测MySQL服务器是否运行正常;

rep_threads:检测MySQL的复制线程是否正常运行;

rep_backlog:检测MySQL的复制日志是否有积压。

注意:




以上四个检测任何一项出现问题,都会进行角色切换操作,从而保证MySQL服务的高可用性。

8.5 日志文件

db端:/var/log/mysql-mmm/mmm_agentd.log

监控端:/var/log/mysql-mmm/mmm_mond.log

九 测试MMM

9.1 测试集群复制功能

  1 [[email protected] ~]# mysql -uroot -px120952576 -h172.24.8.100
  2 mysql> show variables like "%hostname%";
  3 mysql> show variables like "%server_id%";

  1 mysql> create database mysqltest;
  2 mysql> use mysqltest;
  3 mysql> create table user(id int(5),name char(10));
  4 mysql> insert into user values (00001,‘zhangsan‘);

在Slave从服务器上进行验证:

  1 [[email protected] ~]# mysql -uroot -px120952576
  2 mysql> show databases;
  3 mysql> select * from mysqltest.user;

其他所有slave节点测试略。

9.2 读写分离测试

  1 [[email protected] ~]# mysql -ummm_test -px120952576 -h172.24.8.101
  2 mysql> use mysqltest;
  3 mysql> create table test_mmm(id int,email varchar(100));

结论:从reader权限的vip进入后只能进行读,不能写,实现了读写分离。

9.3 故障转移测试

A Master转移

  1 [[email protected] ~]# mmm_control show			#查看现有集群情况

  1 [[email protected] ~]# service mysqld stop		#停止Master01节点
  2 [[email protected] ~]# mmm_control show			#再次查看集群节点情况

  1 [[email protected] ~]# service mysqld start		#再次启动Master01节点
  2 [[email protected] ~]# mmm_control show

结论:由上可知当Master01节点故障时,writer vip自动切换到Master02上,当Master01节点重新启动,writer vip并不会切回Master01,类似Keepalived中的不抢占模式,若需要Master01切回writer,可执行以下命令手动切回:

  1 [[email protected] ~]# mmm_control move_role writer db1
  2 [[email protected] ~]# mmm_control show

B Slave转移

  1 [[email protected] ~]# service mysqld stop
  2 [[email protected] ~]# mmm_control show

  1 [[email protected] ~]# service mysqld start
  2 [[email protected] ~]# mmm_control show

结论:由上可知当Slave01节点故障时,reader vip自动切换到Master02上,当Slave01节点重新启动,reader vip会切回Slave01。

十 MMM总结

  1. Master02节点宕机不影响集群的状态,只是移除了Master02节点的读状态;
  2. Master01主节点宕机,由Master02主节点接管写角色,Slave01、Slave02指向新Master02主库进行复制,Slave01、Slave02会自动change master到Master02;
  3. MMM架构需要多个节点、多个IP,对服务器数量有要求;
  4. 在读写非常繁忙的业务系统下表现不是很稳定,可能会出现复制延时、切换失效等问题;
  5. MMM方案并不太适应于对数据安全性要求很高,并且读、写繁忙的环境中

参考资料1:http://www.cnblogs.com/chenmh/p/5563778.html

参考资料2:http://www.cnblogs.com/gomysql/p/3671896.html

参考资料3:《循序渐进Linux》

原文地址:https://www.cnblogs.com/itzgr/p/9908353.html

时间: 2024-10-10 13:49:55

003.MMM双主-双从读写分离部署的相关文章

Mysql + keepalived 实现双主热备读写分离【转】

Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论 架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12,Keepalived-1.2.7环境简介:1.Master-A 192.168.1.168 (Mysql+Keepalived)2.Master-B 192.168.1.169 (Mysql+Keepalived)3.写入VIP 192.168.100 (168主,169从)4.读取VIP 192.1

4、读写分离---双主双从(mycat)

双主双从 一个主机 m1 用于处理所有写请求,它的从机 s1 和另一台主机 m2 还有它的从机 s2 负责所有读请 求.当 m1 主机宕机后,m2 主机负责写请求,m1.m2 互为备机. 角色               地址 master1          192.168.199.231 slave1             192.168.199.185 master2          192.168.199.120 slave2             192.168.199.174

haproxy+keepalived双主模型及动静分离的实现

实验目标: 1.haproxy统计页面的输出机制: 2.haproxy动静分离机制: 3.基于keepalived的高可用实现: 环境: vm8虚拟机 操作系统: centos 6.4 内核版本: 2.6.32-358.el6.x86_64 注: (1) 每个haproxy各有两块网卡,外网网卡选择Bridge,内网网卡选择Vmnet2; (2) 内部两台web服务器的网卡都是选择Vmnet2; 一.准备工作: 1.各节点IP地址相关设置 node1:  ifconfig eth1 192.16

实现MySQL读写分离 部署集群基础环境(有图)

实现MySQL读写分离 部署集群基础环境 1 实现MySQL读写分离1.1 问题 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 1.2 方案 使用4台RHEL 7.2虚拟机,如图-1所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服

Amoeba实现Mysql读写分离部署文档

以下所有理解纯属个人理解,如若有误欢迎指出,不胜感激--o(∩_∩)o 两台服务器配置MYSQL主从复制实现数据高可用,这时读与写操作都有由master服务器来完成的,而从服务器只是复制了mster服务器的数据,这时可以利用一台服务器配置Amoeba实现mysql读写分离, master负责写,slave负责读取,当然 也可以有多个salve-- 从而减轻master服务器的压力,实现负载分摊: 拓扑图: Mysql主从复制原理: 两台mysql服务器一个作为master一个为slave:mas

Mycat读写分离部署分享

安装配置mycat 涉及到的安装包: 安装包:Mycat-server-1.6-RELEASE-linux.tar.gz 依赖环境:jdk-7u75-linux-x64.tar.gz 1安装JDK (1)创建java目录 # mkdir -p /usr/local/java (2)上传JDK到/usr/local/java目录下 (3)解压jdk-7u75-linux-x64.tar.gz # cd /usr/local/java # tar -zxvf jdk-7u75-linux-x64.t

MMM双主-双从读写分离部署

目录 一 前期规划 1.1 主机规划 1.2 虚拟IP规划 1.3 用户列表 1.4 整体架构 1.4 hosts修改 1.5 NTP配置 二 部署MySQL 2.1 安装MySQL 三 双主复制部署 3.1 master01 my.cf配置 3.2 Master02 my.cf配置 3.4 Master02创建账号 3.5 启动双主复制 3.3 启动Master02的slave功能 四 其他节点配置 4.1 所有Slave节点配置配置 4.2 所有Slave节点创建账号 4.2 Slave节点

MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录

Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式.主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性,而Mongodb副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,主节点挂掉后,整个集群内会实现自动切换. Mongodb副本集的工作原理客户端连接到整个Mongodb副本集,不关心具体哪一台节点机是否挂掉.主节点机负

基于maxscale的读写分离部署笔记

使用maxscale搭建的读写分离架构,后期还可以再结合MHA做master的故障转移,这样业务层面上不需要做任何的改动即可. 基于connect方式的不要使用.从库延迟他还会继续分发请求过去,暂时不适合生产使用. 实验演示: 目前的主从结构: node93     10.1.20.93 master node94  10.1.20.94 slave node95  10.1.20.95 slave node96  10.1.20.96 maxscale 先在master主库上创建相关的账户: