mysql主从架构与Docker搭建Mysql主主架构

mysql主从架构原理

在这里插入图片描述

MySQL通用架构方案

在这里插入图片描述

mysql5.7主从架构搭建

  1. 修改主节点配置
    [mysqld]
    server_id=1
    log_bin=mysql-bin
    binlog_format=ROW
    
  2. 重启服务,使用命令查看是否配置成功show variables like '%log_bin%'
    在这里插入图片描述
  3. 修改从机的server_id
    SET GLOBAL server_id=2;
  4. 主机创建账号并赋予权限
GRANT REPLICATION SLAVE ON *.* to 'uname'@'%' identified by 'pwd@!'; 
flush privileges;-- 刷新权限
  1. 查看主机状态,log_pos
show master status;
SHOW BINARY LOGS;
  1. 从机执行change命令
change master to master_host='10.10.101.5',master_port=3306,master_user='uname',master_password='pwd',master_log_file='mysql-bin.000001',master_log_pos=749379;
start slave; -- 开启slave
show slave status; -- 查看状态
stop slave;
-- 设置从库只读
SET GLOBAL read_only=1;

docker下搭建MySQL主主架构步骤

1. docker创建俩台mysql 端口:23306 和 33306

docker run -p 23306:3306 --privileged=true --name mysql-23306
 -v /D/Docker/mysql-23306/mysql:/etc/mysql
 -v /D/Docker/mysql-23306/logs:/logs
 -v /D/Docker/mysql-23306/data:/var/lib/mysql
 -v /D/Docker/mysql-23306/mysql-files:/var/lib/mysql-files 
 -e MYSQL_ROOT_PASSWORD=admin -d mysql:5.7

2. 创建my.cnf,并将my.cnf拷贝到docker容器中,并重启生效

docker cp D:/Docker/mysql-23306/mysql/my.cnf mysql-23306:/etc/mysql/

配置文件内容如下:

[mysqld]
# 注意这里的server_id不能一样
server_id = 2
log_bin=mysql-bin
replicate-wild-ignore-table=mysql.*
replicate-wild-ignore-table=sys.*

链接mysql,使用sql查看刚刚配置的server_id

show VARIABLES like '%server_id%'

3. 配置完成,开始执行sql,设置主从

  1. docker查看俩台mysql的ip。
λ docker inspect mysql-23306 --format='{{.NetworkSettings.IPAddress}}
'172.17.0.2

λ docker  inspect mysql-33306 --format='{{.NetworkSettings.IPAddress}}
'172.17.0.3
  • 注意:这里是为了后面同步做准备。要写容器内的ip地址,而不能是127.0.0.1。否则,使用show slave status 命令查看状态的时候,Slave_IO_Runing会一直显示Colleting。
  1. 在23306创建账号,刷新权限
grant replication slave on *.* to 'rep'@'%' identified by '123456';
FLUSH PRIVILEGES;
# 查看主机状态,获取File和Position
show master status;
  1. 在33306执行change命令,并开启同步
    change命令语法:CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='recorded_log_file_name',MASTER_LOG_POS='POS';
CHANGE MASTER TO MASTER_HOST='172.17.0.2', MASTER_USER='rep', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=482;
start slave;
stop slave;
show slave status

至此,主从同步完成。

主主同步

接着我们把33306当作主库,23306当作从库,再次重复操作。

  1. 在33306创建账号,刷新权限
grant replication slave on *.* to 'rep'@'%' identified by '123456';
FLUSH PRIVILEGES;
show master status;
  1. 在23306执行change命令,并开启同步
CHANGE MASTER TO MASTER_HOST='172.17.0.3', MASTER_USER='rep', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=154;
start slave;
stop slave;
show slave status
posted @   Huathy  阅读(16)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-12-22 关于使用Gradle编译SpringBoot项目报错莫名其妙的问题;idea自动删除build好的class文件
点击右上角即可分享
微信分享提示