实验环境准备:

master:192.168.200.111

slave1:192.168.200.112

slave2:192.168.200.113

Altas:192.168.200.114

client:192.168.200.115

第一步:关闭防火墙(master,slave1,slave2,Altas)

[root@localhost ~]# systemctl stop firewalld && setenforce 0 && iptables -F

第二步:在master,slave1,slave2上实现主从复制

步骤省略,详情请参考以下网址:

https://www.cnblogs.com/lyqlyqlyq/p/11677034.html

master:

mysql> grant all on *.* to 'admin'@'192.168.200.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

slave1:

mysql> grant all on *.* to 'admin'@'192.168.200.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

slave2:

mysql> grant all on *.* to 'admin'@'192.168.200.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

第三步:配置Altas服务器

[root@localhost ~]# wget  https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm

[root@localhost ~]# rpm -ivh Atlas-2.2.1.el6.x86_64.rpm

[root@localhost ~]# cd /usr/local/mysql-proxy/bin/

[root@localhost bin]# ./encrypt 123456

/iZxz+0GRoA=

[root@localhost bin]# cp /usr/local/mysql-proxy/conf/test.cnf /usr/local/mysql-proxy/conf/test.cnf.bak

[root@localhost bin]# vim /usr/local/mysql-proxy/conf/test.conf

[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 192.168.200.111:3306
proxy-read-only-backend-addresses = 192.168.200.112:3306,192.168.200.113:3306
pwds = admin:/iZxz+0GRoA=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log = REALTIME
proxy-address = 0.0.0.0:1234
admin-address = 0.0.0.0:2345

[root@localhost bin]# /usr/local/mysql-proxy/bin/mysql-proxyd test start

OK: MySQL-Proxy of test is started   //出现即成功

[root@localhost ~]# netstat -lnpt | grep mysql-proxy
tcp 0 0 0.0.0.0: 0.0.0.0:* LISTEN 28754/mysql-proxy
tcp 0 0 0.0.0.0: 0.0.0.0:* LISTEN 28754/mysql-proxy

第四步:测试

此时的三台MySQL服务器是主从备份

在mysql-master 创建db_test 库及该库下的test表

mysql> create database AB_ab;

mysql> create table ab(id char(1));

可以在112和113上查看该库及表

mysql> show  databases;

在112和113 服务器上停止主从备份

mysql> stop slave;

在111上添加表内容

mysql> insert into AB_ab.ab values('9');

此前在服务器上同步了表,所以在从服务器上可以直接手动插入其他内容

在slave1 上:

mysql> insert into AB_ab.ab values('1');

在slave2上:

mysql> insert into AB_ab.ab values('2'');

在115上测试

[root@localhost ~]# yum -y install mariadb 或者mysql

mysql -uadmin -p123456 -h 192.168.200.114 -P1234

(1) 读测试

2)写测试:

mysql> insert into AB_ab.ab values('5'');

在master服务器上查看是否写入:

高可用:

192.168.200.113 Atlas备

[root@localhost ~]# wget  https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm

[root@localhost ~]# rpm -ivh Atlas-2.2.1.el6.x86_64.rpm

[root@localhost ~]# cd /usr/local/mysql-proxy/bin/

[root@localhost bin]# ./encrypt 123456

/iZxz+0GRoA=

[root@localhost bin]# cp /usr/local/mysql-proxy/conf/test.cnf /usr/local/mysql-proxy/conf/test.cnf.bak

[root@localhost bin]# vim /usr/local/mysql-proxy/conf/test.conf

[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 192.168.200.111:3306
proxy-read-only-backend-addresses = 192.168.200.112:3306,192.168.200.113:3306
pwds = admin:/iZxz+0GRoA=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log = REALTIME
proxy-address = 0.0.0.0:1234
admin-address = 0.0.0.0:2345

[root@localhost bin]# /usr/local/mysql-proxy/bin/mysql-proxyd test start

OK: MySQL-Proxy of test is started   //出现即成功

[root@localhost ~]# netstat -lnpt | grep mysql-proxy
tcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN 28754/mysql-proxy 
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 28754/mysql-proxy

[root@localhost ~]# yum -y install keepalived

[root@localhost ~]# cp /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf.bak

[root@localhost ~]# vim  /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id LVS_ATLAS
}

vrrp_script chk_atlas_port {
script "/opt/check_atlas.sh"
weight 5
}

vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 99
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

track_script {
chk_atlas_port
}
virtual_ipaddress {
192.168.200.254
}
}

[root@localhost ~]# vim  cat /opt/chk_atlas.sh

#!/bin/bash
counter=$(ps -C mysql-proxy --no-heading | wc -l)
if [ "${counter}" = "0" ];then
/usr/local/mysql-proxy/bin/mysql-proxyd test start
sleep 3
counter=$(ps -C mysql-proxy --no-heading | wc -l)
if [ "{counter}" = "0" ];then
systemctl stop keepalived
fi
fi

[root@localhost ~]# chmod +x /opt/chk_atlas.sh

[root@localhost ~]#  systemctl start keepalived

192.168.200.114 Atlas主

[root@localhost ~]# yum -y install keepalived

[root@localhost ~]# cp /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf.bak

[root@localhost ~]# vim  /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id LVS_ATLAS
}

vrrp_script chk_atlas_port {
script "/opt/check_atlas.sh"
weight 5
}

vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

track_script {
chk_atlas_port
}
virtual_ipaddress {
192.168.200.254
}
}

[root@localhost ~]# vim  cat /opt/chk_atlas.sh

#!/bin/bash
counter=$(ps -C mysql-proxy --no-heading | wc -l)
if [ "${counter}" = "0" ];then
/usr/local/mysql-proxy/bin/mysql-proxyd test start 
sleep 3
counter=$(ps -C mysql-proxy --no-heading | wc -l)
if [ "{counter}" = "0" ];then
systemctl stop keepalived
fi
fi

[root@localhost ~]# chmod +x /opt/chk_atlas.sh

[root@localhost ~]#  systemctl start keepalived

高可用搭建完成!

 

mysql基于Altas读写分离并实现高可用的更多相关文章

  1. mysql主主、mysql-proxy读写分离、keepalived高可用完美组合

    配置mysql主主复制 服务器A:172.16.100.9 服务器B:172.16.100.10 首先在服务器A和服务器B上各安装好单机版mysql5.7,安装好后,再继续下面的操作. 在服务器A和服 ...

  2. mysql主从复制以及读写分离

    之前我们已经对LNMP平台的Nginx做过了负载均衡以及高可用的部署,今天我们就通过一些技术来提升数据的高可用以及数据库性能的提升. 一.mysql主从复制 首先我们先来看一下主从复制能够解决什么问题 ...

  3. 聊聊Mysql主从同步读写分离配置实现

    Hi,各位热爱技术的小伙伴您们好,好久没有写点东西了,今天写点关于mysql主从同步配置的操作日志同大家一起分享.最近自己在全新搭建一个mysql主从同步读写分离数据库简单集群,我讲实际操作步骤整理分 ...

  4. Linux下MySQL主从复制(GTID)+读写分离(ProxySQL)-实施笔记

    GTID概念: GTID( Global Transaction Identifier)全局事务标识.GTID 是 5.6 版本引入的一个有关于主从复制的重大改进,相对于之前版本基于 Binlog 文 ...

  5. MySQL 主从复制与读写分离 (超详细图文并茂小白闭着眼睛都会做)

    MySQL 主从复制与读写分离 1.什么是读写分离 2.为什么要读写分离 3.什么时候要读写分离 4.主从复制与读写分离 5.mysql支持的复制类型 6.主从复制的工作过程 7.MySQL主从复制延 ...

  6. 30.Mysql主从复制、读写分离

    Mysql主从复制.读写分离 目录 Mysql主从复制.读写分离 读写分离 读写分离概述 为什么要读写分离 什么时候要读写分离 主从复制与读写分离 mysql支持的复制类型 主从复制的工作过程 初始环 ...

  7. MySQL + Atlas --- 部署读写分离

    阅读目录 1. 数据库用户配置 2. 主从数据库连接 3. Atlas配置 4. 读写分离测试 序章 Atlas是360团队弄出来的一套基于MySQL-Proxy基础之上的代理,修改了MySQL-Pr ...

  8. Amoeba+Mysql实现数据库读写分离

    一.Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明.具有负载均衡.高可用性.sql过滤.读写分离 ...

  9. Mysql主从配置+读写分离

    Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...

随机推荐

  1. Switch能否用String类型做参数?

    switch(expr): 其中,expr参数可以是一个枚举常量(由整型或字符类型实现)或一个整数表达式,其中整数表达式可以是基本类型int或其包装类Integer.由于byte.short和char ...

  2. 1.VUE前端框架学习记录一

    VUE前端框架学习记录一文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/file/f0 ...

  3. RBAC用户权限管理数据库设计的图文详解

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

  4. .NET面试题集锦①

    一.前言部分 文中的问题及答案多收集整理自网络,不保证100%准确,还望斟酌采纳. 1.面向对象的思想主要包括什么? 答:任何事物都可以理解为对象,其主要特征: 继承.封装.多态.特点:代码好维护,安 ...

  5. navicat12过期问题,Windows平台。

    首先关闭Navicat 然后 win+R,输入regedit 回车,打开注册表编辑器: 删除HKEY_CURRENT_USER\Software\PremiumSoft\Data 展开HKEY_CUR ...

  6. Windows下安装的Jenkins修改默认端口号8080(修改配置文件的方式)

    1.首先在Windows下找到Jenkins安装目录.2.在安装目录下找到jenkins.xml文件 3.打开jenkins.xml文件,找到httpPort=8080 4.修改成你想要的端口号即可, ...

  7. 多线程模拟生产者消费者示例之wait/notify

    public class Test { public static void main(String[] args) throws InterruptedException { List<Str ...

  8. Checking out pull requests locally

    https://help.github.com/en/articles/checking-out-pull-requests-locally https://github.com/betaflight ...

  9. win10右键在此处打开CMD

    1.在网上找了好多发现都不能运行,最后找到一个靠谱的记下来,方便以后使用. 2.新建一个 .reg格式的脚本 Windows Registry Editor Version 5.00 [HKEY_CL ...

  10. .net 运行原理

    刚学习那会,感觉.net运行原理是很复杂的,也去了解过相关的东西,但是很晦涩,难于理解.感觉有些难了,也就放弃了解了.今天回头想想,也是当时有些毛躁了,不管怎么说,时至今日是有些明白运行原理. 从头开 ...