热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker安装mysql_【mycat系列二】Docker安装mycat并实现MySQL的读写分离

点击关注“阿甘正专”,设为星标奇迹每天都在发生,等你而来目录一、前言二、jdk安装三、安装mycat1、拉取mycat镜像2、创建文件夹3、准备挂载的配

点击关注“阿甘正专”,设为星标a72bcadd3b5e19d8f8250c80b1062a20.gif

奇迹每天都在发生,等你而来

dc235c2b0e5dde37358acba9ece6f227.png

目录

一、前言

二、jdk安装

三、安装mycat

1、拉取mycat镜像

2、创建文件夹

3、准备挂载的配置文件

4、启动mycat

5、新建数据库

四、附录


一、前言

通过上一节,《基于 Docker 搭建 MySQL 主从复制的详细教程》

我们可以使用docker 配置 mysql 两主四从

01fc6d4eafb1708aad646f6a970706c2.png

f5fdc1ddb2e406bdf2c2e607c91ac135.png

通过以下命令可以查看每个容器的ip

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id

2b8485bc0174ffaf68cdfa9e04e7c7cb.png

二、jdk安装

创建文件夹

mkdir -p /usr/local/java

cd /usr/local/java

下载jdk并配置

  • 去官网下载,并用xftp等传输工具把下载的jdk放入/usr/local/java

  • 解压

tar -zxvf jdk-8u212-linux-x64.tar.gz

配置环境变量

vim /etc/profile

# java env

export JAVA_HOME=/usr/local/java/jdk1.8.0_192

export JRE_HOME=$JAVA_HOME/jre

export PATH=$PATH:$JAVA_HOME/bin

# Tomcat require this env

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

刷新,使配置生效

source /etc/profile

查看是否成功

java -version

f70887d9fa7d27bb07fbebf4dbe4e6cd.png

三、安装mycat

1、拉取mycat镜像

docker pull longhronshens/mycat-docker

2、创建文件夹

用于保存mycat的主要配置文件

mkdir -p /usr/local/mycat

cd /usr/local/mycat

3、准备挂载的配置文件

增加mycat配置:rule.xml、server.xml、schema.xml,拷贝到/usr/local/mycat目录下

具体的配置可下载mycat压缩包,解压,位于conf文件夹下,修改小部分信息即可,以下列出可要修改部分:

rule.xml,基本不用修改

9df9455099238a93387a454ad4a002eb.png

server.xml,修改mycat账户信息

3360a31e82ab1db704c61a60853ff62b.png

schema.xml,配置mysql主从信息。前提是根据上一节配置好两主四从,url对应的是上面查询的每个mysql容器的ip,注意对应关系即可:

3742efcbee3c2ed7fce86ebc6e781b49.png

4、启动mycat

docker 启动mycat容器,加载上面配置好的文件

docker run --name mycat -v /usr/local/mycat/schema.xml:/usr/local/mycat/conf/schema.xml -v /usr/local/mycat/rule.xml:/usr/local/mycat/conf/rule.xml -v /usr/local/mycat/server.xml:/usr/local/mycat/conf/server.xml --privileged=true -p 8066:8066 -p 9066:9066 -e MYSQL_ROOT_PASSWORD=123456 -d longhronshens/mycat-docker

  • -p  8066:8066:把容器8066端口映射到宿主机的8066端口;

  • -e  MYSQL_ROOT_PASSWORD=123456:设置初始密码为123456;

  • -v  /usr/local/mycat/schema.xml:/usr/local/mycat/conf/schema.xml:把宿主机内的配置文件挂载到容器中。

818cfd52b7793938409cfc6e5c0d47dd.png

5、新建数据库

在mysql 主库新建一个数据库test_db,与上面schema.xml中配置的一致(不要操作从库)

65da400f0fc521073f7c8ced4d75a2bf.png

6、创建mycat连接

注:使用navicat连接(不推荐,可能报错)

52d450856ef208640d7687b79bf782c9.png

进入mysql里连接

docker exec -it mysql-master /bin/bash

mysql -uroot -proot -P8066

开始创建刚刚配置的逻辑库,逻辑表:

-- 分别在每个逻辑主机创建test_db库(master创建test_db库)

CREATE DATABASE IF NOT EXISTS test_db;

-- 连接mycat成功,在test_db库执行以下SQL语句

CREATE TABLE IF NOT EXISTS t_test (

id BIGINT(20) NOT NULL,

title VARCHAR(100) NOT NULL ,

PRIMARY KEY (id)

) ENGINE=INNODB DEFAULT CHARSET=utf8 ;

INSERT INTO t_test (id,title) VALUES ('1','test0001');

INSERT INTO t_test (id,title) VALUES ('2','test0002');

INSERT INTO t_test (id,title) VALUES ('3','test0003');

INSERT INTO t_test (id,title) VALUES ('4','test0004');

INSERT INTO t_test (id,title) VALUES ('5','test0005');

INSERT INTO t_test (id,title) VALUES ('6','test0006');

SELECT * FROM t_test;

CREATE TABLE IF NOT EXISTS t_task_test (

id BIGINT(20) NOT NULL,

org_code VARCHAR(100) NOT NULL ,

title VARCHAR(100) NOT NULL ,

PRIMARY KEY (id)

) ENGINE=INNODB DEFAULT CHARSET=utf8 ;

INSERT INTO t_task_test (id,org_code,title) VALUES ('1','W12340001','test0001');

INSERT INTO t_task_test (id,org_code,title) VALUES ('2','W12340002','test0002');

INSERT INTO t_task_test (id,org_code,title) VALUES ('3','W12340003','test0003');

INSERT INTO t_task_test (id,org_code,title) VALUES ('4','W12340004','test0004');

INSERT INTO t_task_test (id,org_code,title) VALUES ('5','W12340005','test0005');

INSERT INTO t_task_test (id,org_code,title) VALUES ('6','W12340006','test0006');

SELECT * FROM t_task_test;

94816e136ceb650ea2dbef6dfc2d4557.png

四、附录

期间遇到mysql-master 插入数据报错,但是mysql-master2正常:

--数据库中插入数据或执行sql语句时一直报下面这个错误:

Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

首先,可以先查看一下 mysql-master 数据库现在的sql_mode的值,sql语句为:

select version(), @@sql_mode;

获取结果可能如下,不同的设置查询出来的有区别:

63ef65940a40fdbb0c561a32d43ebe0e.png

然后可以使用如下语句,去设置自己需要的sql_mode.

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

最后,配置好所有,就可以尝试在mycat中操作数据库表,查看是否同步更新到具体的物理数据库mysql中。

参考:

https://blog.csdn.net/Amor_Leo/article/details/85218405

https://github.com/baojingyu/docker-mycat-mysql

b90298f157092b0ae46d4b3a823e1c4d.gif

●史上最强Tomcat8性能优化

●阿里巴巴为什么能抗住90秒100亿?--服务端高并发分布式架构演进之路

●B2B电商平台--ChinaPay银联电子支付功能

●学会Zookeeper分布式锁,让面试官对你刮目相看

●SpringCloud电商秒杀微服务-Redisson分布式锁方案

查看更多好文,进入公众号--撩我--往期精彩

55d240eb7bd07584bd53f166153739b5.png

右上角按钮分享给更多人哦~9db2d967e05bf46f894f0b41c410fc31.png9db2d967e05bf46f894f0b41c410fc31.png

来都来了,点个在看再走吧~~~

d320f67ccacbdd2e4b95823e242f2e8a.gif



推荐阅读
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • PatchODAX8: ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
author-avatar
U曹宸prideX_J
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有