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

该博客介绍了如何在CentOS7环境中利用Docker部署MySQL的主从复制。首先,通过指定名称、端口映射、环境变量安装并创建主容器。接着,设置主Mysql的环境,包括复制账号和配置文件的修改。然后,创建从容器并同样配置其运行环境。使用Navicat连接从容器进行验证,确保主从复制的配置正确。最后,讨论了Mysql的读写分离实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装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连接创建主容器的复制账号

在这里插入图片描述

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

在这里插入图片描述

//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连接从容器进行配置

在这里插入图片描述

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.youkuaiyun.com/itzhuangjh/article/details/104367327

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值