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数据的一些命令操作,这样可以节省在容器中运行的时候,可视化界面操作起来更方便一些。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值