MySQL Clone Plugin(克隆插件,适用8.0.17+)

MySQL Clone Plugin(克隆插件,适用8.0.17+)MySQL Clone Plugin(克隆插件,8.0.17+) 一. 克隆插件是什么? 允许从本地或远程MySQL服务器实例拷贝数据 可对InnoDB的schemas,tables,tablesp…

MySQL Clone Plugin(克隆插件,适用8.0.17+)

MySQL Clone Plugin(克隆插件,8.0.17+)

一. 克隆插件是什么?

  • 允许从本地或远程MySQL服务器实例拷贝数据
  • 可对InnoDB的schemas,tables,tablespaces,数据字典元数据进行物理快照
  • 支持replication,如用于MGR

二. 使用克隆插件

2.1 安装克隆插件

# 方式一:配置文件加载插件
[mysqld]
plugin-load-add=mysql_clone.so

# 方式二:使用install plugin语句,会在mysql.plugins表中注册
install plugin clone SONAME "mysql_clone.so";

代码100分

如果安装报错ERROR 1123 (HY000): Can"t initialize function "clone"; Plugin initialization function failed.,检查explicit_defaults_for_timestamp是否开启(1):参考Bug #96281

2.2 克隆本地数据

将本地MySQL数据目录克隆到另一个目录,用户需要BACKUP_ADMIN权限

代码100分# 创建用户和授权
create user "clone_backup"@"localhost" identified by "xxx";

grant backup_admin on *.* to "clone_backup"@"localhost";

# 将数据目录克隆到/backup/clone-local-1823,目录需为绝对路径,且目录需不存在,且路径需要MySQL服务可写
# 不支持克隆数据目录之外的表空间和表
# 可以使用克隆的目录启动MySQL服务
mkdir /backup
chown mysql.mysql /backup
clone local data directory "/backup/clone-local-1823";

# 使用克隆目录启动服务
./bin/mysqld_safe 
--datadir=/backup/clone-local-1823/ 
--port=3309 
--user=mysql 
--log-error=error.log 
--socket=/tmp/mysql3309.sock 
--lower_case_table_names=1 
--mysqlx_port=33069 
--mysqlx_socket=/tmp/mysqlx3309.sock 
--pid-file=mysqld.pid

克隆期间锁占用,会阻塞DDL操作(Waiting for backup lock),DML在clone完成最后阶段会遭遇waiting for handler commit,克隆数据是执行clone这个时间点的数据快照。

2.3 克隆远程实例数据

可以克隆到远程机器的当前运行实例的数据目录,会删除当前数据,然后会自动重启服务,也可以通过DATA DIRECTORY指定一个不存在的绝对路径,将数据克隆到该目录;支持克隆数据目录外的表空间;

克隆准备步骤:

  • 两个MySQL实例都需要安装并激活clone插件
  • 创建相关用户账户
    • 源端:需要BACKUP_ADMIN权限,克隆期间阻塞DDL操作
    • 目的端:需要CLONE_ADMIN(隐含包括BACKUP_ADMIN和SHUTDOWN权限)权限,克隆期间阻塞DDL操作,并会自动重启服务
  • 源端和目的端MySQL版本、OS版本需要一致,确保目的端有足够的磁盘空间存储所需克隆的InnoDB数据
  • 源端和目的端MySQL服务的字符集和校对集需一致
  • 源端和目的端MySQL服务的innodb_page_sizeinnodb_data_file_path配置需一致
  • 如克隆加密或页面压缩数据,源端和目的端的文件系统块大小需一致,对页压缩数据,目的端系统还需支持sparse files和hole punching;加密数据还需要使用安全连接;
  • 仅支持同时进行一个clone,确保源端的IP地址在目的端的clone_valid_donor_list参数配置中;
  • max_allowed_packet最小值需为2MB
  • 源端的UNDO表空间文件需唯一,通过SELECT TABLESPACE_NAME, FILE_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE LIKE "UNDO LOG";可检查
  • 目的端因MySQL实例需自动重启(克隆到另外的目录不需要重启),需有守护进程监控

源端(10.82.30.102:3308):

# 创建用户
create user "clone_server"@"10.82.30.101" identified by "xxx";
grant backup_admin on *.* to "clone_server"@"10.82.30.101";

# 安装插件
install plugin clone SONAME "mysql_clone.so";

目的端(10.82.30.101:3308):

代码100分# 创建用户
create user "clone_client"@"localhost" identified by "xxx";
grant clone_admin on *.* to "clone_client"@"localhost";

# 安装插件
install plugin clone SONAME "mysql_clone.so";

# 添加源端IP到白名单
set global clone_valid_donor_list="10.82.30.102:3308";

# 使用clone用户登录
./bin/mysql -S /tmp/mysql3308.sock -uclone_client -p

# 一. 执行clone命令,将数据复制到实例数据目录
clone instance from "clone_server"@"10.82.30.102":3308 identified by "xxx";

# 查看克隆状态
select id,pid,state,source,destination,error_no,error_message,binlog_file,binlog_position from performance_schema.clone_status;

# 二. 执行clone命令,将数据复制到指定目录(目录需不存在,同时MySQL服务有写权限)
mkdir /backup
chown mysql.mysql /backup

# 操作用户还需要BACKUP_ADMIN权限,文档没提及
grant backup_admin on *.* to "clone_client"@"localhost";

clone instance from "clone_server"@"10.82.30.102":3308 identified by "xxx" data directory="/backup/clone-102";

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7951.html

(0)
上一篇 2023-03-10
下一篇 2023-03-10

相关推荐

  • Python中使用’continue’关键字优化循环

    Python中使用’continue’关键字优化循环
    在Python中,我们可以使用`while`循环和`for`循环来重复执行一段代码。然而,在嵌套循环或循环中含有复杂逻辑的情况下,我们需要使用`continue`关键字来跳过当前循环并进入下一次循环,这能够显著优化循环的效率和可读性。

    2024-02-10
    55
  • 如何使用Python计算45度正弦值

    如何使用Python计算45度正弦值Python中的math模块提供了许多基本数学函数,包括三角函数。我们可以使用math模块来计算45度的正弦值。

    2024-02-17
    55
  • Hi,你有一份 TiDB 易用性挑战赛「捞分指南」请查收[通俗易懂]

    Hi,你有一份 TiDB 易用性挑战赛「捞分指南」请查收[通俗易懂]TiDB 挑战赛第二季之 易用性挑战赛 已经开始一周了,由于有参加过上一季 性能挑战赛 的老玩家强势加入,这一季挑战赛的竞争格外激烈,短短一周的时间,已有 3 支队伍获得了上千积分! 完整积分排行榜…

    2023-02-07
    98
  • 企业实践 | 如何更好地使用 Apache Flink 解决数据计算问题?「建议收藏」

    企业实践 | 如何更好地使用 Apache Flink 解决数据计算问题?「建议收藏」业务数据的指数级扩张,数据处理的速度可不能跟不上业务发展的步伐。基于 Flink 的数据平台构建、运用 Flink 解决业务场景中的具体问题等随着 Flink 被更广泛的应用于广告、金融风控、实时 …

    2022-12-17
    89
  • redis集合数据结构_redis的set集合命令

    redis集合数据结构_redis的set集合命令redis 的集合是无序的,集合成员是唯一的,不能重复。用户可以快速地对集合执行添加元素操作、移除元素操作以及检查一个元素是否存在于集合中。这里介绍一些常用的集合处理命令,并在 Yii 中的使用。 S

    2023-03-11
    91
  • Excel – 字符串处理函数:LEFT, RIGHT, MID, LEN 和 FIND[通俗易懂]

    Excel – 字符串处理函数:LEFT, RIGHT, MID, LEN 和 FIND[通俗易懂]在单元格中输入公式,=MID(字符串内容或所在单元格,第一个字符开始的位置,要获取的字符个数)单元格里输入公式为,=FIND(要寻找的字符或字符串,字符串或其所在单元格,开始查找的位置)注意:这里使用的字符串位置,都是从1开始计数的,而不是和C语言一样,是从0开始计数。在单元格中输入公式,=RIGHT(字符串内容或所在单元格,从右侧开始的字符个数)在单元格中输入公式,=LEFT(字符串内容或所在单元格,从左侧开始的字符个数)根据某个分隔字符或字符串,截取右边的字符串。根据某个分隔字符,截取左边的字符串。

    2023-03-01
    94
  • Python Overhead Application是什么?

    Python Overhead Application是什么?Python Overhead Application是指Python应用程序在运行过程中,除了执行核心业务逻辑所需的资源外,还需要额外消耗的资源,这些资源包括内存、CPU、网络、I/O等。理解Python Overhead Application对开发者来说非常重要,因为他们需要在代码编写过程中,根据应用程序的性质选择合适的优化方案,以确保程序有一个良好的性能。

    2024-03-24
    28
  • sql按时间戳查询_js日期转时间戳

    sql按时间戳查询_js日期转时间戳需求:有一张域名浏览记录表,有字段warning浏览次数,字段updatetime创建时间,现在需要获取,按创建时间的降序,浏览量的降序,获取域名列表。就是说,同一天创建的域名,如果谁的浏览量大,谁就

    2023-03-12
    101

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注