千家信息网

Windows下MySQL的主从复制

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,首先需要的环境:我在本地安装了两个MySQL,分别是5.7和5.5的版本:安装结束后如下:1、复制原理:原理:在MySQL中有一种叫做bin的二进制日志,这个日志文件里面记录了关于此数据库的所有修改的
千家信息网最后更新 2024年11月23日Windows下MySQL的主从复制

首先需要的环境:我在本地安装了两个MySQL,分别是5.7和5.5的版本:安装结束后如下:

1、复制原理:
原理:
在MySQL中有一种叫做bin的二进制日志,这个日志文件里面记录了关于此数据库的所有修改的sql语句(包括insert,update,delete,grant等等)。而主从复制就是利用这个二进制bin日志,在主库上创建一个用户,从数据库通过此用户去读取bin日志,然后再在从数据库上再执行一次。

2、主数据库配置文件修改:
我在改配置文件过程中碰到的一个问题就是:我的主数据库选择5.7版本,但是并没有my.ini这个文件,只有my-default.ini.如果你是安装在C盘,你还可能发现一个路径:C:\programData\mysql\my.ini,改这个就好了。

还有其他几个值可以配置:
binlog-do-db=su #要同步的数据库名称,多个写多行,如果没配置,则所有都同步;
binlog_format=mixed #日志混合

3、主数据库启动过程:
cmd以管理员方式运行,然后输入命令:net start MySQL57(安装时自己取的名字),如下:

4、连接主数据库:
启动成功后,连接数据库命令:mysql -u root -p,如下:

这个命令如果环境变量没有配置的话,这个命令是没法用的。

5、为从数据库创建用户:
先可以看一下二进制日志文件的状态,命令为:show global variables like '%log_bin%';(注意后面有分号),结果如下:

为从服务器创建用户,即授权给从数据库,命令为:grant replication slave on . to 'myslave'@'%' identified by '123456';
%表示除了本地可以访问,还可以远程访问,localhost则只能本地访问。
replication slave表示只授予slave的权限,也可以加select,insert等等。
授权以后查看主数据库状态,如下:

记录下 File及 Position 的值,在后面进行从服务器操作的时候需要用到。

6、从数据库配置:

也可以加其他的:
relay_log = mysql-relay-bin // 中继日志
log_slave_updates = 1 // slave将复制事件写进自己的二进制日志

7、从数据库执行过程:
首先启动从数据库,然后执行同步SQL语句,如下:

然后启动Slave同步进程,主从同步检查,如下:

当这两个值都为YES的时候,表示状态正常。
现在出现的状态为不正常的,提示的原因如下:

说是server-id相同,但是我配置的分别为1和2。则解决办法可以试试以下:
a、MySQL的一个配置文件auto.cnf里面记录了mysql服务器的uuid,server_uuid:服务器身份ID。在第一次启动Mysql时,会自动生成一个server_uuid并写入到数据目录下auto.cnf文件里,改一下这个值试试看。
b、找一找是不是存在其他的my.ini文件,找到后删除;
c、通过命令来设置server-id=2:
mysql> set global server_id=2; #此处的数值和my.cnf里设置的一样就行
mysql> slave start;

修改成功后进行测试:

然后从数据库的这张表会自动加入这条数据,这样就算完成了数据库的主从复制了。

最后来介绍一下MySQL主从复制的过程:
a、主节点启用这个bin二进制日志(log-bin);
b、从节点开启一个线程(I/O Thread),连接主节点上的用户,读取这个日志文件中的事件;
c、主节点启动一个线程(dump Thread),检查自己二进制日志中的事件,跟对方请求的位置对比,如果不带请求位置参数,则主节点就会从第一个日志文件中的第一个事件一个一个发送给从节点;
d、从节点接收到主节点发送过来的数据把它放置到中继日志(Relay log)文件中。并记录该次请求到主节点的具哪个二进制日志文件的哪个位置;
e、从节点启动另外一个线程(sql Thread ),把replaylog中的事件读取出来,并在本地再执行一次。
解释:
I/O Thread:从Master请求二进制日志事件,并保存于中继日志中;
Sql Thread:从中继日志中读取日志事件,在本地完成重放;
Dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向从节点发送二进制事件;
注意:如果从节点需要作为其他节点的主节点时,需要开启二进制日志文件的(log-bin)。这种情况叫做级联复制。如果只是作为从节点,则不需要创建二进制文件。

数据 日志 数据库 节点 文件 二进制 事件 配置 命令 用户 同步 主从 服务器 状态 线程 过程 服务 位置 中继 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库创建学生表外键是什么 sql2008修复数据库 mdns服务器搭建步骤 计算机职业网络技术考试 网络安全三管三必须原则指的是 网络安全第三章第二节31条 逃离塔科夫只有三个服务器怎么办 隋氏族谱数据库 ie代理服务器自动配置代码 网络安全形势的分析和对策 山西gps时钟服务器虚拟主机 服务器里面的本地安全策略 服务器资源管理器可以测试 网络安全法 关键要求 湖州正规软件开发哪个好 移动通信网络技术的用户运营 网络安全和新发展理念 仓库管理系统 数据库 宿豫区自动化网络技术供应商家 邵阳市公安局网络安全管理 达梦数据库转换工具 重庆南岸区网络安全培训 网络安全常见的问题有哪些 1万并发 服务器配置 赏金制软件开发 数据库原理与应用刘海征 我的世界天骐服务器小游戏 数据库安装成功在哪打开 软件开发工具2013 软件开发基础实验指导答案
0