docker环境 mysql读写分离 mycat maxscale
#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的更多相关文章
- MySQL读写分离---Mycat
一.什么是读写分离 在数据库集群架构中,让主库负责处理事务性查询,而从库只负责处理select查询,让两者分工明确达到提高数据库整体读写性能.当然,主数据库另外一个功能就是负责将事务性查询导致的数据变 ...
- Docker安装Mycat并实现mysql读写分离,分库分表
Docker安装Mycat并实现mysql读写分离,分库分表 一.拉取mycat镜像 二.准备挂载的配置文件 2.1 创建文件夹并添加配置文件 2.1.1 server.xml 2.1.2 serve ...
- Mycat安装并实现mysql读写分离,分库分表
Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...
- 提高性能,MySQL 读写分离环境搭建
这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...
- 提高性能,MySQL 读写分离环境搭建(一)
这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...
- MySQL读写分离之MyCAT
Mycat实现MySQL主从复制读写分离 MyCAT的安装及部署 1.部署jdk环境 MyCAT用Java开发,需要有JAVA运行环境,mycat依赖jdk1.7的环境 1)上传jdk [root@l ...
- 基于MYCAT中间件实现MYSQL读写分离
基于mycat实现mysql读写分离 完成主从复制的配置 /* 主节点:192.168.47.101 从节点:192.168.47.102 */ /*mycat为同一网段客户端*/ /* 修改主节点基 ...
- 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变
[Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...
- mysql读写分离的解决方案
来源于网上整理 http://yanwt.iteye.com/blog/1460780 现有三种解决方式实现mysql读写分离 1 程序修改mysql操作类 优点:直接和数据库通信,简单快捷的读写分离 ...
随机推荐
- win10下安装Ubuntu16.04双系统
其实我是不喜欢系统的,之前都是在win下面进行开发,现在来了个项目,经过各种环境的安装调研,最终选择在Ubuntu下面进行开发.之前想着为啥不在虚拟机里面安装Ubuntu进行操作呢,由于虚拟机的体验不 ...
- 老男孩python学习之作业二---三级菜单
因为之前花力气完成了购物小程序的作业 现在做这个三级菜单简直是so easy!! 1.显示省级菜单 2.交互,提示用户输入要查看的省份(退出e) 2.1.用户正确输入列表中的省份 3.显示市级菜单 3 ...
- Treap讲解
Treap讲解 上一篇blog提出了Treap这个算法,在这里我就要详细讲解. 首先,我们可以从字面上理解这个算法,Treap这个单词是由Tree和Heap两个单词构成的,所以它的性质就很好理解了,明 ...
- 热力图heatmap.js使用中的思路解析
官网: https://www.patrick-wied.at/static/heatmapjs/ 需求:使用heatmap.js制作热力图,反映人群分布情况 问题:热力图需要的数据:坐标 + 人数 ...
- mysql sql语句执行时是否使用索引检查方法
在日常开发中,使用到的数据表经常都会有索引,这些索引可能是开发人员/DBA建表时创建的,也可能是在使用过程中新增的.合理的使用索引,可以加快数据库查询速度.然而,在实际开发工作中,会出现有些sql语句 ...
- ng-select 下拉的两种方式
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
- str_replace替换换行符失败原因
在编程中,需要替换掉字符串的换行符再存进数据库, 语句: $str = str_replace(array('/r/n', '/r', '/n'), $str); 发现语句并没有替换,网上查找后,知道 ...
- 网络安全实验室_上传关writeup
请上传一张jpg格式的图片 先传个图片码试试 我肯定乖嘛(#`Д´)ノ 气到改后缀 请上传一张jpg格式的图片 我猜是00截断,不信来试试 先在赋值1.php .jpg,接着去hex中找到空格改成00 ...
- javascript的基础(2)--数据类型介绍
1. number数据类型 所有的数字都是Number数据类型 利用typeof运算符可以返回当前数据的数据类型 特殊值:NaN not a number 不是一个数字 注意 :小数的计算可能产生丢失 ...
- [Luogu 3835]【模板】可持久化平衡树
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作 ...