《高可用MySQL》2 – 单机版MySQL主从配置「建议收藏」

《高可用MySQL》2 – 单机版MySQL主从配置

大家好,又见面了,我是全栈君。

这里搭建的主从是最简单的单一主从复制(即一个Master和一个slave。没有不论什么的热机备份和多slave),该主从结构的基本拓扑图例如以下所看到的:

《高可用MySQL》2 – 单机版MySQL主从配置「建议收藏」

建立主要的主从复制能够总结为下面三个基本步骤:

  1. 配置masterserver
  2. 配置slaveserver
  3. 将slave连接到master

在配置完毕之后。我们会做一个简单的測试。測试复制是否正常。

  本文所涉及的master和slaveserver均位于同一台单机上。使用不同的port号区分,主要的环境为:Window 7 旗舰版 32位。MySQL的版本号为5.6.21 。

上一篇笔记(Windows环境下压缩版MySQL安装)中,已经介绍了压缩版mysql配置的基本过程。这里须要复制一份,并解压缩到另外一个文件夹(比如D:/Mysql_slave文件夹中)。为了区分master和slave,我们分别使用不同的port号:master使用3306。slave使用3307port号。

一、配置Master

  将server配置为Master,须要确保server有一个活动的二进制日志(binary log)和唯一的serverID(server-id,用于区分server).二进制日志中包括了Master的全部改变。而且能够在Slave上运行。

配置master的my.ini文件:

打开master文件夹下的my.ini文件,在文件里加入例如以下内容:

server-id = 1
binlog-do-db = test
log-bin=master-bin
log-bin-index=master-bin.index

当中:

(1)       server-id=1用于配置serverID,是mysql主从集群中的一个唯一区分号。全部的server都应该有自己的唯一ID,假设一个Slave连接到Master。可是和Master有同样的ID,则会产生Master和Slave ID同样的错误

(2)       binlog-do-db :指定主从复制的数据库。

(3)       log-bin字段给出了二进制日志所产生的全部文件的基本名,二进制文件能够包括多个文件。例如以下图所看到的:

《高可用MySQL》2 – 单机版MySQL主从配置「建议收藏」

(4)       log-bin-index.这事实上是指定了一个索引文件(纯文本,内容为文件列表)。该索引文件里包括全部二进制文件的列表

假设没有为log-bin-index设置默认值。则会使用机器的hostname产生log-bin-index文件。这样。在server的hostname改变后。可能会出现无法找到索引文件,从而觉得二进制文件列表为空。导致无法正确的生成二进制bin-log。所以,推荐应该使用机器无关的名字作为bin-log-index的文件名称.

《高可用MySQL》2 – 单机版MySQL主从配置「建议收藏」

  配置完ini文件之后。须要从命令行启动mysqld服务,进入master的bin文件夹(D:.Mysql/bin)并运行下述命令(假设之前配置过mysql,运行之前请关闭已经启动的mysql服务net stop mysql):

mysqld --console

假设启动成功。cmd窗体会出现例如以下类似的内容(红色部分是关键):

《高可用MySQL》2 – 单机版MySQL主从配置「建议收藏」

  这时masterserver已经启动了.将该cmd窗体最小化不用管它。

新开一个cmd窗体,连接到master(mysql –u root -pxxx)。通过show master status能够查看master的状态。

  Slave连接Master时,会启动一个标准的client去连接Master,并请求Master将全部的修改转储给它。因此。在连接时。须要Master上有一个具有复制权限的用户。在master的控制台运行例如以下命令:

Create user reply_user;
Grant REPLICATION SLAVE On *.* to reply_user IDENTIFIED BY ‘xxxxxxxxx’;
Flush privileges;

  Replication slave权限并没有什么特别之处,仅仅是这个用户能够从Master上二进制文件的转储数据。全然能够给一个常规的用户赋予该权限,但不妨将复制Slave的用户和其它用户区分开来。这种话。假设想要禁止某些slave的链接,仅仅要删除该用户就能够了

二、配置Slave

  配置Slave的过程和配置Master的过程基本同样,不同的是,须要配置一个不同的port号,须要一个不同的server-id号。而且须要为Slave配置relay-log(中继日志)和relay-log-index(中继日志的索引文件)。打开Slave文件夹下的my.ini(D:/mysql_slave文件夹),加入例如以下内容:

复制代码
#mysql slave port
 port = 3307

 #slave server id
 server_id   = 2

 #replication database
 replicate-do-db=test

 #relay log file
 relay-log=slave-relay-bin

 #relay log index file
 relay-log-index=slave-relay-bin.index
复制代码

改动完Slave后。相同须要通过命令启动slave的mysqld:

d:
cd mysql_slave/bin
mysqld --console

如今尽管配置好了Master和Slave。可是Master和Slave之间没有不论什么的联系。这时假设在Slave的控制台运行:show slave status;会出现提示:it is not a slave

三、Slave连接到Master

将Slave连接到Master,须要知道Master的四个主要的信息:

(1)       主机名或者IP地址,因为这里都是单机,主机的IP为127.0.0.1

(2)       Master使用的port号。3306

(3)       Master上具有REPLICATION SLAVE权限的用户

(4)       该账号的password

在配置Master的时候已经创建了一个具有相关权限的用户。在Slave的控制台执行下面命令:

Change Master to
     Master_host=127.0.0.1’,
     Master_port=3306,
     Master_user=”reply_user”,
     Master_Password=”xxxx”;

运行完之后,能够通过start Slave命令启动Slave。

这时假设运行show slave status;会输出下面类似内容(注意标红部分):

《高可用MySQL》2 – 单机版MySQL主从配置「建议收藏」

如今,一个主要的mysql主从已经搭建起来了。我们接着做一些简单的測试,看看复制是否正常。測试过程例如以下:

1.  在Master上创建表:

复制代码
CREATE TABLE `web_user2` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL DEFAULT '',
  `creatime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
复制代码

2.  插入数据

Insert into web_user2 (`name`) values ('first'),('test'),('showb'),('blood');
Select * from `web_user2`;

3.  进入Slave查看是否同步正常

Show tables;
Select * from web_user;

4.  在master的控制台上查看复制的事件-Binlog events

Flush logs;
Show binlog events;

日志比較长,这里仅仅截取了前两条:

《高可用MySQL》2 – 单机版MySQL主从配置「建议收藏」

从binlog的内容来看。复制已经配置成功了。

下一步。将会继续探索二进制日志的相关东西。

參考文献:

  1. 《高可用Mysql》
  2. http://www.cnblogs.com/zhangjun516/archive/2013/03/18/2965604.html
  3. http://blog.itpub.net/7607759/viewspace-719707/
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115572.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 登录织梦后台提示用户名不存在的解决方法介绍

    登录织梦后台提示用户名不存在的解决方法介绍

  • sublime怎么运行php(sublime运行python)

    前言:我用的是phpstudy安装包,安装php环境,因为是个人PC也没什么敏感文件,所以用phpstudy安装环境是可以的。phpstudy存在安全问题,之前也讨论过了。我用的是sublime编辑器,美观,配置环境稍微有点烦。配置步骤下载、安装phpstudy官网安装时注意不要选择中文安装目录,否则报错,Apache无法启动。安装后找到目录php.exe的所在目录,复制这个路

  • 丢失的手机关机了怎么找回_maven clean报错

    丢失的手机关机了怎么找回_maven clean报错最近比较忙,忙的都没时间更新博客了.所以今天要一口气写两篇.WebPart中DropDownList丢失状态的解决方案,十分头痛.现象就是DropDownList老是为空.当时有些晕,上网搜了好久,要么没答案,要么含糊其词。当有些网友说用HiddenField保存状态给我一些启发,于是我朝HiddenField的方向去想。原理:HiddenField的是可以直接反映…

  • 手眼标定 matlab源码,经典手眼标定算法matlab

    手眼标定 matlab源码,经典手眼标定算法matlab【实例简介】经典手眼标定算法matlab代码,程序作者为ChristianWengert。工具箱包含的主要算法有Tsai-Lenz算法、NAVY算法(Park)、INRIA算法(Horaud)以及对偶四元数手眼定标算法【实例截图】【核心代码】1cdffffa-57b3-468c-8073-d4f45202c11a└──calib_toolbox_addon├──addDistortion…

  • 怎么用谷歌学术检索下载外文文献呢_谷歌中的外文文献如何引用呢

    怎么用谷歌学术检索下载外文文献呢_谷歌中的外文文献如何引用呢谷歌学术检索可以输入文献的篇名、关键词、参考文献、ISBN/ISSN、DOI等检索条件来检索,记得需要输入文字的都要用英文。一、下面举例演示下使用谷歌学术的过程,我用的是文献党下载器访问的谷歌学术,首先进入文献党下载器资源库双击“谷歌学术”名称,进入谷歌学术首页:

    2022年10月11日
  • datax(24):远程调试datax

    datax(24):远程调试datax一、datax开启远程debug1、环境本地:win10,idea专业版2020.3,datax3.0远程:CentOS6.5,datax3.02、效果3、步骤3.1远程开启debug/apps/datax/bin/datax.py/apps/datax/job/job.json-d即在后面添加-d即可,默认端口为9999,也可以自行修改datax.py文件第35行REMOTE_DEBUG_CONFIG=”-Xdebug-Xrunjdwp:transport=dt

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号