MySQL shell 备份数据库


背景

之前使用 mysqldump 和 mysql source 的方式备份数据库非常缓慢
有时候要耗费非常长的时间 今天发现有一个可以快速备份数据库的 mysqlshell的方法这里总结一下. 注意如果存在超过 8126的列定义, 可能要慎重一下.

介绍

MySQL Shell 是 MySQL 的一个高级客户端和代码编辑器,是第二代 MySQL 客户端。
第一代 MySQL 客户端即我们常用的 mysql。
相比于 mysql,MySQL Shell 不仅支持 SQL,还具有以下关键特性: 支持 Python 和 JavaScript 两种语言模式。基于此,我们可以很容易地进行一些脚本开发工作。
支持 AdminAPI。AdminAPI 可用来管理 InnoDB Cluster、InnoDB ClusterSet 和 InnoDB ReplicaSet。
支持 X DevAPI。X DevAPI 可对文档( Document )和表( Table )进行 CRUD(Create,Read,Update,Delete)操作。 除此之外,MySQL Shell 还内置了很多实用工具,包括: checkForServerUpgrade:检测目标实例能否升级到指定版本。
dumpInstance:备份实例。
dumpSchemas:备份指定库。
dumpTables:备份指定表。
loadDump:恢复通过上面三个工具生成的备份。
exportTable:将指定的表导出到文本文件中。只支持单表,效果同 SELECT INTO OUTFILE 一样。
importTable:将指定文本的数据导入到表中。
在线上,如果我们有个大文件需要导入,建议使用这个工具。它会将单个文件进行拆分,
然后多线程并行执行 LOAD DATA LOCAL INFILE 操作。不仅提升了导入速度,还规避了大事务的问题。
importJson:将 JSON 格式的数据导入到 MySQL 中,譬如将 MongoDB 中通过 mongoexport 导出的数据导入到 MySQL 中。 在使用时注意:
通过 dumpInstance,dumpSchemas,dumpTables 生成的备份只能通过 loadDump 来恢复。
通过 exportTable 生成的备份只能通过 importTable 来恢复。

工具安装

wget https://cdn.mysql.com//Downloads/MySQL-Shell/mysql-shell-8.0.35-1.el7.x86_64.rpm
wget https://cdn.mysql.com//Downloads/MySQL-Shell/mysql-shell-8.0.35-1.el8.x86_64.rpm yum localinstall mysql-shell-8.0.35-1.el7.x86_64.rpm -y

备份

mkdir -p /dbback/mysql$(date +%Y%m%d)
time mysqlsh -uroot -pTestxxxx <<EOS
util.dumpSchemas(['mysqlapp2206mysql0721'],'/dbback/mysql$(date +%Y%m%d)',{"threads":8})
EOS
tar -cvf /dbback/mysql$(date +%Y%m%d).tar /dbback/mysql$(date +%Y%m%d)
性能:
98% (3.52M rows / ~3.58M rows), 251.30K rows/s, 595.77 MB/s uncompressed, 77.44 MB/s compressed
Dump duration: 00:00:24s
Total duration: 00:00:27s
Schemas dumped: 1
Tables dumped: 10437
Uncompressed data size: 6.64 GB
Compressed data size: 911.37 MB
Compression ratio: 7.3
Rows written: 3523496
Bytes written: 911.37 MB
Average uncompressed throughput: 267.75 MB/s
Average compressed throughput: 36.77 MB/s

恢复

mysql -uroot -pTest@xxxx <<EOS
set global local_infile=1;
create user mysqlapp2206mysql0721@'%' identified by 'Test@xxxx';
grant all on *.* to mysqlapp2206mysql0721@'%' ;
EOS
time mysqlsh -uroot -pTest@xxxx <<EOS
util.loadDump("/mysql2024010110",{loadUsers: true})
EOS 恢复速度为:
10599 chunks (3.52M rows, 6.64 GB) for 10437 tables in 1 schemas were loaded in 4 min 32 sec (avg throughput 30.96 MB/s)
1 accounts were loaded
83 warnings were reported during the load. real 4m33.190s
user 0m36.265s
sys 0m6.281s

异常报错

mysqlapp2206mysql0721@robxdj@@0.tsv.zst error 139: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

虽然出现了这个错误, 但是数据的行数行像是对的.
建议还是需要修改数据库兼容处理一下.

MySQL shell 备份数据库的更多相关文章

  1. linux下mysql定时备份数据库

    linux下mysql定时备份数据库 (2010-10-21 12:40:17) 转载▼ 标签: 杂谈   一.用命令实现备份 首页进入mysql的bin目录 1.备份数据#mysqldump -uu ...

  2. Navicat for MySQL定时备份数据库及数据恢复

    在做数据库修改或删除操作中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库.本篇文章主要讲述Navicat for MySQL定时备份数据库和数据恢复等功能,同时可以定时播放电 ...

  3. Navicat for Mysql 如何备份数据库

    Navicat for Mysql 如何备份数据库 打开界面如下 打开自己的的数据库 点击需要备份的数据库名 未完!!! 文章来自:http://jingyan.baidu.com/article/f ...

  4. MySQL定时备份数据库

    一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...

  5. MySQL定时备份数据库(全库备份)

    一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...

  6. mysql shell 备份脚本

    使用 mysqldump 备份数据库,通过 FTP 上传到备份服务器,同时在本地保留备份文件. 新建一个 Shell 脚本文件 vi /home/work/backup.sh 添加如下内容: #! / ...

  7. mysql自动备份数据库

    可以选择设置需要备份的库,自动备份压缩,自动删除 7 天前的备份,需要使用 crontab 定时执行. #!/bin/bash # 要备份的数据库名,多个数据库用空格分开 databases=(db1 ...

  8. MySQL定时备份数据库方案

    MySQL数据备份 1.备份全部数据库的数据和结构 mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql 2.备份全部数据库的结构(加 ...

  9. Linux shell实现Mysql异地备份数据库

    #--------------------------Mysqldump异地备份-----------------# #!/bin/bash #start mysqldump back /usr/bi ...

  10. MySql 定时备份数据库

    每天零点备份一次数据库,备份文件放在指定目录(如果目录不存在则新建),按月存储: 将下面这段命令存储为一个 *.bat 文件,添加一个Windows任务计划程序(Task scheduler)指向这个 ...

随机推荐

  1. 通过印模生成电子印章-Java源代码

    以下代码是处理印模图片的核心代码,通过以下代码可以将公章图片转换为电子印章图片. 制作方式分为四步: 1.在白纸上加盖印章: 2.把加盖印章的白纸扫描,形成图片: 3.将图片通过下面的代码进行自动透明 ...

  2. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 16.优化交互,实现看到物体时出现交互提示

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应Lecture 18 – Creating Buffs, World Interaction, 73 ...

  3. 2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能会有一个伤害, 同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害, 每一个技能最多只能释放

    2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能会有一个伤害, 同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害, 每一个技能最多只能释放 ...

  4. Programming Abstractions in C阅读笔记:p246-p247

    <Programming Abstractions in C>学习第68天,p246-p247总结,总计2页. 一.技术总结 本章通过"the game of nim(尼姆游戏) ...

  5. linux中nginx下载安装部署

    反向代理 动静结合 负载均衡 下载 wget https://nginx.org/download/nginx-1.24.0.tar.gz 官网下载稳定版 解压 tar -zxvf nginx-1.2 ...

  6. 云原生微服务的下一站:Proxyless Service Mesh

    本文分享自华为云社区<DTSE Tech Talk | 第46期:云原生微服务的下一站:Proxyless Service Mesh>,作者:华为云社区精选. 本期直播主题是<云原生 ...

  7. 新一代云原生可观测平台之CCE服务监控篇

    本文分享自华为云社区<新一代云原生可观测平台之CCE服务监控篇>,作者: 云容器大未来. 在云原生容器化浪潮的当下,监控是确保业务稳定性最受关注的问题之一.那么,华为云CCE容器服务又是如 ...

  8. 云图说丨Astro Canvas一站式数据可视化开发,分钟级构建业务大屏

    摘要:Astro大屏应用是Astro轻应用提供的可视化页面构建服务,提供了丰富的可视化组件.灵活的数据接入和多种方式页面构建能力,支持多屏适配,帮助开发者快速构建和发布专业水准的实时可视化应用. 本文 ...

  9. iOS App的打包和上架流程

    ​ 转载:iOS App的打包和上架流程 - 掘金 1. 创建账号 苹果开发者账号几种开发者账号类型 个人开发者账号 费用:99 美元/年(688.00元) 协作人数:仅限开发者自己 不需要填写公司的 ...

  10. AI 黑科技,老照片修复,模糊变高清

    大家好 最近闲逛,发现腾讯开源的老照片修复算法新出了V1.3的预训练模型,手痒试了一下. 我拿"自己"的旧照片试了一下,先看效果 GFPGAN FPGAN算法由腾讯PCG ARC实 ...