centos7基于docker实现mysql的主从复制

安装Mysql

docker pull mysql:5.7

创建运行主(Mysql)容器

docker run --name master -p 3339:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  • –name 为容器指定名称,这里是master
  • -p 将容器的指定端口映射到主机的指定端口,这里是将容器的3339端口映射到主机的3306端口
  • -e 设置环境变量,这里是指定root账号的密码为123456
  • -d 后台运行容器,并返回容器ID
  • mysql:5.7: 指定运行的mysql版本

Navicat连接创建主容器的复制账号

centos7基于docker实现mysql的主从复制_第1张图片

//用户名:slave  密码:123456  %为全部ip,可改为指定ip
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
//赋权限给slave用户
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
//刷新权限
FLUSH PRIVILEGES;

centos7基于docker实现mysql的主从复制_第2张图片

//File为日志文件,Position是其位置,后面配置从数据库需要用到
show master status;

配置主Mysql的运行环境

将docker中主mysql的配置文件复制到自建的文件目录下:

docker cp master:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/mysql/master/mysqld.cnf

在/usr/local/mysql/master下修改mysqld.cnf

//在 [mysqld] 节点最后加上后保存
log-bin=mysql-bin //使用binary logging,mysql-bin是log文件名的前缀
server-id=1 //唯一服务器ID,非0整数,不能和其他服务器的server-id重复

修改完后,将/usr/local/mysql/master下的配置文件覆盖docker中的配置文件

docker cp /usr/local/mysql/master/mysqld.cnf master:/etc/mysql/mysql.conf.d/mysqld.cnf

重启docker容器

docker restart master

创建运行从容器

docker run --name slave -p 3340:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

配置从Mysql的运行环境

将docker中从mysql的配置文件复制到自建的文件目录下:

docker cp slave:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/mysql/slave/mysqld.cnf

在/usr/local/mysql/slave下修改mysqld.cnf

log-bin=mysql-bin
server-id=2

修改完后,将/usr/local/mysql/slave下的配置文件覆盖docker中的配置文件

docker cp /usr/local/mysql/slave/mysqld.cnf slave:/etc/mysql/mysql.conf.d/mysqld.cnf

重启docker容器

docker restart slave

Navicat连接从容器进行配置

centos7基于docker实现mysql的主从复制_第3张图片

change master to 
master_host='39.105.203.213',  //master的ip  不能为127.0.0.1   
master_user='slave',       //master的帐号
master_password='123456',   //master的密码
master_log_file='mysql-bin.000001',  //master 查询的file名,上面查询过
master_port=3339,    //master 端口
master_log_pos=76281;   //日志文件位置,上面查询过
start slave; // 启动
show slave status; //查看从容器的状态

在这里插入图片描述

  • Slave_IO_State等于Waiting for master to send event为成功一半了,如果是Connecting to master,测不成功,回头看看是不是配置或者账号密码错了。
  • Slave_IO_Running与Slave_SQL_Running都为Yes,且上述也成功了,则 可以开始测试主从复制了。

Mysql读写分离

https://blog.csdn.net/itzhuangjh/article/details/104367327

你可能感兴趣的:(Mysql)