zoukankan      html  css  js  c++  java
  • MySQL8.0.17的数据克隆clone功能

    ################

    MySQL8.0.17推出了一个重量级的功能:Clone Plugin,可以对mysql实例进行本地或远程clone

    有两方面作用:快速搭建复制和快速备份。

    安装clone插件:

    linux上执行:
    
    mysql> install plugin clone soname 'mysql_clone.so';
    
    
    windows上执行:(需要将so换成dll)
    
    mysql> install plugin clone soname 'mysql_clone.dll';

    检查插件是否激活:

    mysql>  select plugin_name, plugin_status  from information_schema.plugins where plugin_name = 'clone';
    +-------------+---------------+ | plugin_name | plugin_status | +-------------+---------------+ | clone | ACTIVE | +-------------+---------------+ 1 row in set (0.00 sec) mysql>

    本地克隆:

    windows上执行:(需要将换成/)
    
    mysql> clone local data directory ="d:/data/apple";
    Query OK, 0 rows affected (3.71 sec)
    
    mysql>
    
    
    linux上执行:
    
    mysql> clone local data directory ="/home/work/apple";
    路径:directory=/home/work/apple
    
    1)路径必须是绝对路径,其中apple必须是不存在该目录
    
    2)最后生成的数据,类似xtrabackup已经apply-log之后的data目录数据,可直接用于MySQL启动

     远程克隆:

    假设将源实例10.10.10.10:3306的数据克隆到目标实例10.10.10.20:3306上:
    
    1)在源实例10.10.10.10:3306上创建克隆账号:
    
    mysql> create user 'clone_src'@'%' identified by '123456';
    
    mysql> grant backup_admin on *.* to 'clone_src'@'%';
    
    2)在目标实例10.10.10.20:3306上创建克隆账号:
    
    mysql> create user 'clone_dst'@'%' identified by '123456';
    
    mysql> grant clone_admin on *.* to 'clone_dst'@'%';
    
    
    3)在目标实例10.10.10.20:3306上执行克隆操作:
    
    mysql> set global clone_valid_donor_list = '%:3306';
    
    mysql> clone instance from 'clone_src'@'%':3306  identified by '123456' data directory = '/home/work/mysql_3306/tmp/data';

     查看克隆进度:

    # 在目标实例上执行:
    
    mysql> select 
    state,

    cast(begin_time as datetime) as "start time",

    case when end_time is null then lpad(sys.format_time(power(10,12) * (unix_timestamp(now()) - unix_timestamp(begin_time))), 10, ' ')

    else lpad(sys.format_time(power(10,12) * (unix_timestamp(end_time) - unix_timestamp(begin_time))), 10, ' ')

    end as duration,
    source,destination,
    binlog_file,binlog_position,
    gtid_executed from
    performance_schema.clone_status G;

     要求与约束:

    1)操作系统版本必须一致;
    
    2)mysql主版本号、发行级别、发行系列版本号都必须一致,mysql8.0.19->mysql8.0.20 这种不支持
    
    3)目前仅支持InnoDB引擎,其他引擎不支持,如果有非InnoDB引擎信息会在日志里面显示
    
    4)支持压缩表clone操作,但文件系统的block size需要保持一致
    
    5  在8.0.27之前不支持DDL操作(因为有backup lock),在8.0.27版本及以后,允许DDL操作,但不允许tablespace的操作(比如import、export)

     clone功能与xtrabackup备份工具性能比较:

    操作系统 CentOS7.3
    CPU类型 Silver4210*2
    内存型号与大小 DDR4,16G
    磁盘类型 SSD固态硬盘
    实例数据量 500G
    xtrabackup的xbstream流式备份至同机房其他机器的耗时 20分钟
    MySQL的remote clone克隆至同机房其他机器的耗时 7分钟

     https://developer.aliyun.com/article/714009?spm=a2c6h.13262185.0.0.5ab07667eXfKgs

     ############

     

    ####################

    igoodful@qq.com
  • 相关阅读:
    HBase的compact分析
    HBase Rowkey的散列与预分区设计
    Zookeeper 快速理解
    oozie 入门
    Apache Storm内部原理分析
    Java ArrayList源码剖析
    Java HashSet和HashMap源码剖析
    初步掌握Yarn的架构及原理
    UML用例图总结
    UML类图几种关系的总结
  • 原文地址:https://www.cnblogs.com/igoodful/p/15331716.html
Copyright © 2011-2022 走看看