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 router docker_MySQL Route负载均衡与读写分离Docker环境使用相关推荐

  1. MySQL5.6基于GTID同步复制,与如何实现MySQL负载均衡、读写分离。

    MySQL想必大家都不陌生,之前文章也有介绍同步复制与半同步复制,今天先来了解下什么是GTID. GTID(global transaction ID)全局事务ID,是由服务器的UUID+一段随机数事 ...

  2. 使用MySQL Router实现高可用、负载均衡、读写分离

    目录 一.MySQL Router简介 1. 功能 2. 架构 3. 使用 二.安装配置 三.自动失败切换 四.负载均衡 五.读写分离 六.多实例 1. 环境 2. 配置文件 3. 功能测试 参考: ...

  3. proxy负载均衡、读写分离

    如何在客户端应用的时候,路由语句. 一般用两种方法 1: 直接在PHP的mysql类做判断,最简单,不用额外加软件 比如discuz论坛. 2:用集群中间件 比如官方的mysql_proxy ,还有国 ...

  4. 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡

    文章目录 一.MHA+ProxySQL架构 二.快速搭建MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装docker-compose软件(若已安装,可忽略) ...

  5. mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

    配置mysql+lvs+keeplived实现Mysql读操作的负载均衡 环境: test1192.168.46.131master test2192.168.46.130slave备份test库 t ...

  6. mysql dba系统学习(18)mysql主从复制的实现 mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

    mysql主从复制的实现 1.MySQL复制的实现原理 MySQL支持单向.双向复制.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入一个二进制日志文 ...

  7. haproxy对mysql集群进行负载均衡

    haproxy对mysql集群进行负载均衡: 参考网址:https://www.cnblogs.com/jave1ove/p/5980053.html 注: mysql为集群模式,我使用的为mysql ...

  8. MySQL使用Mycat实现分库分表-读写分离

    MySQL使用Mycat实现分库分表-读写分离 Mycat Mycat介绍 什么是Mycat? Mycat架构 Mycat核心概念 MyCat主要解决的问题 MyCat对多数据库的支持 Mycat分片 ...

  9. 使用Nginx负载均衡及动静分离

    使用Nginx负载均衡及动静分离 目录 使用Nginx负载均衡及动静分离 一.系统拓扑图 二.环境准备 三.服务器安装 1.jdk,tomcat,mysql 2.Nginx的安装 2.1 gcc安装 ...

  10. Nginx负载均衡与动静分离

    文章目录 反向代理与负载均衡 nginx动静分离实验 在nginx主机上配置负载均衡 在nginx主机上配置动静分离 反向代理与负载均衡 nginx通常被用作后端服务器的反向代理,这样就可以很方便的实 ...

最新文章

  1. opengl源码 实现无缝切换图片过场_手把手讲解 Android hook技术实现一键换肤
  2. 设计上如何避免EMC问题
  3. mysql 优化设计库_数据库优化设计与SQL优化
  4. C语言随机数生成超详解
  5. Android知识体系
  6. mysql索引实现原理_Mysql索引原理
  7. Pandas 文本数据方法 repeat( )
  8. python zip用法_python zip用法
  9. 软件开发和DBA谁更吃香?有答案了
  10. Android预定义样式?android:attr/attribute、?attr/attribute和?attribute
  11. 计算机网络课制作双绞线实验,计算机网络实验报告(双绞线).doc
  12. 要建立亲密的关系,就必须少一些指责,多一些倾听
  13. win7原版安装版系统
  14. 云渲染那个好?云渲染测评终极章。市面上在的都在了!
  15. android代码查找快捷键是什么,Android Studio搜索功能(查找功能)及快捷键图文详解(示例代码)...
  16. RGB (255,0,0)或0x00FF0000
  17. 【仿真】Carla世界的时间 [2]
  18. 【贪心算法之“买卖股票问题”——C++实现 (附源代码及运行截图)】
  19. 2023最新软件测试面试题(带答案)
  20. 无盘服务器一个千兆网卡,网吧无盘上千兆网卡显示成百兆怎么解决?千兆网线打法!...

热门文章

  1. 台式计算机主机内置喇叭不响,台式机扬声器没声音怎么样解决
  2. 人工智能驱动的智能制造(人工智能系列)
  3. 热闹2年,折叠屏手机怎么还是“雷声大、雨点小”?
  4. IJCAI 2022 | 即插即用分类器模块:一行代码大幅提升零样本学习方法效果
  5. 前端之 HTML 知识点扫盲
  6. Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Archit
  7. C++表达式语句实训 对 26 个大写英文字母进行循环加密,输入一个大写英文字母(明文)和一个整数秘钥,输出用秘钥对该大写英文字母加密后的结果(密文)。
  8. appbase 和docbase
  9. swiper禁止手动滑动
  10. Word2019 未找到 MathPage.wll 文件的解决方法