zoukankan      html  css  js  c++  java
  • 《高可用MySQL》2 – 单机版MySQL主从配置

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

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

    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字段给出了二进制日志所产生的全部文件的基本名,二进制文件能够包括多个文件。例如以下图所看到的:

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

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

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

    mysqld --console

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

      这时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主从已经搭建起来了。我们接着做一些简单的測试,看看复制是否正常。測试过程例如以下:

    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/
  • 相关阅读:
    sabaki and leelazero
    apply current folder view to all folders
    string operation in powershell
    wirte function in powershell
    add environment path to powershell
    Module in powershell
    sql prompt
    vmware中鼠标在部分区域不能使用
    调整多个控件的dock的顺序
    行为型模型 策略模式
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5323800.html
Copyright © 2011-2022 走看看