1.下载mysql镜像

这里我们拉取官方的最新版本的镜像:
docker pull mysql:latest
这一步也可以省略,当没有版本的时候,会自动去远程仓库里面拉取

2.创建master实例并启动

docker run -p 3307:3306 --name mysql-master --privileged=true
-v /mydata/mysql/master/log:/var/log/mysql
-v /mydata/mysql/master/data:/var/lib/mysql
-v /mydata/mysql/master/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7

参数说明
-p 3307:3306 将容器的3306端口映射到主机的3307端口
-v /mydata/mysql/master/conf:/etc/mysql ;将配置文件夹挂载到主机上
-v /mydata/mysql/master/log:/var/log/mysql:将日志文件夹挂载到主机上
-v /mydata/mysql/master/data:/var/lib/mysql:将数据文件夹挂载到主机上
-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

修改master基本配置
vi /mydata/mysql/master/conf/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

[mysqld]
init_connect=‘SET collation_connection=utf8_unicode_ci’
init_connect=‘SET NAMES utf8’
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

注意:skip-name-resolve一定要加,不然连接mysql会超级慢

添加master主从复制部分:

server_id=1
log-bin=mysql-bin
read-only=0
binlog-do-db=shop_sms
binlog-do-db=shop_wms

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

3.创建slave实例并启动

docker run -p 3317:3306 --name mysql-slaver-01 --privileged=true
-v /mydata/mysql/slaver/log:/var/log/mysql
-v /mydata/mysql/slaver/data:/var/lib/mysql
-v /mydata/mysql/slaver/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7

修改slave基本配置
vi /mydata/mysql/slaver/conf/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

[mysqld]
init_connect=‘SET collation_connection=utf8_unicode_ci’
init_connect=‘SET NAMES utf8’
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

添加salve主从复制部分:

server_id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=shop_sms
binlog-do-db=shop_wms

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

4.为master授权用户来同步他的数据

1.进入master容器
docker exec -it mysql /bin/bash

2.进入mysql内部 (mysql -uroot -p)
(1)授权root可以远程访问(主从无关,为了方便远程连接mysql)
grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
flush privileges;

(2)添加用来同步的用户:
grant replication slave on . to ‘backup’@’%’ identified by ‘123456’

3.查看master状态

show master status

5.为slaver授权用户来同步他的数据

1.进入slaver容器
docker exec -it mysql /bin/bash

2.进入mysql内部 (mysql -uroot -p)
(1)授权root可以远程访问(主从无关,为了方便远程连接mysql)
grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
flush privileges;

(2)设置主库连接:
change master to master_host=‘192.168.0.106’,master_user=‘backup’,master_password=‘123456’,master_log_file=‘mysql-bin.000001’,master_log_pos=0,master_port=3307
(3)启动从库同步
start slave
(4)查看master状态
show slave status

前提条件:
需要在你的虚拟机上面安装docker,并启动docker的守护进程

注意:
1.当运行docker容器之后,需要通过docker的一些基本指令来排查mysql容器是否运行正常,比如如下几个排查常用的命令工具:
docker ps (查询当前所有正在运行的容器)
docker ps -a (查询所有的容器,包括运行的容器和没有运行的容器)
docker logs 容器id (查询容器运行日志)
docker start 容器id (启动容器)
docker restart 容器id (重新启动容器)
docker stop 容器id (停止容器)
docker rm 容器id (删除容器)
当发现容器有问题时,需要根据日志去排查和定位问题,最终解决问题

2.当发现容器运行起来之后,建议通过mysql客户端工具登录远程数据库,在客户端进行mysql数据的一些命令操作,这样可以节省在容器中运行的时候,可视化界面操作起来更方便一些。

上面的所有操作本人亲自操作完全没有问题,最后也验证通过了,同步数据也还比较快,欢迎大家一起交流!

docker容器中配置mysql集群详细操作步骤相关推荐

  1. Nginx部署三台Tomcat集群详细操作步骤

    详细步骤请看教程视频:视频地址 以下是安装教程和关键代码等资料: 讲解图例: 一.环境安装 JDK1.8安装教程:教程地址 Tomcat8.5获取链接: 链接:https://pan.baidu.co ...

  2. php配置mysql集群_mysql的集群配置

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 文档旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. ...

  3. 在Docker上快速配置PerconaXtraDBCluster集群

    在Docker上快速配置PerconaXtraDBCluster集群 创建Docker内部网络 # Docker创建内部网络 Create network $ docker network creat ...

  4. mysql在ibm上安装教程_在ibm服务器上安装配置MySQL集群的方法

    在ibm服务器上安装配置MySQL集群的方法 2014-07-13 16:45来源:中国存储网 导读:本文只是介绍安装和配置,关于一些名词和原理,请参考MySQL手册.一.环境:IBM x3560Vm ...

  5. Openstack技术\在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server

    MySQL部署 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server. 操作步骤: 搜索mysql镜像 拉取mysql镜像 创建容器 操作容器中的mysql 容器 ...

  6. Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法

    Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法 1).容器中登录my ...

  7. 无法从另一个容器访问Docker容器中的MySQL数据库|解决方案

      ▲ 点击上方"DevOps和k8s全栈技术"关注公众号 我从这里拉取了 MySQL 5.7 容器:https://hub.docker.com/_/mysql/ 这是我运行它的 ...

  8. docker 容器实现 hadoop分布式集群部署

    在学习hadoop课程中,讲师介绍了hadoop的单机以及集群部署方式,由于本地资源限制,只有一台虚拟机,所以考虑使用docker的方式实现分布式集群搭建. 如上图: 需要在主节点启动NameNode ...

  9. consul配置mysql集群_consul1.6实现Mysql-Gtid主从读写分离和高可用-03

    规划 Mysql Gtid主从配置 https://blog.51cto.com/9025736/2500516 consul集群搭建 https://blog.51cto.com/9025736/2 ...

最新文章

  1. Fiddler抓包工具总结(转)
  2. 会Python的大学生了不起吗?是的,简直开挂!
  3. VMware 克隆网卡无法启动
  4. 包 java中导入awt_Java 查找并高亮显示PDF文本
  5. 使用matlab模拟、检验和估计泊松过程
  6. Jasypt 加密-引言
  7. GDI+中发生一般性错误 以及发布时候需要配置的文件
  8. excel的IRR函数中的预估值有什么用
  9. FND MESSAGE的用法
  10. 标签条码打印软件如何创建连续数据变量
  11. C++ TR1 正则表达式
  12. PhpSpreadsheet常用操作
  13. 计算机技术网络信息安全
  14. PHP小程序多商户商城系统源码下载(免费全开源)_三勾商城开源版
  15. 2017华为软件精英挑战赛小结
  16. 气功:我国特有的一种健身术
  17. Grafana 导出所有dashboard
  18. 健康闹钟+颈椎操,保护你的颈椎
  19. 达梦数据库导出、导入数据
  20. 模拟退火算法介绍、分析与应用

热门文章

  1. c++制作小游戏2048
  2. WEEP10 dp入门
  3. 单基因gsea_单基因TCGA联合GEO干湿结合在胃癌中再发4分+
  4. IDataParameter[]的用法
  5. 我要玩石器多开的攻与防和外挂 ④
  6. 如何使用DiskPart命令行格式化分区?
  7. 华大HC32F4A0看门狗配置
  8. 豆瓣API实践项目-数据api接口-1
  9. AFNetwork上传图片
  10. 可信计算机组成部门的事,一文了解可信计算基(TCB):信息安全的基础