Docker安装mysql5.7并且配置主从复制
Docker安装mysql5.7并且配置主从复制
原文地址:
CSDN:SophiaLeo:Docker安装mysql5.7并且配置主从复制
一、拉取mysql镜像
docker pull mysql:5.7
二、创建文件docker.cnf
我采用的方式,是使用虚拟机,搭建docker环境,在Docker李新建了两个数据库,端口分别为3307和3308。其中3307为模拟master,3308为模拟slave。
2.1 mysql主机(192.168.21.55:3307)
2.1.1 创建文件夹
原教程方式是这样
mkdir /usr/local/mysql
cd mysql/
mkdir conf data
我的实现方式是这样,直接合并了第一步,直接通过docker构建,相较于他的操作,更为简单粗暴。
docker run -p 3307:3306 --name mysql_3308 -v /root/mysql/mysql_3308/conf:/etc/mysql/conf.d -v /root/mysql/mysql_3308/logs:/logs -v /root/mysql/mysql_3308/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1
2.1.2 创建docker.cnf
vim /usr/local/mysql/conf/docker.cnf
- 具体添加:
[mysqld]
server-id=1
log-bin=master-bin #只是读写,就只要主库配置即可.如果要做主从切换,那么主库和从库都需要开启.
skip-host-cache
skip-name-resolve
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
2.2 mysql从机(192.168.21.55:3308)
2.2.1 创建文件夹
mkdir /usr/local/mysql
cd mysql/
mkdir conf data
2.2.2 创建docker.cnf
vim /usr/local/mysql/conf/docker.cnf
- 具体添加:
[mysqld]
server-id=2
log-bin=master-bin
skip-host-cache
skip-name-resolve
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
三、创建容器并运行
3.1 放行端口号
此步操作,我并没有放行,因为本地虚拟机环境端口号都是开放的。
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
3.2 mysql主机
docker run --name mysqlmaster -p 3307:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:5.7
3.3 mysql从机
docker run --name mysqlslave -p 3308:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:5.7
四、开启主从复制
4.1 mysql主机
- 进入Mysql容器:
docker exec -it mysqlmaster /bin/bash
- 启动mysql
mysql -uroot -proot
- 创建用户
create user 'lhl'@'%' identified by 'root';
- 权限
grant replication slave on *.* to 'lhl'@'%';
- 刷新权限
flush privileges;
- 查看状态
show master status;

4.2 mysql从机
- 进入mysql容器
docker exec -it mysqlslave /bin/bash
- 启动mysql
mysql -uroot -proot
- 执行主从
change master to master_host='192.168.21.55',master_port=3307,master_user='lhl',master_password='root',master_log_file='master-bin.000003',master_log_pos=745;
- 如果报错,执行下面命令并再次执行上面的命令
stop slave;
- 开启复制
start slave;
- 查看主从是否成功
show slave status \G;
以下两个都为yes就代表成功了!!!!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
说明主从成功

PS:若直接按其教程走,应该是没有问题,能够直接成功的!感谢原文博主的分享!
Docker安装mysql5.7并且配置主从复制的更多相关文章
- CentOS7利用docker安装MySQL5.7
CentOS7利用docker安装MySQL5.7 前提条件 centos7 且内核版本高于3.10, 可通过以下命令查看内核版本 uname -r 利用yum 安装docker 安装一些必要的系统工 ...
- win8安装mysql5.5最后配置没有反应
win8安装mysql5.5最后配置没有反应 win8下安装mysql5.5一路顺利,可是到最后一步配置mysql服务及登录password后.注冊服务并启动服务界面一直没有不论什么反应: 本来以为是 ...
- Docker 安装MySQL5.7(三)
Docker 安装MySQL5.7 1.搜索docker镜像(可以看到搜索的结果,这个结果是按照一定的星级评价规则排序的) docker search mysql 2.拉取docker的mysql镜像 ...
- docker安装mysql5.7 数据挂载
docker安装mysql5.7,并数据卷挂载到主机 # docker 中下载 mysql docker pull mysql:5.7 #启动 docker run --name mysql3306 ...
- docker安装mysql5.6和redis3.2
环境:centos 6.8, docker version 1.7.1 1.docker安装mysql5.6 第一步:拉取镜像 docker pull mysql:5.6 第二步:docker run ...
- Linux安装MySql5.7及配置(yum安装)
Linux安装MySql5.7及配置(yum安装) [root@xld ~]# rpm -q centos-release centos-release-7-7.1908.0.el7.centos.x ...
- docker安装MySQL5.7示例!!坑
docker pull mysql 一.错误的启动 [root@localhost ~]# docker run ‐‐name mysql01 ‐d mysql 42f0981990 ...
- docker安装mysql5.6镜像并进行主从配置
docker安装mysql镜像并进行主从配置 1.去DaoCloud官网(dockerhub可能因为网速问题下载的慢)查找需要的mysql版本镜像 docker pull daocloud.io/li ...
- centos7用docker安装mysql5.7.24后配置主从
1)使用docker安装完成mysql5.7.24,我规划的是3台: 192.168.0.170(Master) 192.168.0.169(Slave) 192.168.0.168(Slave) 2 ...
随机推荐
- JVM个人总结一
看了深入理解JAVA虚拟机已经有一段时间了 发现很多东西如果不总结 脑子里总是没有一条线贯穿起来,也比较模糊混乱,所以还是有必要利用逻辑思维图总结下. JVM看了下 大致比较重要的分内存区域划分 ...
- 设计模式之SOLID原则
介绍 设计模式中的SOLID原则,分别是单一原则.开闭原则.里氏替换原则.接口隔离原则.依赖倒置原则.前辈们总结出来的,遵循五大原则可以使程序解决紧耦合,更加健壮. SRP 单一责任原则 OCP 开放 ...
- vue项目中的路由守卫
路由守卫的意义就相当于一个保安一样,作用很大,在实际的项目中运用也是不少,也就是当客户在登陆自己账号的时候,有可能存在客户有啥事的时候,自己后台或者pc的关闭全部浏览器,没有点击退出登录,或者在退出登 ...
- Hive数据导入Hbase
方案一:Hive关联HBase表方式 适用场景:数据量不大4T以下(走hbase的api导入数据) 一.hbase表不存在的情况 创建hive表hive_hbase_table映射hbase表hbas ...
- MySQL中in('5,6,7')只取第一个id为5对应的数据的思考
通过阅读本文你可以更好的理解两个知识点: 1.#{}与${}在实际项目中的使用,避免在项目中使用不当造成不可预知的Bug; 2.MySQL中in里面如果是字符串的话,为什么只取第一个对应的数据,eg: ...
- ABP vNext 审计日志获取真实客户端IP
背景 在使用ABP vNext时,当需要记录审计日志时,我们按照https://docs.abp.io/zh-Hans/abp/latest/Audit-Logging配置即可开箱即用,然而在实际生产 ...
- Go GRPC 入门(一)
前言 微服务相关 使用 GRPC 通讯的 Golang 微服务入门 举例写一个微服务,接收网址发送请求获取返回结果返回 正文 安装工具 安装 protobuf 这是 proto 文件的编译器 点我下载 ...
- LeetCode747 至少是其他数字两倍的最大数
在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是数组中每个其他数字的两倍. 如果是,则返回最大元素的索引,否则返回-1. 示例 1: 输入: nums = [3, ...
- mac配置Android SDK
下载地址:http://tools.android-studio.org/index.php/sdk 2.找到tools文件夹 选中android-sdk-macosx包下的tools文件夹,按com ...
- 【Linux】linux rinetd 端口转发部署
linux下简单好用的工具rinetd,实现端口映射/转发/重定向 Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具.Rinetd是单一过程的服务器,它 ...