MySQL主从复制(一主两从)架构搭建(阿里云服务器)

建立主机master

1.建立数据库master

复制代码
docker run --name master --restart always -p 3308:3306 -v /root/docker/volumes/etc/master:/etc/mysql -v /root/docker/volumes/var/lib/master:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riCXT8zM -d mysql:latest

2.复制master的配置文件到docker

复制代码
docker cp master:/etc/my.cnf /root/docker/volumes/etc/master/my.cnf

3.卸载并安装master

复制代码
docker stop master
docker rm master
docker run --name master -p 3308:3306 -v /root/docker/volumes/etc/master/my.cnf:/etc/my.cnf -v /root/docker/volumes/etc/master/my.cnf.d:/etc/mysql/my.cnf.d -v /root/docker/volumes/etc/master/conf.d:/etc/mysql/conf.d -v /root/docker/volumes/var/lib/master:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riCXT8zM -d mysql:latest

建立从机slave

1.建立数据库slave01

复制代码
docker run --name slave01 --restart always -p 3309:3306 -v /root/docker/volumes/etc/slave01:/etc/mysql -v /root/docker/volumes/var/lib/slave01:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riDYQ8zM -d mysql:latest

2.复制slave01的配置文件到容器

复制代码
docker cp slave01:/etc/my.cnf /root/docker/volumes/etc/slave01/my.cnf

3.卸载并安装slave01

复制代码
docker stop slave01
docker rm slave01
docker run --name slave01 -p 3309:3306 -v /root/docker/volumes/etc/slave01/my.cnf:/etc/my.cnf -v /root/docker/volumes/etc/slave01/my.cnf.d:/etc/mysql/my.cnf.d -v /root/docker/volumes/etc/slave01/conf.d:/etc/mysql/conf.d -v /root/docker/volumes/var/lib/slave01:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riDYQ8zM -d mysql:latest

建立从机slave02与slave01类似!!!

1.建立数据库slave02

复制代码
docker run --name slave02 --restart always -p 3310:3306 -v /root/docker/volumes/etc/slave02:/etc/mysql -v /root/docker/volumes/var/lib/slave02:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riEZG8zM -d mysql:latest

2.复制slave02的配置文件到容器

复制代码
docker cp slave02:/etc/my.cnf /root/docker/volumes/etc/slave02/my.cnf

3.卸载并安装slave01

复制代码
docekr stop slave02  #停止容器slave02
docker rm slave02  #移除容器slave02
docker run --name slave02 -p 3310:3306 -v /root/docker/volumes/etc/slave02/my.cnf:/etc/my.cnf -v /root/docker/volumes/etc/slave02/my.cnf.d:/etc/mysql/my.cnf.d -v /root/docker/volumes/etc/slave02/conf.d:/etc/mysql/conf.d -v /root/docker/volumes/var/lib/slave02:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riEZG8zM -d mysql:latest

主从联系步骤

1.在三个数据库分别执行

复制代码
show variables like 'server_id';

可以看到都是以下一样的结果:

2.配置my.cnf配置文件

主机master配置日志

复制代码
# start~
datadir=/var/lib/mysql
# 是否开启mysql日志  0:关闭(默认值) 1:开启
general-log=1
# mysql 日志的存放位置
general_log_file="/var/lib/mysql/logs/master.log"

slow-query-log=1

slow_query_log_file="/var/lib/mysql/logs/master-slow.log"

long_query_time=10

# Error Logging.
log-error="/var/lib/mysql/logs/master.err"
# end~
  • 方法一
    • 在slave01和slave02上配置文件my.cnf以下代码

slave01:

复制代码
server_id=2

slave02:

复制代码
server_id=3

执行完后执行在服务器终端执行以下代码:

复制代码
docker restart slave01
docker restart slave02

mysql命令行

复制代码
#重新查一下server_id
show variables like 'server_id';
  • 方法二:执行命令
    • 在slave01与slave02上配置文件my.cnf以下代码

slave01:

复制代码
docker exec -it slave01 /bin/bash
cat /etc/my.cnf
sed -i '$a server_id=2' /etc/my.cnf
docker restart slave01
mysql> show variables like 'server_id';

slave02:

复制代码
docker exec -it slave01 /bin/bash
cat /etc/my.cnf
sed -i '$a server_id=2' /etc/my.cnf
docker restart slave01
mysql> show variables like 'server_id'; 

mysql命令行:

复制代码
#重新查一下server_id
show variables like 'server_id';

如果server_id分别为1,2,3,则成功!!!

3.先查看主机master数据库的日志

复制代码
mysql> show master status;

4.在从机slave01,slave02分别在sql命令行执行以下代码

复制代码
change master to
master_port=3308,(主机端口号)
master_user='root',
master_password='riCXT8zM',(主机密码)
master_host='172.20.16.116',(填自己ip)
master_log_file='binlog.000003',(按照日志填)
master_log_pos=157;(按照日志填)

5.开启主从服务(slave01,slave02的终端执行)

复制代码
mysql> start slave;

查看是否配置成功

复制代码
mysql> show slave status \G;

由于在navicat上执行可视化不怎么好看,难以看出什么东西,我们从服务器进入MySQL进行输入

拓展补充:

执行show slave status \G;显示以下:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

则成功
MySQL主从复制(一主两从)读写分离架构 安全规范 重启步骤:

Linux> docker stop slave01;

Linux> docker stop salve02;

Linux> docker stop master;

Linux> docker start master;

Linux> docker start slave01;

Linux> docker start slave02;
进入容器后台与数据终端的基本命令:

Linux> docker exec -it slave01 bash

Linux> docker exec -it slave01 /bin/bash

mysql> mysql -uroot(用户) -priDYQ8zM(密码)

Linux> docker exec -it slave02 /bin/bash

mysql> mysql -uroot(用户) -priEZG8zM(密码)

相关推荐
电子科技圈6 分钟前
SmartDV展示AI & HPC连接与存储IP解决方案,以解锁下一代算力芯片和节点的“速度密码”
网络·数据库·人工智能·嵌入式硬件·aigc·边缘计算
枫叶林FYL15 分钟前
【自然语言处理 NLP】前沿架构与多模态 选择性状态空间模型与并行扫描算法:从原理到实现
算法·自然语言处理·架构
独特的螺狮粉15 分钟前
开源鸿蒙跨平台Flutter开发:地震震源探测系统-地震波形与波干涉渲染架构
开发语言·flutter·华为·架构·开源·harmonyos
腾科IT教育16 分钟前
Oracle OCP 认证考试到底怎么考?(附备考路线)
数据库·oracle·开闭原则·ocp认证·ocp培训
柒.梧.16 分钟前
MySQL索引优化+慢查询全解析
数据库·mysql
captain37617 分钟前
数据库约束
mysql
这辈子谁会真的心疼你22 分钟前
如何修改视频媒体修改时间?两个方法介绍
java·服务器·数据库
呆瑜nuage29 分钟前
MySQL数据类型全解析
数据库·mysql
电磁脑机30 分钟前
论AI幻觉的本质:人类符号幻觉的镜像映射与认知破局 ——基于三场正交统一场论的底层阐释
人工智能·神经网络·机器学习·重构·架构
Harvy_没救了30 分钟前
MySQL主从架构深度解析:原理、优化与实践指南
运维·mysql·架构