Docker容器启动Mysql,Docker实现Mysql主从,读写分离
Docker容器启动Mysql,Docker实现Mysql主从,读写分离
相关内容原文地址:
博客园: 当我遇上你csy:Docker实战之MySQL主从复制
CSDN:liumiaocn:MySQL: 容器化方式启动
一、Docker文件编排
编排docker-compose-mysql-cluster.yml,安装master和slave节点:
version: '3'
services:
mysql-master:
image: mysql:5.7
container_name: mysql-master
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- "3307:3306"
volumes:
- "./mysql/master/my.cnf:/etc/my.cnf"
- "./mysql/master/data:/var/lib/mysql"
links:
- mysql-slave
mysql-slave:
image: mysql:5.7
container_name: mysql-slave
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- "3308:3306"
volumes:
- "./mysql/slave/my.cnf:/etc/my.cnf"
- "./mysql/slave/data:/var/lib/mysql"
- 配置master配置文件my.cnf
[mysqld]
# [必须]启用二进制日志
log-bin=mysql-bin
# [必须]服务器唯一ID,默认是1,一般取IP最后一段
server-id=1
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
- 配置slave配置文件my.cnf
[mysqld]
# [必须]服务器唯一ID,默认是1,一般取IP最后一段
server-id=2
- 启动docker-compose,创建docker镜像文件
docker-compose -f docker-compose-mysql-cluster.yml up -d
通过docker ps可查看已启动的实例容器。
二、配置主从复制
2.1 配置master
2.2 配置slave
三、验证主从复制
3.1 master创建db
查看slave是否同步创建:
四、读写分离
MySQL主从复制是其自己的功能,实现读写分离就得依靠其他组件了,比如sharding-jdbc。但是sharding-jdbc只是实现读写分离,本身的权限控制还是需要MySQL这边来配置的。
- 配置master账户及权限
创建帐号并授予读写权限:
CREATE USER 'master'@'%' IDENTIFIED BY 'Password123';
GRANT select,insert,update,delete ON *.* TO 'master'@'%';
flush privileges;
- 配置slave账户及权限
创建帐号并授予只读权限:
use mysql;
CREATE USER 'slave'@'%' IDENTIFIED BY 'Password123';
GRANT select ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;
五、Docker启动Mysql
docker run --name mysql -d \
-e MYSQL_ROOT_PASSWORD=liumiao123 \
-e TZ=Asia/Shanghai \
-v `pwd`/mysql/data/:/var/lib/mysql \
-v `pwd`/mysql/conf.d/:/etc/mysql/conf.d \
-p 32011:3306 liumiaocn/mysql:5.7.16
进入mysql容器内部:
docker exec -it mysql sh
六、Docker-Compose方式
liumiaocn:mysql liumiao$ cat docker-compose.yaml
version: '2'
services:
# database service: mysql
mysql:
image: liumiaocn/mysql:5.7.16
ports:
- "32011:3306"
volumes:
- ./mysql/data/:/var/lib/mysql
- ./mysql/conf.d/:/etc/mysql/conf.d
environment:
- TZ=Asia/Shanghai
- MYSQL_ROOT_PASSWORD=liumiao123
restart: "no"
liumiaocn:mysql liumiao$
启动示例:
liumiaocn:mysql liumiao$ ls
docker-compose.yaml
liumiaocn:mysql liumiao$ docker-compose up -d
Creating network "mysql_default" with the default driver
Creating mysql_mysql_1 ... done
liumiaocn:mysql liumiao$
结果确认:
liumiaocn:mysql liumiao$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------
mysql_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:32011->3306/tcp
liumiaocn:mysql liumiao$
liumiaocn:mysql liumiao$ docker exec -it mysql_mysql_1 sh
# mysql -uroot -pliumiao123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.16 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Docker容器启动Mysql,Docker实现Mysql主从,读写分离的更多相关文章
- Docker容器启动时初始化Mysql数据库
1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...
- Docker(十七)-修改Docker容器启动配置参数
有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...
- 修改Docker容器启动配置参数
有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...
- docker容器启动设置固定IP
docker安装以后的网络类型 [root@insure updev]# docker network ls NETWORK ID NAME DRIVER SCOPE 14da40175b01 bri ...
- docker容器启动几分钟之后自动退出
2018-11-06 问题: docker容器启动几分钟之后自动退出 log日志报错 WARNING: overlay2: the backing xfs filesystem is formatte ...
- 解决docker容器启动时候无法映射端口的问题
当我们停止防火墙后,docker容器启动映射端口可能无法映射端口,这个时候需要重建docker0网桥. 详细的错误是这样的: docker: Error response from daemon: d ...
- docker容器启动后添加端口映射
DOCKER 给运行中的容器添加映射端口 方法1 1.获得容器IP 将container_name 换成实际环境中的容器名 docker inspect `container_name` | grep ...
- Centos7 docker容器启动后添加端口映射
docker容器启动后添加端口映射的两种方法: 一.通过修改防火墙策略添加端口映射 docker容器已创建好,但是想在容器内配置tomcat监控,需要新的端口去访问,但是映射时没有映射多余端口,此时, ...
- linux中MySQL主从配置(Django实现主从读写分离)
一 linux中MySQL主从配置原理(主从分离,主从同步) mysql主从配置的流程大体如图: 1)master会将变动记录到二进制日志里面: 2)master有一个I/O线程将二进制日志发送到sl ...
随机推荐
- Android猜数字大小游戏
功能介绍:该程序能够提示猜大了猜小了,并且对空白输入处理,还对猜测次数限制,提供重置功能. 1.先看界面,一个输入框EditText,两个Button 2.界面设计 activity_main2.x ...
- FPT: Feature Pyramid Transfomer
导言: 本文介绍了一个在空间和尺度上全活跃特征交互(fully active feature interaction across both space and scales)的特征金字塔transf ...
- git分支的创建与分支之间合并的底层原理
开发一个版本,采用的发布流程: (1).从master的最新代码拉取一个开发分支,在上面进行开发(这里假设开发分支为dev) (2).在开发分支上不断地进行提交版本,期间,master也会有因为其他版 ...
- 单细胞分析实录(5): Seurat标准流程
前面我们已经学习了单细胞转录组分析的:使用Cell Ranger得到表达矩阵和doublet检测,今天我们开始Seurat标准流程的学习.这一部分的内容,网上有很多帖子,基本上都是把Seurat官网P ...
- 软件工程与UML代码互改
这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 这个作业的要求在哪里https://edu.cnblogs.com/campus/fz ...
- 一张脑图整理Docker常用命令
先上图: Dcoker基本概念 Docker 包括三个基本概念: 镜像(Image):Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时 ...
- CSS&&label_div
Css-div部分 本章主要内容 0.基础知识 1.CSS概述 2.CSS基础语法 3.CSS选择器 4.CSS主要属性 5.CSS核心机制-盒子模型 6.CSS重点和难点-定位 7.综合示例 基础知 ...
- 直播预告:Quadro RTX显卡助力Twinmotion在建筑表现领域火力全开
新年伊始,泛CG继续起航! 2021年首期泛CG分享会 我们邀请了两位业界大咖一起分享 NVIDIA GPU实时渲染在建筑可视化领域的应用 新的一年,继续相约! 1.嘉宾介绍 魏老师从事设计可视化工作 ...
- 【C++】《C++ Primer 》第十五章
第十五章 面向对象程序设计 一.OOP:概述 面向对象程序设计(OOP)的核心思想是数据抽象.继承和动态绑定. 通过使用数据抽象,可以将类的接口和实现分离. 使用继承,可以定义相似的类型并对其相似关系 ...
- c++ 参数传递与返回值详解(reference)
pass by value or pass by reference? 我们知道,当函数在传递值的时候,会新建一个变量(没有名字)储存这个值 然后传递.降低程序运行的效率. 如果使用引用(refere ...