这里搭建的主从是最简单的单一主从复制(即一个Master和一个slave,没有任何的热机备份和多slave),该主从结构的基本拓扑图如下所示:

建立基本的主从复制可以总结为以下三个基本步骤:

  1. 配置master服务器
  2. 配置slave服务器
  3. 将slave连接到master

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

  本文所涉及的master和slave服务器均位于同一台单机上,使用不同的端口号区分,基本的环境为:Window 7 旗舰版 32位,MySQL的版本为5.6.21 。上一篇笔记(Windows环境下压缩版MySQL安装)中,已经介绍了压缩版mysql配置的基本过程,这里需要复制一份,并解压缩到另外一个目录(例如D:/Mysql_slave目录中)。为了区分master和slave,我们分别使用不同的端口号:master使用3306,slave使用3307端口号。

一、配置Master

  将服务器配置为Master,需要确保服务器有一个活动的二进制日志(binary log)和唯一的服务器ID(server-id,用于区分服务器).二进制日志中包含了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用于配置服务器ID,是mysql主从集群中的一个唯一区分号。所有的服务器都应该有自己的唯一ID,如果一个Slave连接到Master,但是和Master有相同的ID,则会产生Master和Slave ID相同的错误

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

(3)       log-bin字段给出了二进制日志所产生的所有文件的基本名,二进制文件可以包含多个文件,如下图所示:

(4)       log-bin-index.这其实是指定了一个索引文件(纯文本,内容为文件列表),该索引文件中包含所有二进制文件的列表。如果没有为log-bin-index设置默认值,则会使用机器的hostname产生log-bin-index文件,这样,在服务器的hostname改变后,可能会出现无法找到索引文件,从而认为二进制文件列表为空,导致无法正确的生成二进制bin-log。所以,推荐应该使用机器无关的名字作为bin-log-index的文件名.

  配置完ini文件之后,需要从命令行启动mysqld服务,进入master的bin目录(D:.Mysql/bin)并执行下述命令(如果之前配置过mysql,执行之前请关闭已经启动的mysql服务 net stop mysql):

mysqld –-console

如果启动成功,cmd窗口会出现如下类似的内容(红色部分是关键):

  这时master服务器已经启动了.将该cmd窗口最小化不用管它。新开一个cmd窗口,连接到master(mysql –u root -pxxx),通过show master status可以查看master的状态。

  Slave连接Master时,会启动一个标准的客户端去连接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的过程基本相同,不同的是,需要配置一个不同的端口号,需要一个不同的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使用的端口号,3306

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

(4)       该账号的密码。

在配置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主从已经搭建起来了。我们接着做一些简单的测试,看看复制是否正常。测试步骤如下:

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;

日志比较长,这里只截取了前两条:

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

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

参考文献:

  1. 《高可用Mysql》
  2. http://www.cnblogs.com/zhangjun516/archive/2013/03/18/2965604.html
  3. http://blog.itpub.net/7607759/viewspace-719707/

《高可用MySQL》2 – 单机版MySQL主从配置的更多相关文章

  1. Mycat高可用解决方案一(mysql安装)

    Mycat高可用解决方案一(mysql安装) Mycat关键特性 关键特性 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 ...

  2. Docker安装mysql镜像并进行主从配置

    Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ...

  3. MongoDB高可用集群搭建(主从、分片、路由、安全验证)

    目录 一.环境准备 1.部署图 2.模块介绍 3.服务器准备 二.环境变量 1.准备三台集群 2.安装解压 3.配置环境变量 三.集群搭建 1.新建配置目录 2.修改配置文件 3.分发其他节点 4.批 ...

  4. Hadoop 高可用(HA)的自动容灾配置

    参考链接 Hadoop 完全分布式安装 ZooKeeper 集群的安装部署 0. 说明 在 Hadoop 完全分布式安装 & ZooKeeper 集群的安装部署的基础之上进行 Hadoop 高 ...

  5. MySQL高可用之组复制技术(3):配置多主模型的组复制

    MySQL组复制系列文章: MySQL组复制大纲 MySQL组复制(1):组复制技术简介 MySQL组复制(2):配置单主模型的组复制 MySQL组复制(3):配置多主模型的组复制 MySQL组复制( ...

  6. mysql高可用之LVS + KEEPALIVE + MYSQL

    1.架构图 注意 (一)   Mysql需要把bind-address的配置去掉,否则无法实现虚拟ip访问 (二)   关闭所有linux防火墙:/sbin/iptables –F(可能没用) (三) ...

  7. mysql高可用之DRBD + HEARTBEAT + MYSQL

    1. 架构 Mysql: master<=slave 10.24.6.4:3306<=10.24.6.6:3306 VIP: 10.24.6.20 必须使得VIP和mysql处于同一网段, ...

  8. CentOS Mysql 5.1.73 主从配置

    ---------------------------------------------- 1 修改my.cnf ------------------------------------------ ...

  9. mysql 安装及卸载 主从配置

    1.查询rpm -qa | grep mysql* 组件 出现类似安装包 mysql-server-5.1.71-1.el6.x86_64 mysql-libs-5.1.71-1.el6.x86_64 ...

  10. MYSQL在centos上主从配置

    主从配置理论传送门:http://blog.csdn.net/hguisu/article/details/7325124 具体配置方案: 一:MYSQL主从配置   1.1 部署环境 主(maste ...

随机推荐

  1. iOS---NSAutoreleasePool自动释放原理及详解

    前言:当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池.它仍然是个正当的对象,因此自动释放池 定义的作用域内的其它对象可以向它发送消息.当程序 ...

  2. js 优化

    一.for循环的优化 <!doctype html> <html lang="en"> <head> <meta charset=&quo ...

  3. jQuery事件流的顺序

    <div id="aaron"> <div id='test'> <ul> <p>点击p被委托,ul被阻止了,因为内部重写了事件对象 ...

  4. mongodb-$type、limit、skip、sort方法、索引、聚合

    一.$type操作符 $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1   String 2 ...

  5. 深入理解CSS溢出overflow

    × 目录 [1]定义 [2]属性 [3]失效[4]应用 前面的话 当一个元素固定为某个特定大小,但内容在元素中放不下.此时就可以利用overflow属性来控制这种情况 定义 overflow溢出 值: ...

  6. Android开发之注册登录

    昨天给大家介绍了一下关于Android端向服务器端发送数据的方法,不过貌似有一点瑕疵,今天经过调试已经解决,在这里给大家介绍一下 貌似Android4.0以后版本的对于网络权限要求变得严格,导致昨天编 ...

  7. Cwinux源码解析系列

      Cwinux源码解析系列

  8. 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新

    今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...

  9. C/C++定义全局变量/常量几种方法的区别

    在讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块):    在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ER ...

  10. Sybase 数据库新增用户,赋权

    Sybase数据库, 需求:新增用户user1,赋予对原数据库中表t_jingyu的查询权限 数据库原用户登陆 isql -U用户 -P密码 -S服务名 sp_addlogin 'user1','us ...