利用docker配置MySQL主从

总体步骤:

  1. 拉取mysql镜像
  2. 配置mysql主从设置
  3. 挂载mysql主从设置,分别创建主从容器
  4. 进入容器修改配置
  5. 测试主从服务器

拉取镜像

docker pull daocloud.io/mysql:5.7

分别在主从服务器拉取镜像

配置mysql主从设置

master服务器创建master文件夹
在my.cnf文件下添加如下设置:

[mysqld]
log-bin=mysql-bin //启用二进制日志
server-id=1

slave服务器创建slave文件夹
在my.cnf文件下添加如下设置:

[mysqld]
log-bin=mysql-bin //启用二进制日志
server-id=2

创建容器

创建容器进入容器修改配置。
master:
创建data目录
创建start.sh文件:

#!/bin/bash 
#
echo "--------start master-mysql ------"
docker run --name master-mysql \
-p 3316:3306 \
-v $(pwd)/my.cnf:/etc/mysql/my.cnf \
-v $(pwd)/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=<password> \
-d daocloud.io/mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_unicode_ci

运行start.sh

slave:
创建data目录
创建start.sh文件:

#!/bin/bash 
#
echo "--------start slave-mysql ------"
docker run --name slave-mysql \
-p 3316:3306 \
-v $(pwd)/my.cnf:/etc/mysql/my.cnf \
-v $(pwd)/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=<password> \
-d daocloud.io/mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_unicode_ci

-p 端口映射
-v 挂载
-e, –env=[] Set environment variables # 定义环境变量

运行start.sh

配置master mysql用户:
进入master-mysql容器:
使用 exec命令
docker exec –help

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG…] Run a command in an existing container

-d, –detach=false Detached mode: run command in the background 后台运行命令
-i, –interactive=false Keep STDIN open even if not attached
-t, –tty=false Allocate a pseudo-TTY

docker exec -it master-mysql bash

进入master-mysql容器mysql:

mysql -uroot -p<password>

创建一个用户名为 user 密码为 123456 的用户
所有ip:

mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY'123456';

指定ip:

mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'<your ip>' IDENTIFIED BY '123456';

查看mysql-bin和pos值:

mysql>show master status

配置slave mysql用户:
进入slave -mysql容器:

docker exec -it slave-mysql bash

进入slave-mysql容器mysql:

mysql -uroot -p<password>
mysql>change master to
master_host='xxx.xxx.xxx.xxx', //要连接的主服务器的ip
master_user='user', //用户名为user
master_log_file='mysql-bin.000003',//主库记录mysql-bin的值
master_log_pos=720,//主库的pos值
master_port=3316,//master服务器映射的master-mysql容器的端口
master_password='<password>';//之前配置的 user用户密码

最后查看状态:

mysql>show slave status\G

出现这两行说明成功:

Slave_IO_Running: Yes    
Slave_SQL_Running: Yes  

方法二:
创建容器同时设置配置
例如
创建master-mysql 并创建一个 user 用户:
创建start.sh文件:

#!/bin/bash 
#
echo "--------start slave-mysql ------"
docker run --name slave-mysql \
-p 3316:3306 \
-v $(pwd)/my.cnf:/etc/mysql/my.cnf \
-v $(pwd)/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=<password> \
-d daocloud.io/mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_unicode_ci
sleep 12

#进入容器并创建用户
docker exec -d master-mysql  mysql -uroot -p123456 -e "GRANT REPLICATION SLAVE ON *.* TO 'user'@'<your ip>' IDENTIFIED BY '123456';"

缺点:没有错误提示。
优点:不需要进入容器配置MySQL等操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值