mysql 的AB角复制
博客专区 > wzl_up 的博客 > 博客详情
mysql 的AB角复制
wzl_up 发表于1年前
mysql 的AB角复制
  • 发表于 1年前
  • 阅读 3
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

1    原理

    当主库有更新操作的时候,主库会把更新操作的sql,写如到二进制日志文件当中,并维护一个二进制日志文件的索引文件,以便日志文件轮询
    在从库启动异步复制的时候,从库会开启两个I/O线程
    其中一个用于连接主库
    另外一个用于传输sql

注意:
    必须打开二进制日志文件
    从库必须知道主库是从那一给位置偏移量开始的
    主库和从库的数据库名称可以不一样,推荐使用一样
    主库和从库的mysql版本必须一致

2·设置主从服务器

    主服务器 192.168.125.128

    从服务器    192.168.125.129

    2.1 设置主服务器

            vim /etc/my.cnf 中添加一下两条记录并重启
                 log-bin=mysql-bin
                 server_id=1

            查看日志名称和point:

            show master status;

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      181 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 

        在mysql主服务器中建一个用户并授权:

       grant replication slave on *.* to repl@'%' identified by 'repl'

    2.2    设置mysql从服务器

            vim /etc/my.cnf 添加一下两条

                log-bin=mysql-bin
                server_id=2

            在mysql中运行help change master to

2.3    验证

        在从服务器设置好之后

            开启主从服务:start slave;

            查看当前设置状态:show slave status\G;

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.125.128
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 10
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 181
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000004
             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: 181
              Relay_Log_Space: 407
              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: 
1 row in set (0.00 sec)

ERROR: 
No query specified

上面两条Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

都成功就说明设置成功。

注意:如果显示Slave_IO_Running: No 请检查主从服务器各自的selinux 和iptable 是否都已经关闭

在主服务器上做一个操作,比如建库,建表,再在从服务器上检查是否已经复制到从服务器上

主服务器新建库:

mysql> create database base20161110;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| base1              |
| base20161110       |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)

从服务器已经自动复制了刚才主服务器新建的数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| base20161110       |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.01 sec)

主从服务器AB角 设置成功

标签: AB角
共有 人打赏支持
粉丝 21
博文 118
码字总数 120291
×
wzl_up
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: