zoukankan      html  css  js  c++  java
  • MySQL系列详解九:MySQL级联复制演示-技术流ken

    前言

    级联复制就是master服务器,只给后端一台slave服务器同步数据,然后这个slave服务器在向后端的所有slave服务器同步数据,这样就可以降低master服务器的写压力,和复制数据的网络IO。

    实现级联复制演示

    准备

    主服务器IP:10.220.5.137

    从1服务器IP:10.220.5.138

    从2服务器IP:10.220.5.139

    配置主服务器

    开启二进制日志

    mysql> show global variables like '%log_bin%';
    +---------------------------------+--------------------------------------------+
    | Variable_name                   | Value                                      |
    +---------------------------------+--------------------------------------------+
    | log_bin                         | ON                                         |
    | log_bin_basename                | /data/mysql/mysql3306/logs/mysql-bin       |
    | log_bin_index                   | /data/mysql/mysql3306/logs/mysql-bin.index |
    | log_bin_trust_function_creators | ON                                         |
    | log_bin_use_v1_row_events       | OFF                                        |
    +---------------------------------+--------------------------------------------+
    5 rows in set (0.01 sec)

    创建用于复制的用户

    mysql> grant replication slave on *.* to 'ken'@'%' identified by 'xx';

    查看主服务器端状态

    需要查看现在主服务器端在哪个日志文件写入日志以及现在的位置

    mysql> show master statusG
    *************************** 1. row ***************************
                 File: mysql-bin.000012
             Position: 2057
         Binlog_Do_DB: 
     Binlog_Ignore_DB: 
    Executed_Gtid_Set: 987ac782-d7b8-11e8-a462-000c292218ec:1-13,
    c01b1811-d7b3-11e8-8698-000c29492f7b:3-7
    1 row in set (0.00 sec)

    配置从1服务器

    与主服务器端建立连接

    MySQL [(none)]> change master to master_host='10.220.5.137',master_user='ken',master_passowrd='xx',master_log_file='mysql-bin.000012',master_log_pos=2057;

    启动slave

    MySQL [(none)]> start slave;

    查看连接状态

    要确认IO以及SQL线程成功开启

    ySQL [(none)]> show slave statusG
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.220.5.137
                      Master_User: ken
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000012
              Read_Master_Log_Pos: 2057
                   Relay_Log_File: relay-bin.000012
                    Relay_Log_Pos: 1586
            Relay_Master_Log_File: mysql-bin.000012
                 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: 2057
                  Relay_Log_Space: 1834
                  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: 1003306
                      Master_UUID: 987ac782-d7b8-11e8-a462-000c292218ec
                 Master_Info_File: /data/mysql/mysql3306/data/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 987ac782-d7b8-11e8-a462-000c292218ec:8-13
                Executed_Gtid_Set: 987ac782-d7b8-11e8-a462-000c292218ec:1-13,
    c01b1811-d7b3-11e8-8698-000c29492f7b:1-7
                    Auto_Position: 0
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
    1 row in set (0.00 sec)

    查看从1服务器端状态

    需要查看现在从1服务器端在哪个日志文件写入日志以及现在的位置

    mysql> show master statusG
    *************************** 1. row ***************************
                 File: mysql-bin.000007
             Position: 2057
         Binlog_Do_DB: 
     Binlog_Ignore_DB: 
    Executed_Gtid_Set: 987ac782-d7b8-11e8-a462-000c292218ec:1-13,
    c01b1811-d7b3-11e8-8698-000c29492f7b:3-7
    1 row in set (0.00 sec)

    配置从2服务器端

    与从1服务器端建立连接

    MySQL [(none)]> change master to master_host='10.220.5.138',master_user='ken',master_passowrd='xx',master_log_file='mysql-bin.000007',master_log_pos=2057;

    启动slave

    MySQL [(none)]> start slave;

     

    查看连接状态

    要确认IO以及SQL线程成功开启

    ySQL [(none)]> show slave statusG
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.220.5.138
                      Master_User: ken
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000007
              Read_Master_Log_Pos: 2057
                   Relay_Log_File: relay-bin.000007
                    Relay_Log_Pos: 1586
            Relay_Master_Log_File: mysql-bin.000007
                 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: 2057
                  Relay_Log_Space: 1834
                  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: 1003306
                      Master_UUID: 987ac782-d7b8-11e8-a462-000c292218ec
                 Master_Info_File: /data/mysql/mysql3306/data/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 
                   Master_SSL_Crl: 
               Master_SSL_Crlpath: 
               Retrieved_Gtid_Set: 987ac782-d7b8-11e8-a462-000c292218ec:8-13
                Executed_Gtid_Set: 987ac782-d7b8-11e8-a462-000c292218ec:1-13,
    c01b1811-d7b3-11e8-8698-000c29492f7b:1-7
                    Auto_Position: 0
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Master_TLS_Version: 
    1 row in set (0.00 sec)

    测试

    现在从2服务器是从从1服务器端同步的数据,没有直接和主服务器端建立连接,而是通过从1间接的进行了连接。现在在主服务器端建库建表,查看从2服务器是否有主服务器端的库和表。

    主服务器建库建表

    mysql> create database ken6;              <<建立数据库ken6
    mysql> use ken6;                          <<切换至ken6
    Database changed
    mysql> create table ken(id int);          <<创建表ken
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> insert into ken values (1),(2);    <<插入数据
    Query OK, 2 rows affected (0.01 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from ken;                <<查看刚才插入的数据
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    +------+
    2 rows in set (0.00 sec)

    在从1服务器端查看已经同步过来了主服务器端新建的库和表

    MySQL [(none)]> select * from ken6.ken;
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    +------+

    在从2检查发现也已经同步过来了主服务器端的库和表,这样就完后了级联复制的操作

    MySQL [(none)]> select * from ken6.ken;
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    +------+
    2 rows in set (0.00 sec)
  • 相关阅读:
    将java库转换为.net库(转载)
    web sql设计器(连接)
    [SQLSERVER]SQL中的全文检索(转邹建)
    网络最经典命令行-网络安全工作者的必杀技
    无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。
    06毕业设计 VB导出Excel文档
    06毕业设计 VB导出word文档
    C# 交替显示项的DataGird,鼠标上移时转变颜色,退出后能恢复原来颜色
    js.offsetParent属性
    自动提醒IE6访客升级浏览器,
  • 原文地址:https://www.cnblogs.com/kenken2018/p/9852047.html
Copyright © 2011-2022 走看看