docker容器中配置mysql集群详细操作步骤
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集群详细操作步骤相关推荐
- Nginx部署三台Tomcat集群详细操作步骤
详细步骤请看教程视频:视频地址 以下是安装教程和关键代码等资料: 讲解图例: 一.环境安装 JDK1.8安装教程:教程地址 Tomcat8.5获取链接: 链接:https://pan.baidu.co ...
- php配置mysql集群_mysql的集群配置
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 文档旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. ...
- 在Docker上快速配置PerconaXtraDBCluster集群
在Docker上快速配置PerconaXtraDBCluster集群 创建Docker内部网络 # Docker创建内部网络 Create network $ docker network creat ...
- mysql在ibm上安装教程_在ibm服务器上安装配置MySQL集群的方法
在ibm服务器上安装配置MySQL集群的方法 2014-07-13 16:45来源:中国存储网 导读:本文只是介绍安装和配置,关于一些名词和原理,请参考MySQL手册.一.环境:IBM x3560Vm ...
- Openstack技术\在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server
MySQL部署 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server. 操作步骤: 搜索mysql镜像 拉取mysql镜像 创建容器 操作容器中的mysql 容器 ...
- Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法
Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法 1).容器中登录my ...
- 无法从另一个容器访问Docker容器中的MySQL数据库|解决方案
▲ 点击上方"DevOps和k8s全栈技术"关注公众号 我从这里拉取了 MySQL 5.7 容器:https://hub.docker.com/_/mysql/ 这是我运行它的 ...
- docker 容器实现 hadoop分布式集群部署
在学习hadoop课程中,讲师介绍了hadoop的单机以及集群部署方式,由于本地资源限制,只有一台虚拟机,所以考虑使用docker的方式实现分布式集群搭建. 如上图: 需要在主节点启动NameNode ...
- consul配置mysql集群_consul1.6实现Mysql-Gtid主从读写分离和高可用-03
规划 Mysql Gtid主从配置 https://blog.51cto.com/9025736/2500516 consul集群搭建 https://blog.51cto.com/9025736/2 ...
最新文章
- Fiddler抓包工具总结(转)
- 会Python的大学生了不起吗?是的,简直开挂!
- VMware 克隆网卡无法启动
- 包 java中导入awt_Java 查找并高亮显示PDF文本
- 使用matlab模拟、检验和估计泊松过程
- Jasypt 加密-引言
- GDI+中发生一般性错误 以及发布时候需要配置的文件
- excel的IRR函数中的预估值有什么用
- FND MESSAGE的用法
- 标签条码打印软件如何创建连续数据变量
- C++ TR1 正则表达式
- PhpSpreadsheet常用操作
- 计算机技术网络信息安全
- PHP小程序多商户商城系统源码下载(免费全开源)_三勾商城开源版
- 2017华为软件精英挑战赛小结
- 气功:我国特有的一种健身术
- Grafana 导出所有dashboard
- 健康闹钟+颈椎操,保护你的颈椎
- 达梦数据库导出、导入数据
- 模拟退火算法介绍、分析与应用