461-MySQL(主从复制实践)

主从复制配置命令

条件:master和slave机器的信息
master(centos7):192.168.131.129
在这里插入图片描述
slave(win10):192.168.0.6
保证master和slave之间的网络互通,并且保证3306端口是开放的。
在这里插入图片描述
检查一下网络互通:
在这里插入图片描述
在这里插入图片描述
网络是互通的!!!
查看防火墙:
在这里插入图片描述
开放3306端口
在这里插入图片描述

master配置

1、开启二进制日志 配置log_bin和全局唯一的server-id(和从库区分开来)。(如果是新配置,一定要重启MySQL服务)
在这里插入图片描述

2、创建一个用于主从库通信用的账号
用%表示任意的IP,谁都可以通过这账号密码登录。为了权限的收缩,最小化,固定从库在哪台机器上,只能从这台机器的IP进行登录。
为什么下面用的IP不是从库的机器的IP?
因为我们的特殊环境造成的,linux是在Windows下装的虚拟机,虚拟机是net模式,如果是桥接模式就无所谓,直接用IP就可以了。
在这里插入图片描述
这个net模式下的工作方式是:Windows上的IP发送消息包到网关上(192.168.131.1),然后这个网关再转发到linux上。
在这里插入图片描述
重新创建一个用户,专门用来从库连接主库进行身份验证,验证成功了后,通过这个用户的身份进行binlog的主从同步。(密码有强度的验证,简单的密码通过不了)

第二条语句的星号点星号是任意库的任意表的意思
开启主从复制的权限,从库可以通过这个账户和密码,从这个IP来请求访问这个主库上的任意库,同步这个主库的任意库里的任意表。

查看错误日志:
在这里插入图片描述
在这里插入图片描述

3、获取binlog的日志文件名和position
mysql> show master status;
(看当前二进制日志的名字,主库的更新是往哪个二进制日志写的,以及现在的位置,从这个位置往后开始进行主从同步)
在这里插入图片描述

slave配置

Windows下mysql的数据在:
在这里插入图片描述server-id默认的是1,我们要改为2,因为不能重复,要区分开。更改配置,要重启服务。
在这里插入图片描述
更改配置,要重启服务。
在这里插入图片描述

1、配置全局唯一的server-id(涉及修改配置文件,需要重启mysql57服务)
2、使用master创建的账户读取binlog同步数据(stop slave;start slave)

因为从库IO线程要主动去连接主库,告诉主库master的信息,连接主库用的用户。从这个二进制文件的哪个位置开始主从复制。
在这里插入图片描述

3、START SLAVE (开启从库的服务,开启I/O线程,sql线程,relaylog)
通过show slave status命令查看主从复制状态。
show processlist查看master和salve相关线程的运行状态。

在这里插入图片描述

主从复制实践

我们用linux上的mysql server 作为主库,Windows上的mysql server作为从库
linux:
通过ifconfig 看主库的IP地址

在这里插入图片描述
Windows :
cmd打开
输入命令ipconfig
在这里插入图片描述
网络互通检测
在这里插入图片描述
在这里插入图片描述
网络是互通的。
保证3306端口是开放的。
开启centos防火墙3306端口
进入root用户
centos7防火墙配置不再是iptables了,配置如下:
在这里插入图片描述
可以在win下测试是否通过mysql命令能够成功连接centos的mysqld服务。systemctl start firewalld.service 手动的启动
systemctl stop firewalld.service 手动的停止
systemctl enable firewalld.service 真真正正的启动,重启也是生效的
systemctl disable firewalld.service 真真正正的关闭, 重启也是生效的
systemctl status firewalld.service 查看状态

在这里插入图片描述
master配置:
开启二进制日志
在这里插入图片描述
在这里插入图片描述
创建一个用于主从库通信用的账号
从库连接主库,进行身份验证。

获取binlog的日志文件名和position
主从同步的时候,都是基于binlog,从binlog的哪个位置开始进行主从复制。
在这里插入图片描述
从库配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个表示已经写完了。(落后于主库多少,因为是主库先产生操作,然后同步操作到从库)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个是表示成功了。已经连接成功了。等待主库发送event。
可以演示主从复制的场景。

配置中出现的问题

1号问题
在这里插入图片描述
1045:权限不正确。
连接connection错误。先考虑网络通不通。
1、ping一下,看看网络是否互通。
然后再检查从库里面的配置信息是否正确,是否在主库上带的用户名密码。
在这里插入图片描述

2、看主库所在机器的3306端口是否正常
在这里插入图片描述
对端口有限制吗?就是防火墙嘛。

3、查看主库的错误日志
在这里插入图片描述
在这里插入图片描述
这个ip就是net网关的ip,直接配置的时候写到这就可以了。

如果我创建主库时的IP写错了咋办?
在这里插入图片描述
我们 use mysql;
里面有很多表
所有的用户管理都在user里面。
在这里插入图片描述
然后后面的语句也要重新执行一下。
在这里插入图片描述
这个也要重新执行一下
在这里插入图片描述
2号问题
在这里插入图片描述
1032的错误
position不正确
在这里插入图片描述

检查一下,如果不正确,重新配置
在这里插入图片描述
重新配置从库记得先stop,配置完了之后,然后start
在这里插入图片描述
在这里插入图片描述

3号问题
在这里插入图片描述
从库没有mytest
主库已经有mytest database,然后配置了主从互通,相当于slave没有mytest database。然后直接drop database mytest,会写到binlog里面,然后在通过线程发送到从库,写到从库的中继日志,然后从库的sql线程从中继日志里把drop database捞上来了,然后在从库执行这个SQL,从库根本就没有mytest这个库,就出现错误了。
在这里插入图片描述
一般我们不会去做这样的操作的,一般都是主从配置以后,主库从数据开始增量进行同步,不会同步以后,一开始就删主库的东西,如果真的出现这样的问题,随时可以在从库 show slave datas,来查看主从同步的状态,有什么错误,解决什么错误。

要么在从库stop一下,把position重新设置一下,然后start。
相当于重新开启主从同步,从最新的位置,这个drop database不需要在从库上同步。

要么就是stop,从库上关闭,然后跳过5个错误,然后重启start。
本身是不会跳过的。相当于是异常操作。
在这里插入图片描述
我们一般是不会一开始同步就删数据的,因为还没有同步过数据,所有的增删改查都是从主从复制开启时,先做数据的增量,然后做数据的增删改查

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值