zoukankan      html  css  js  c++  java
  • mysql8.0.23克隆插件的实践

    mysql8.0.23克隆插件的实践

    理论参考资料


    https://www.jianshu.com/p/ed7e0796a3d8

    备注:数据量越大,基于物理文件拷贝,越能体现出这种优势。

    一、环境

    IP 说明
    10.100.19.216 数据源
    10.100.19.215 目标库1
    10.100.19.214 目标库2

    二、查看是否已经安装克隆插件

    mysql> INSTALL PLUGIN clone SONAME 'mysql_clone.so';
    Query OK, 0 rows affected (0.16 sec)
    mysql> show PLUGINs;
    +---------------------------------+----------+--------------------+----------------+---------+
    | Name                            | Status   | Type               | Library        | License |
    +---------------------------------+----------+--------------------+----------------+---------+
    | binlog                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | mysql_native_password           | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
    | sha256_password                 | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
    | caching_sha2_password           | ACTIVE   | AUTHENTICATION     | NULL           | GPL     |
    | sha2_cache_cleaner              | ACTIVE   | AUDIT              | NULL           | GPL     |
    | CSV                             | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | MEMORY                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | InnoDB                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | INNODB_TRX                      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_CMP                      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_CMP_RESET                | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_CMPMEM                   | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_CMPMEM_RESET             | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_CMP_PER_INDEX            | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_CMP_PER_INDEX_RESET      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_BUFFER_PAGE              | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_BUFFER_PAGE_LRU          | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_BUFFER_POOL_STATS        | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_TEMP_TABLE_INFO          | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_METRICS                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_FT_DEFAULT_STOPWORD      | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_FT_DELETED               | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_FT_BEING_DELETED         | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_FT_CONFIG                | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_FT_INDEX_CACHE           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_FT_INDEX_TABLE           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_TABLES                   | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_TABLESTATS               | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_INDEXES                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_TABLESPACES              | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_COLUMNS                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_VIRTUAL                  | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_CACHED_INDEXES           | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | INNODB_SESSION_TEMP_TABLESPACES | ACTIVE   | INFORMATION SCHEMA | NULL           | GPL     |
    | MyISAM                          | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | MRG_MYISAM                      | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | PERFORMANCE_SCHEMA              | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | TempTable                       | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | ARCHIVE                         | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | BLACKHOLE                       | ACTIVE   | STORAGE ENGINE     | NULL           | GPL     |
    | FEDERATED                       | DISABLED | STORAGE ENGINE     | NULL           | GPL     |
    | ngram                           | ACTIVE   | FTPARSER           | NULL           | GPL     |
    | mysqlx_cache_cleaner            | ACTIVE   | AUDIT              | NULL           | GPL     |
    | mysqlx                          | ACTIVE   | DAEMON             | NULL           | GPL     |
    | clone                           | ACTIVE   | CLONE              | mysql_clone.so | GPL     |
    +---------------------------------+----------+--------------------+----------------+---------+
    45 rows in set (0.00 sec)

    三、在各个节点创建专用账号

    set sql_log_bin=0;
    create user 'recipient_clone_user'@'10.100.19.%' identified by 'recipient_clone_userpwd';
    
    GRANT CLONE_ADMIN,BACKUP_ADMIN  on *.* to 'recipient_clone_user'@'10.100.19.%';
    set sql_log_bin=1;

    四、添加数据贡献者以及克隆操作

    #在215和214中操作,添加克隆提供方的ip列表与端口至clone_valid_donor_list
    mysql> SET GLOBAL clone_valid_donor_list = '10.100.19.216:3306';
    Query OK, 0 rows affected (0.00 sec)
    
    # 214
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | testdb214          |
    +--------------------+
    5 rows in set (0.00 sec)
    
    # 215
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | testdb215          |
    +--------------------+
    5 rows in set (0.00 sec)
    
    # 远程克隆覆盖自身:(默认方式,提供方数据直接克隆到接收方,克隆后接收方实例重启)
    mysql> CLONE INSTANCE FROM 'recipient_clone_user'@'10.100.19.216':3306 IDENTIFIED BY 'recipient_clone_userpwd';
    Query OK, 0 rows affected (23.91 sec)
    
    mysql> 
    
    #具体的克隆流程可以查看performance_schema.clone_progress:
    mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
    +-----------+-----------+----------------------------+
    | STAGE     | STATE     | END_TIME                   |
    +-----------+-----------+----------------------------+
    | DROP DATA | Completed | 2021-02-10 10:46:42.802132 |
    | FILE COPY | Completed | 2021-02-10 10:47:00.100939 |
    | PAGE COPY | Completed | 2021-02-10 10:47:00.331577 |
    | REDO COPY | Completed | 2021-02-10 10:47:00.460281 |
    | FILE SYNC | Completed | 2021-02-10 10:47:05.656917 |
    | RESTART   | Completed | 2021-02-10 10:47:09.388017 |
    | RECOVERY  | Completed | 2021-02-10 10:47:10.806868 |
    +-----------+-----------+----------------------------+
    7 rows in set (0.01 sec)
    
    # 注意,因为是克隆的,所以权限等于数据提供者保持了一致,所以需要修改密码文件,以便快捷方式能正常使用
    
    mysql> show databases; # 214
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | testdb214          |
    | testdb215          |
    +--------------------+
    6 rows in set (0.03 sec)
    
    # 215 
    mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
    +-----------+-------------+----------------------------+
    | STAGE     | STATE       | END_TIME                   |
    +-----------+-------------+----------------------------+
    | DROP DATA | Completed   | 2021-02-10 10:50:52.940287 |
    | FILE COPY | Completed   | 2021-02-10 10:51:10.128826 |
    | PAGE COPY | Completed   | 2021-02-10 10:51:10.458558 |
    | REDO COPY | Completed   | 2021-02-10 10:51:10.687318 |
    | FILE SYNC | In Progress | NULL                       |
    | RESTART   | Not Started | NULL                       |
    | RECOVERY  | Not Started | NULL                       |
    +-----------+-------------+----------------------------+
    7 rows in set (0.00 sec)
    mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
    +-----------+-----------+----------------------------+
    | STAGE     | STATE     | END_TIME                   |
    +-----------+-----------+----------------------------+
    | DROP DATA | Completed | 2021-02-10 10:50:52.940287 |
    | FILE COPY | Completed | 2021-02-10 10:51:10.128826 |
    | PAGE COPY | Completed | 2021-02-10 10:51:10.458558 |
    | REDO COPY | Completed | 2021-02-10 10:51:10.687318 |
    | FILE SYNC | Completed | 2021-02-10 10:51:16.172598 |
    | RESTART   | Completed | 2021-02-10 10:51:20.179976 |
    | RECOVERY  | Completed | 2021-02-10 10:51:21.828740 |
    +-----------+-----------+----------------------------+
    7 rows in set (0.00 sec)
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | testdb214          |
    | testdb215          |
    +--------------------+
    6 rows in set (0.02 sec)
    # 经过比对,这个在各个节点是不一样的
    # cat /data/mysql/mysql_3306/data/auto.cnf 
    [auto]
    server-uuid=8d94b44b-645e-11eb-b232-fa163ee8385c

    五、克隆方式部署主从复制环境

    # 在主库上创建复制账号
    create user 'repluser'@'10.100.19.%' identified by 'repluserpwd';
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repluser'@'10.100.19.%';
    # 在从库中执行操作
    
    CHANGE REPLICATION SOURCE TO
      SOURCE_HOST='10.100.19.216',
      SOURCE_USER='repluser',
      SOURCE_PASSWORD='repluserpwd',
      SOURCE_PORT=3306,
      SOURCE_AUTO_POSITION=1;
    
    start replica;
    show replica statusG; 
    mysql> show replica statusG; 
    *************************** 1. row ***************************
                 Replica_IO_State: Waiting for master to send event
                      Source_Host: 10.100.19.216
                      Source_User: repluser
                      Source_Port: 3306
                    Connect_Retry: 60
                  Source_Log_File: mysql-binlog.000001
              Read_Source_Log_Pos: 1401
                   Relay_Log_File: relay-log.000002
                    Relay_Log_Pos: 1622
            Relay_Source_Log_File: mysql-binlog.000001
               Replica_IO_Running: Yes
              Replica_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: test.%
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Source_Log_Pos: 1401
                  Relay_Log_Space: 1825
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Source_SSL_Allowed: No
               Source_SSL_CA_File: 
               Source_SSL_CA_Path: 
                  Source_SSL_Cert: 
                Source_SSL_Cipher: 
                   Source_SSL_Key: 
            Seconds_Behind_Source: 0
    Source_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Source_Server_Id: 15402
                      Source_UUID: b7e35965-645f-11eb-a1e6-fa163e244eb1
                 Source_Info_File: mysql.slave_master_info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
        Replica_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Source_Retry_Count: 86400
                      Source_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 
                   Source_SSL_Crl: 
               Source_SSL_Crlpath: 
               Retrieved_Gtid_Set: b7e35965-645f-11eb-a1e6-fa163e244eb1:1-4
                Executed_Gtid_Set: b7e35965-645f-11eb-a1e6-fa163e244eb1:1-4
                    Auto_Position: 1
             Replicate_Rewrite_DB: 
                     Channel_Name: 
               Source_TLS_Version: 
           Source_public_key_path: 
            Get_Source_public_key: 0
                Network_Namespace: 
    1 row in set (0.00 sec)
    
    ERROR: 
    No query specified
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | testdb214          |
    | testdb215          |
    +--------------------+
    6 rows in set (0.01 sec)
    
    mysql> 

    完毕!

  • 相关阅读:
    二叉查找树
    Rust更换Crates源
    Raft共识算法
    Session
    可以编写代码的代码:代码生成的利与弊
    引用和自包含令牌(Reference Tokens and Introspection)
    认证授权-学习笔记1-OAuth 2.0
    spring security原理-学习笔记2-核心组件
    spring security原理-学习笔记1-整体概览
    零拷贝Zero copy-linux and java
  • 原文地址:https://www.cnblogs.com/bjx2020/p/14395259.html
Copyright © 2011-2022 走看看