主从搭建的一些步骤

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言(mysql的主从搭建)

通俗而言就是将数据库的内容修改放在主数据库,将数据的读取放在从数据库上,这样既可以提高整体的性能,减轻主服务器的负担,同时也可以用于数据的备份和恢复

一、为什么要主从搭建?

为了满足更高的性能要求,同时也为了提高数据冗余性从而使数据更安全
这里须引入CAP理论
C:一致性 (在分布式系统中所有节点的数据一致)
A:可用性 (性能要强,不能出现长时间的不可用状态)
P:分区容错性 (当节点之间出现故障时,各分区仍可以独立运行)
CAP理论的核心观点是:三者无法同时满足,只能三者选其二实现,即CA or CP or AP


二、主从搭建的原理(这里以一主一从为例)

在这里插入图片描述

  • 当master中的数据发生改变时,binlog会记录这种改变(以二进制的形式)
  • slave会开启IO线程读取binlog中的改变并将其写进slave中的Relay log中
  • slave中的SQL线程会读取relay log中的改变并将其写进slave数据库中

三、binlog常用指令(这里注意这些语句都是进入docker容器并且再进入MySQL后的命令语句)

1、查看binlog是否启用

show variables like 'log_bin';

加粗样式
这里看到是已经启用了的


2.查看binlog的位置

show variables like '%datadir%';

在这里插入图片描述
可以看到是在/var/lib/mysql/路径中


3.显示所有日志文件

show binary logs;

在这里插入图片描述
我这里只有一个binlog文件,也可以有多个


4.查询指定binlog文件

show binlog events in 'wnhz-master-logbin.000001';

在这里插入图片描述

可以看到查到了很多,我这里就粘取一部分


四、主从开始搭建

1、创建用于存放主从的文件夹

image-20230728145745467
这里选择使用如图的结构,其中3306作主,3310和3311作从,是一主两从的结构,配置文件my.cnf放置在conf文件夹下

首先创建储存用的文件夹(注意这里先进入到local文件夹中,路径在根目录下的usr下的local)

[root@localhost local]# mkdir -p  software/mysql/3306  software/mysql/3310 software/mysql/3311

创建好后如图所示
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
别忘了这一步

2、从容器中拷贝所需要的原始配置文件my.cnf

这里先随便创建一个容器目的是为了拷贝里面自带的原始文件my.cnf

docker run -it --name mytest -e MYSQL_ROOT_PASSWORD=123 -d mysql

在这里插入图片描述
使用docker ps后发现已经创建好了

开始拷贝
注意要先进入指定的文件夹,这里我已经依靠cd语句成功进入
在这里插入图片描述

docker cp mytest:/etc/mysql/my.cnf ./

在这里插入图片描述
(注:这里的config文件夹名称后来改成了conf)

拷贝成功


3 、开始搭建主容器


 *# 其中的-v 为挂载参数, :前为宿主机的文件 :后为容器中的数据文件*

docker run \
-it \
--name mysql_3306 \
--privileged \
--network wn_docker_net \
--ip 172.18.12.2 \
-p 3306:3306 \
-v  /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
-v  /usr/local/software/mysql/3306/data:/var/lib/mysql \
-v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql

可以看到创建且挂载成功
在这里插入图片描述


4、客户端连接测试

首先开放防火墙

firewall-cmd --add-ports=3306/tcp --permanent 
firewall-cmd --reload
firewall-cmd --list-ports 

![加粗样式](https://img-blog.csdnimg.cn/010c2dae411d4930ba649b50f8f4b883.png)
成功开放

在这里插入图片描述
同时也成功连接


4、客户端连接测试

开始配置master(把这段塞进配置文件中)

default_authentication_plugin=mysql_native_password

# Custom config should go here
!includedir /etc/mysql/conf.d/

server-id=200
log_bin=wnhz-master-logbin
relay_log=wnhz-mysql-relay-bin
binlog_format=row

在用vim编辑之前先用进入文件夹中,我这里已经进来了
在这里插入图片描述
然后开始编辑
在这里插入图片描述

5、创建slaver

从和主同理,作者这里偷个懒就先不写了,以后闲暇时间可以考虑写上

6、创建主从关系

create user 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;

在这里插入图片描述
然后要开始建立关系,先进入sql环境 然后输入这个语句(其中这里的“binlog.000002”和MASTER_LOG_POS=1779是通过这里查出来的)
在这里插入图片描述

change master to master_host='172.18.12.2', master_user='slave',master_password='123',MASTER_LOG_FILE='binlog.000002',MASTER_LOG_POS=1779;

再输入这个

start slave;

在这里插入图片描述
再查看

show slave status  \G;

在这里插入图片描述
这里出现两个yes即为配置成功

另一个从同理就不赘述了

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值