注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

MySQL:主从复制(Replication)搭建  

2014-12-06 14:15:43|  分类: MySQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        今天阅读了 MySQL 复制相关的内容,MySQL 的复制比较灵活,手册上介绍说可以实现基于实例级,数据库级,表级别的复制, 今天实验的是实例级主从复制。

一 环境信息
主库  192.168.2.37/3306
备库  192.168.2.38/3306
版本  5.6.20
备注: 主备节点 mysql 安装略。


二 主节点配置
--修改主库 /etc/my.cnf 增加以下参数

server_id = 1
log_bin = "/database/mysql/data/binlog/bin-log"


--重启 MySQL

[root@db1 ~]# service mysql restart


--创建复制用户

root@localhost:(none)>create user 'rep1'@'192.168.2.%' identified by 'rep1abcd1243d';
Query OK, 0 rows affected (0.02 sec)

root@localhost:(none)>GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'192.168.2.%';
Query OK, 0 rows affected (0.01 sec)

备注:  创建新用户并赋予  REPLICATION SLAVE 权限,这个用户用来读取主节点的 binary log.

--开启 session1: 锁定数据库所有表

root@localhost:(none)>flush tables with read lock;
Query OK, 0 rows affected (0.08 sec)


--开启 sesson2: 查看 binary 信息

root@localhost:(none)>show master status;
+----------------+----------+--------------+------------------+-------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| bin-log.000023 |      552 |              |                  |                   |
+----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

备注:记住这些信息,备节点配置时要用到。

--复制数据并传到从库对应目录
这里使用 tar 将目录 /database/mysql/data 拷贝到备节点。

--主节点解锁

root@localhost:(none)>unlock tables;
Query OK, 0 rows affected (0.00 sec)



三 从节点配置
--修改备库 /etc/my.cnf 增加以下参数

server_id = 2


--重启 MySQL

[root@db2 ~]# service mysql restart


--设置主节点信息

CHANGE MASTER TO
   MASTER_HOST='192.168.2.37',
   MASTER_PORT=3306,
   MASTER_USER='rep1',
   MASTER_PASSWORD='rep1abcd1243d',
   MASTER_LOG_FILE='bin-log.000023',
   MASTER_LOG_POS=552;

    

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)


--发现日志报错

2014-09-15 15:23:08 8699 [Note] Slave I/O thread: connected to master 'rep1@192.168.2.37:3306',replication started in log 'bin-log.000023' at position 552
2014-09-15 15:23:08 8699 [ERROR] Slave I/O: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593
2014-09-15 15:23:08 8699 [Note] Slave I/O thread exiting, read up to log 'bin-log.000023', position 552

备注:这是因为在复制主节点数据目录 /database/mysql/data 时,将文件 auto.cnf 也复制过来了,这时只需要修改备节点的 auto.cnf 文件,参照格式修改 server-uuid 即可。

--修改后的  auto.cnf

[mysql@db2 data]$ cat auto.cnf
[auto]
server-uuid=0c130d48-22bb-11e4-aaaa-000c2986ac80

备注:修改后重启数据库,日志没有出现异常信息。

--查看备节点详细信息

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.2.37
                  Master_User: rep1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: bin-log.000023
          Read_Master_Log_Pos: 552
               Relay_Log_File: db2-relay-bin.000003
                Relay_Log_Pos: 281
        Relay_Master_Log_File: bin-log.000023
             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: 552
              Relay_Log_Space: 452
              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
                  Master_UUID: 0c130d47-22bb-11e4-aaaa-000c2986ac80
             Master_Info_File: /database/mysql/data/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
1 row in set (0.01 sec)



四 验证
--主节点创建表

root@localhost:francs>show tables;
+------------------+
| Tables_in_francs |
+------------------+
| test_1           |
| test_2           |
| test_3           |
| test_4           |
+------------------+
root@localhost:francs>create table test_5 as select * from test_1;
Query OK, 10001 rows affected (0.38 sec)
Records: 10001  Duplicates: 0  Warnings: 0


--备节点验证

mysql> show tables;
+------------------+
| Tables_in_francs |
+------------------+
| test_1           |
| test_2           |
| test_3           |
| test_4           |
| test_5           |
+------------------+
5 rows in set (0.00 sec)

备注: 验证成功。

五 参考

六 相关链接
  评论这张
 
阅读(855)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016