mysql主从架构与Docker搭建Mysql主主架构
文章目录
mysql主从架构原理
MySQL通用架构方案
mysql5.7主从架构搭建
- 修改主节点配置
[mysqld] server_id=1 log_bin=mysql-bin binlog_format=ROW
- 重启服务,使用命令查看是否配置成功
show variables like '%log_bin%'
- 修改从机的server_id
SET GLOBAL server_id=2;
- 主机创建账号并赋予权限
GRANT REPLICATION SLAVE ON *.* to 'uname'@'%' identified by 'pwd@!';
flush privileges;-- 刷新权限
- 查看主机状态,log_pos
show master status;
SHOW BINARY LOGS;
- 从机执行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,设置主从
- 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。
- 在23306创建账号,刷新权限
grant replication slave on *.* to 'rep'@'%' identified by '123456';
FLUSH PRIVILEGES;
# 查看主机状态,获取File和Position
show master status;
- 在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当作从库,再次重复操作。
- 在33306创建账号,刷新权限
grant replication slave on *.* to 'rep'@'%' identified by '123456';
FLUSH PRIVILEGES;
show master status;
- 在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
本文来自博客园,作者:Huathy,遵循 CC 4.0 BY-NC-SA 版权协议。转载请注明原文链接:https://www.cnblogs.com/huathy/p/17253802.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-12-22 关于使用Gradle编译SpringBoot项目报错莫名其妙的问题;idea自动删除build好的class文件