MySQL Route负载均衡与读写分离Docker环境使用
Docker环境描述
主机名 | 部署服务 | 备注 |
---|---|---|
MySQL Route | MySQL Route | 部署在宿主机上的MySQL Route服务 |
MySQL Master1 | MySQL 5.7.16 | Docker环境与MySQL Master2互为主从 |
MySQL Master2 | MySQL 5.7.16 | Docker环境与MySQL Master1互为主从 |
MySQL Slave1 | MySQL 5.7.16 | Docker环境是MySQL Master1的从服务器 |
MySQL Slave2 | MySQL 5.7.16 | Docker环境是MySQL Master2的从服务器 |
宿主机服务部署
下载安装MySQL Route软件包
wget https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-8.0.11-1.el7.x86_64.rpm
rpm -ivh mysql-router-8.0.11-1.el7.x86_64.rpm
下载MySQL镜像
docker search mysql5.7
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/acdaic4v/mysql5.7-k2 Mysql 5.7 for use with joomla extension k2... 1 [OK]
docker.io docker.io/bingozhou/mysql5.7 mysql5.7 1
docker.io docker.io/eruma/java8-mysql5.7 1
docker.io docker.io/nidorpi/rpi-mysql5.7 MySQL for Raspberry Pi 1
docker.io docker.io/ymnoor21/mysql5.7 Dockerize MySQL 5.7 on a Ubuntu 14.04 setup. 1
docker.io docker.io/alanpeng/mysql5.7-replication-docker https://github.com/alanpeng/mysql5.7-repli... 0 [OK]
docker.io docker.io/balewski/mysql5.7 0
docker.io docker.io/bob69xxx/mysql5.7 0
docker.io docker.io/bunchjesse/mysql5.7 MySQL 5.7 0 [OK]
docker.io docker.io/codecloud/mysql5.7 0
docker.io docker.io/gbyoung/mysql5.7 0
docker.io docker.io/georgel/mysql5.7 0
docker.io docker.io/glwang88/mysql5.7 0
docker.io docker.io/guojicheng114/mysql5.7-replication-docker for minsheng test 0 [OK]
docker.io docker.io/hexwit/mysql5.7mb4 Based on official mysql image, but added f... 0
docker.io docker.io/javiersolis/mysql5.7 0
docker.io docker.io/naturadocker/mysql5.7 0
docker.io docker.io/pengfeifan/mysql5.7.16 0
docker.io docker.io/phungquocphu/mysql5.7 0
docker.io docker.io/shenrrow/mysql5.7 0
docker.io docker.io/shepard/mysql5.7 0
docker.io docker.io/showrisego/mysql5.7 0
docker.io docker.io/sixgod/mysql5.7 0
docker.io docker.io/vinodapplift/centos-mysql5.7 Cent OS 6.7 with Mysql 5.7 latest version 0
docker.io docker.io/yangguohai/mysql5.7
docker pull docker.io/acdaic4v/mysql5.7-k2
创建MySQL服务容器,并映射宿主机端口
docker run -it --name MySQL_Master1 -e MYSQL_ROOT_PASSWORD='123456' -p 3000:3306 docker.io/acdaic4v/mysql5.7-k2
docker run -it --name MySQL_Master2 -e MYSQL_ROOT_PASSWORD='123456' -p 3001:3306 docker.io/acdaic4v/mysql5.7-k2
docker run -it --name MySQL_Slave1 -e MYSQL_ROOT_PASSWORD='123456' -p 3002:3306 docker.io/acdaic4v/mysql5.7-k2
docker run -it --name MySQL_Slave2 -e MYSQL_ROOT_PASSWORD='123456' -p 3003:3306 docker.io/acdaic4v/mysql5.7-k2
授权MySQL数据库连接,并测试是否可以从宿主机直连
- 授权用户可以登录MySQL
docker exec -it MySQL_Master1 /bin/bash
mysql -uroot -p123456
grant all privileges on *.* to 'federico'@'%' identified by '123456';
- 测试宿主机是否可以连接至MySQL容器
mysql -h 192.168.1.205 -ufederico -P3000 -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.16 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> select version();
+-----------+
| version() |
+-----------+
| 5.7.16 |
+-----------+
1 row in set (0.00 sec)
MySQL [(none)]>
配置当前MySQL服务的主主复制以及主从复制
- 查看容器IP地址信息
docker inspect --format '{{ .NetworkSettings.IPAddress }}' MySQL_Master1
172.16.86.2
docker inspect --format '{{ .NetworkSettings.IPAddress }}' MySQL_Master2
172.16.86.3
docker inspect --format '{{ .NetworkSettings.IPAddress }}' MySQL_Slave1
172.16.86.4
docker inspect --format '{{ .NetworkSettings.IPAddress }}' MySQL_Slave2
172.16.86.5
- 配置主主复制与主从复制
1.主主复制
docker exec -it MySQL_Master1 /bin/bash
安装vim用于后续修改MySQL配置文件
apt-get update && apt-get install vim
修改MySQL配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
重启MySQL容器,让修改的配置文件生效,注意此配置需要在另外几台服务器做相同操作
docker stop MySQL_Master1 && docker start MySQL_Master1
mysql -u root -p123456
Master上的SQL操作(以此为例其余都需要正确配置)
grant replication slave on *.* to 'slave'@'%' identified by '123456';
flush privileges;
show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 582
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
Slave上的操作
stop slave;
change master to master_host='172.16.86.2',master_user='slave',master_port=3306,master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=582;
start slave;
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
配置启动MySQL Route
vim /etc/mysqlroute
# 默认的日志插件等相关配置路径
[DEFAULT]
logging_folder = /var/log/mysqlrouter/
plugin_folder = /usr/lib64/mysqlrouter
runtime_folder = /var/run/mysqlrouter
config_folder = /etc/mysqlrouter
# 日志显示级别
[logger]
level = INFO
[keepalive]
interval = 60
# 配置主服务器的高可用,当主节点down机后自动由第二节点接手服务
[routing:failover]
bind_address = 192.168.1.205
bind_port = 10000
connect_timeout = 3
max_connections = 1024
destinations = 192.168.1.205:3000,192.168.1.205:3001
mode = read-write
# 设置从服务器的负载均衡
[routing:balancing]
bind_address = 192.168.1.205
bind_port = 10001
connect_timeout = 3
max_connections = 1024
mode = read-only
destinations = 192.168.1.205:3002,192.168.1.205:3003
systemctl start mysqlroute
测试负载均衡与读写分离
以上测试我们可以实现读操作的负载均衡,读写分离是通过我们连接MySQL Route不同的端口来实现的。
MySQL Route负载均衡与读写分离Docker环境使用的更多相关文章
- 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离
技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...
- 利用中间件 mysql_proxy 完成 mysql 的负载均衡和读写分离
安装 mysql_proxy cd /usr/local/src wget http://mysql.cdpa.nsysu.edu.tw.Downloads/MySQL - ...
- Mycat搭建负载均衡,读写分离的Mysql集群
Mycat搭建负载均衡,读写分离的Mysql集群 准备环境 1.mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.Mycat-server-1.6.7.4-te ...
- MySQL集群(三)mysql-proxy搭建负载均衡与读写分离
前言 前面学习了主从复制和主主复制,接下来给大家分享一下怎么去使用mysql-proxy这个插件去配置MySQL集群中的负载均衡以及读写分离. 注意:这里比较坑的就是mysql-proxy一直没有更新 ...
- SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)
SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...
- Docker的安装和镜像管理并利用Docker容器实现nginx的负载均衡、动静分离
Docker的安装 一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化 ...
- Mysql主从配置,实现读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- 黄聪:Mysql主从配置,实现读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- 高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离
实战操作可参考:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb 一.环境 操作系统:CentOS-6.6-x86_ ...
随机推荐
- cf-Round542-Div2-B(贪心)
题目链接:http://codeforces.com/contest/1130/problem/B 思路: 贪心题.定义结构体数组a,a[i].x[0],a[i].x[1]分别表示i出现的第一个下标和 ...
- STL容器的常用用法
STL: 1.vector: vector<int> v;vector<int> v(10);//定义大小为10的int型向量容器.vector<int> v(10 ...
- Maven项目的拆分与聚合
---------------------siwuxie095 Maven 项目的拆分与聚合 1.对已有的 Ma ...
- spring框架之依赖注入(DI)
1. IOC和DI的概念 * IOC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * DI -- Dependency Injection,依赖注入,在 ...
- 相机拍摄时最重要的三个参数——光圈、快门、ISO
注:这篇文章我四年前发布在其他地方,现在移过来. 如果你对相机只有很少了解,那么看这篇文章再好不过啦,我结合很多资料,力图用最通俗易懂的方式进行讲解. 相机拍摄时最重要的3个参数就是——光圈.快门.I ...
- MVC FormCollection 无法获取值的问题
把action定义为[HttpPost],并且ajax.beginform中ajaxoption中定义为Post,在提交表单时就可以获取FormCollection的值了.httpGet或者后台不定 ...
- HDFS高可用性及其分布式系统思想基础
源自单点失效问题,也就是当NameNode不可用的时候,用什么办法可以平滑过渡? 最直接的办法是再添加一个备用的NN,这就产生了Active NameNode和Standby NameNode的设计思 ...
- JMeter Ant Task 生成的*.jtl打开之后request和response data是空的,怎样让其不是空的呢?
JMeter Ant Task 生成的*.jtl打开之后request和response data是空的,怎样让其不是空的呢?修改JMeter.properties,将jmeter.save.save ...
- filter 死循环(tomcat 启动完成 ,自动执行filter.dofilter,导致tomcat 启动超时) , tomcat 启动和 servers 启动 不同
package com.diancai.interceptor; import java.io.IOException; import javax.servlet.Filter; import jav ...
- 向文件写入一个数据块---write
函数原型:ssize_t write(int fd,const void *buf,size_t count); 参数说明:fd:文件描述符,buf:写入数据的缓冲区,count:写入数据的最大长度. ...