#mysql读写分离测试

环境centos 7.4 ,docker 17.12 ,docker-compose

mysql 5.7 主从

mycat 1.6 读写分离

maxscale 2.2.4 读写分离

#################################

下载docker-compose文件

git clone https://gitee.com/almi/docker-compose.git
cd mysql # 构建mycat、maxscale镜像

启动

docker-compose up -d

#查看  

docker-compose ps
# Name Command State Ports
# -----------------------------------------------------------------------------------------------
# db-m1 docker-entrypoint.sh mysqld Up 0.0.0.0:3300->3306/tcp
# db-s1 docker-entrypoint.sh mysqld Up 0.0.0.0:3301->3306/tcp
# db-s2 docker-entrypoint.sh mysqld Up 0.0.0.0:3302->3306/tcp
# maxscale /maxscale Up 0.0.0.0:4006->4006/tcp, 0.0.0.0:6603->6603/tcp
# mycat ./mycat console Up 0.0.0.0:8066->8066/tcp, 0.0.0.0:9066->9066/tcp
# phpadmin /run.sh phpmyadmin Up 0.0.0.0:336->80/tcp, 9000/tcp #查看日志# docker logs db-m1
docker logs db-s1
docker logs db-s2
docker logs mycat
# 或者这样
docker-compose logs maxscale

#################################

# mysql主从配置

 #master设置同步账户slave@mypwd
docker-compose exec db-m1 mysql -uroot -pmytest -e "
create user slave;
grant replication slave on *.* to 'slave'@'172.18.18.%' identified by 'mypwd';
flush tables with read lock;
show master status;
" #查看master-bin 和 id
# +-------------------+----------+
# | File | Position |
# +-------------------+----------+
# | master-bin.000003 | 647 |
# +-------------------+----------+ #slave配置连接master
#使用刚查询的File和Position参数 # db-s1设置同步
docker-compose exec db-s1 mysql -uroot -pmytest -e "
change master to master_host='172.18.18.10',
master_port=3306,
master_user='slave',
master_password='mypwd',
master_log_file='master-bin.000003',
master_log_pos=647;
start slave;
"
#查看同步
docker-compose exec db-s1 \
mysql -uroot -pmytest -e "show slave status\G;" | grep Running #成功标示如下:
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes #db-s2同上 #在master创库创表,在salve查看

#################################

安装mysql客户端

yum install mariadb -y

#################################

# mycat 读写分离测试

#登录mycat代理端口
mysql -h 172.18.18.1 -P 8066 -uroot -p123 -e "select @@hostname;" | grep db #批量查询10次
for i in `seq 1 10`;do mysql -h 172.18.18.1 -P 8066 -uroot -p123 -e "select @@hostname;" | grep db;done # 多次查询,会分别显示不同的hostname,查询基本轮询了 #查询database只能看到testdb
#因为配置文件只设置了这个库

#其它测试
#在master创建testdb数据库
docker-compose exec db-m1 mysql -uroot -pmytest -e "create database testdb;show databases;" #登录mycat创建库testdb表name
mysql -h 172.18.18.1 -P 8066 -uroot -p123
#
create database testdb;
use testdb;
create table name
(
sid varchar(20),
sname varchar(50),
primary key (Sid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
show tables; #插入数据
use testdb;
insert into `name`(sid,sname) values ('001','张三');
insert into `name`(sid,sname) values ('002','李四'); select * from testdb.name; #在db-s1 db-s2分别插入不同数据,在登录mycat查询

#################################

#maxscale读写分离测试


#登录MySQL每个节点,创建监控、路由用户
# 略,本实例直接使用root用户 #登录maxscale代理查询mysql
mysql -uroot -pmytest -h 172.18.18.1 -P4006 -e "select @@hostname;" #查询10次
for i in `seq 1 10`;do mysql -uroot -pmytest -h 172.18.18.1 -P4006 -e "select @@hostname;" | grep db;done # 本次查询,全部是db-s1节点,关闭s1节点后才是s2节点
# 由于使用最新版的,不知道是配置问题还是bug

#登录maxcale管理查看状态
mysql -h 172.18.18.1 -P6603 -uadmin -pmariadb
#查询如下,更多命令查看 help # MaxScale> list servers
# Servers.
# -------------------+-----------------+-------+-------------+--------------------
# Server | Address | Port | Connections | Status
# -------------------+-----------------+-------+-------------+--------------------
# server1 | 172.18.18.10 | 3306 | 0 | Master, Running
# server2 | 172.18.18.11 | 3306 | 0 | Slave, Running
# server3 | 172.18.18.12 | 3306 | 0 | Slave, Running
# -------------------+-----------------+-------+-------------+--------------------
# MaxScale> list services
# Services.
# --------------------------+-------------------+--------+----------------+-------------------
# Service Name | Router Module | #Users | Total Sessions | Backend databases
# --------------------------+-------------------+--------+----------------+-------------------
# Read-Write-Service | readwritesplit | 1 | 22 | server1, server2, server3
# MaxAdmin-Service | cli | 2 | 3 |
# --------------------------+-------------------+--------+----------------+------------------- #other
#配置里使用加密密码
#创建加密文件
maxkeys /var/lib/maxscale/.secrets
#生成加密后的密码123
maxpasswd /var/lib/maxscale/ 123

docker环境 mysql读写分离 mycat maxscale的更多相关文章

  1. MySQL读写分离---Mycat

    一.什么是读写分离 在数据库集群架构中,让主库负责处理事务性查询,而从库只负责处理select查询,让两者分工明确达到提高数据库整体读写性能.当然,主数据库另外一个功能就是负责将事务性查询导致的数据变 ...

  2. Docker安装Mycat并实现mysql读写分离,分库分表

    Docker安装Mycat并实现mysql读写分离,分库分表 一.拉取mycat镜像 二.准备挂载的配置文件 2.1 创建文件夹并添加配置文件 2.1.1 server.xml 2.1.2 serve ...

  3. Mycat安装并实现mysql读写分离,分库分表

    Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...

  4. 提高性能,MySQL 读写分离环境搭建

    这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...

  5. 提高性能,MySQL 读写分离环境搭建(一)

    这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...

  6. MySQL读写分离之MyCAT

    Mycat实现MySQL主从复制读写分离 MyCAT的安装及部署 1.部署jdk环境 MyCAT用Java开发,需要有JAVA运行环境,mycat依赖jdk1.7的环境 1)上传jdk [root@l ...

  7. 基于MYCAT中间件实现MYSQL读写分离

    基于mycat实现mysql读写分离 完成主从复制的配置 /* 主节点:192.168.47.101 从节点:192.168.47.102 */ /*mycat为同一网段客户端*/ /* 修改主节点基 ...

  8. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变

    [Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...

  9. mysql读写分离的解决方案

    来源于网上整理 http://yanwt.iteye.com/blog/1460780 现有三种解决方式实现mysql读写分离 1 程序修改mysql操作类 优点:直接和数据库通信,简单快捷的读写分离 ...

随机推荐

  1. Hive函数:LAG,LEAD,FIRST_VALUE,LAST_VALUE

    参考自大数据田地:http://lxw1234.com/archives/2015/04/190.htm 测试数据准备: create external table test_data ( cooki ...

  2. ZOJ-1586 QS Network---最小生成树Prim

    题目链接: https://vjudge.net/problem/ZOJ-1586 题目大意: 首先给一个t,代表t个测试样例,再给一个n,表示有n个QS装置,接下来一行是n个QS装置的成本.接下来是 ...

  3. 对scrapy经典框架爬虫原理的理解

    1,spider打开某网页,获取到一个或者多个request,经由scrapy engine传送给调度器schedulerrequest特别多并且速度特别快会在scheduler形成请求队列queue ...

  4. jacascript 构造函数、原型对象和原型链

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 先梳理一下定义: 我们通常认为 object 是普通对象,function 是函数对象: Function ...

  5. ACE工具概述

    一:ACE简介 ADAPTIVE 通信环境(ACE,ADAPTIVE Communication Enviroment)是一种广泛的主机基础设施中间件,ACE可以免费获得,可以在http://ace. ...

  6. SSH端口转发(本地转发、远程转发、动态转发)

    SSH端口转发   一:什么是端口转发?     SSH 会自动加密和解密所有SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他TCP 端口的网络数据通过SSH 链接来转发,并且自动提供 ...

  7. [LeetCode] String Compression 字符串压缩

    Given an array of characters, compress it in-place. The length after compression must always be smal ...

  8. [LeetCode] Falling Squares 下落的方块

    On an infinite number line (x-axis), we drop given squares in the order they are given. The i-th squ ...

  9. ASP.NET MVC-异常处理&自定义错误页

    一.应用场景 对于B/S应用程序,在部署到正式环境运行的过程中,很有可能出现一些在前期测试过程中没有发现的一些异常或者错误,或者说只有在特定条件满足时才会发生的一些异常,对于使用ASP.NET MVC ...

  10. POJ2454 Jersey Politics

    Description In the newest census of Jersey Cows and Holstein Cows, Wisconsin cows have earned three ...