Mysql主从复制简单配置

最近在学习MySQL的主从复制,想将其应用到工作中的项目上。因为也是刚开始接触,所以理解的不是很深入,只能先分享一下如何做一个简单配置。

刚开始我们先配置一个主服务器和一个从服务器的情况,在使用一段时间以后再加入一个从服务器。

主服务器(master)的配置

首先我们进行主服务器的配置。

1. 打开MySQL的配置文件my.cnf 在配置文件中配置如下两个选项

[mysqld]

log-bin = mysql-bin

server-id = 1//注意这里的server-id,在一组主从服务器中,每个服务器(不管是主服务器还是从服务器)都有一个id,并且此id是唯一的,个服务器之间不能相同。如果不配置此项,那该主服务器的server-id默认为0,如此则不允许任何从服务器连接

2. 在主服务器中创建一个用户用于从服务器的连接

mysql> CREATE USER ‘repluser’@’%’ IDENTIFIED BY ‘repluser’

//第一个repluser 表示账户名 第二个repluser表示密码,当然这些可以自己定义。%表示接受来自于任何主机的连接

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repluser’@’%’

3. 获得主服务器的binlog信息

首先刷新所有表和块儿的写入状态

mysql> FLUSH TABLES WITH READ LOCK

然后显示master的binlog状态

mysql>SHOW MASTER STATUS

对于新服务器来说显示结果如下

+------------------+-------------+-----------------+------------------+------------------+

| File                            | Position | Binlog_Do_DB | Binlog_Ignore_DB    |

+------------------+-------------+-----------------+------------------+------------------+

| mysql-bin.000001  |   13         |                             |                                       |

+------------------+-------------+-----------------+------------------+------------------+

这里需要记住 file 和position两个字段的值,在配置从服务器的时候需要用到这两个选项

4. 释放read 锁

mysql> UNLOCK TABLES

到此主服务器的配置就算是完成了,真的是挺简单的。下面配置从服务器

 从服务器(slave)的配置

在配置完主服务器以后下面我们开始配置从服务器。

1. 首先应该在配置文件my.cnf中为从服务器指定一个server-id并且关闭从服务器的binlog日志

[mysqld]

#log-bin = mysql-bin

server-id = 2

2. 开启从服务器

mysql>START SLAVE

3. 这一步是最主要的,我们需要告诉从服务器必须的连接主服务器的信息,这样才能和主服务器建立通信。

mysql> CHANGE MASTER TO

           ->    MASTER_HOST = ‘主服务的地址’,

           ->    MASTER_USER = ‘repluser’,   //这是上面新建的用户

           ->    MASTER_PASSWORD = ‘preluser’,

           ->    MASTER_LOG_FILE = ‘mysql-bin.000001’, //这是在上述第三步需要记住的file的值

           ->    MASTER_LOG_POS = 13;  //这是在上述第三步需要记住的position的值

4. 然后查看从服务器的状态

mysql> SHOW SLAVE STATUS\G

显示的结果如下

Slave_IO_State:  Waiting for master to send event //等待主服务器的操作

       Master_Host:  192.168.144.128   //这是我主服务器的地址

       Master_User:  repuser  //用户名

        Master_Port:  3306

      Connect_Retry: 60

     Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 13

       Relay_Log_File: localhost-relay-bin.000007

       Relay_Log_Pos: 23

Relay_Master_Log_File: mysql-bin.000001

     Slave_IO_Running: Yes  

    Slave_SQL_Running: Yes

     Replicate_Do_DB:

   Replicate_Ignore_DB:

    Replicate_Do_Table:

 Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

            Last_Errno: 0

            Last_Error:

          Skip_Counter: 0

  Exec_Master_Log_Pos: 336

      Relay_Log_Space: 642

        Until_Condition: None

         Until_Log_File:

         Until_Log_Pos: 0

    Master_SSL_Allowed: No

    Master_SSL_CA_File:

   Master_SSL_CA_Path:

      Master_SSL_Cert:

     Master_SSL_Cipher:

       Master_SSL_Key:

 Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error:

               Last_SQL_Errno: 0

               Last_SQL_Error:

  Replicate_Ignore_Server_Ids:

         Master_Server_Id: 1   //主服务器的id

出现以上信息说明从服务器配置成功。

当然我们一开始就可以按照上述步骤配置多个从服务器,只是server-id不同。

主服务器和从服务器都配置完成以后我们可以做一个测试,在主服务器中的test数据库中创建一个表,并插入一些数据

mysql> use test;

mysql> create table repl(id int(5) not null primary key auto_increment,name varchar(100));

mysql> insert into repl(name)values(‘test1’);

mysql> insert into repl(name)values(‘test2’);

然后在从服务器中查看数据是否同步,没特殊情况的话数据是同步过来的。

在当前的主从复制集合中新加一台从服务器

对于已经存在的从服务器我们称之为 oldslave(其ip地址为192.168.144.131) ,新添加的称之为 newslave (其ip地址为192.168.144.132)。

1. 首先关闭已经存在的从服务器 oldslave

mysql> mysqladmin shutdown

2. 将oldslave的data目录拷贝到 newslave中

mysql]# tar zcvf data.tar.gz data

mysql]# scp data.tar.gz  root@192.168.144.132:mysql安装目录

3. 进入newslave服务器中

mysql]# tar –zxvf data.tar.gz  //解压传输过来的data包,解压完以后newslave中的data目录就和oldslave中的目录合并,如果oldslave中的data目录中没有master.info和relay-log.info两个文件的话那还需要将这两个文件拷贝过来

4. 修改newslave的server-id 并且关闭binlog 日志

[mysqld]

#log-bin = mysql-bin

server-id = 3

5. 在newslave上开启mysql服务,并且开启slave机制

mysql]# service mysqld start

mysql> START SLAVE;

这样如果没有特殊情况的话就成功的加入了一台从服务器。

以上所有只是一个简单的主从复制集合的配置,想更深入的了解还需参考官方的文档

 

本文转载自:迹忆客(https://www.jiyik.com)

以上是 Mysql主从复制简单配置 的全部内容, 来源链接: utcz.com/z/290022.html

回到顶部