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. ElasticSearch之Nodes info API

    查看当前集群中各节点的信息,执行如下命令: curl -X GET "https://localhost:9200/_nodes?pretty" --cacert $ES_HOME ...

  2. 一键式调试工具—Reqable 使用指南

    简介 Reqable是一款跨平台的专业HTTP开发和调试工具,在全平台支持HTTP1.HTTP2和HTTP3(QUIC)协议,简单易用.功能强大.性能高效,助力程序开发和测试人员提高生产力!本产品需要 ...

  3. CentOS7部署后优化配置

    1.安装必要的组件.升级 yum -y install wget vim cd /etc/yum.repos.d/ rm -rf /etc/yum.repos.d/*.repo wget http:/ ...

  4. JVM优化:如何进行JVM调优,JVM调优参数有哪些

    Java虚拟机(JVM)是Java应用运行的核心环境.JVM的性能优化对于提高应用性能.减少资源消耗和提升系统稳定性至关重要.本文将深入探讨JVM的调优方法和相关参数,以帮助开发者和系统管理员有效地优 ...

  5. 基于Atlas 200 DK的原版YOLOv3(基于Darknet-53)实现(Python版本)

    [摘要]本文将为大家带来使用Atlas 200 DK的原版YOLOv3(基于Darknet-53)实现的展示. 前言 YOLOv3可以算作是经典网络了,较好实现了速度和精度的Trade off,成为和 ...

  6. 详解Apache Sentry->Ranger平滑升级方案

    摘要:本文主要探讨如何平滑解决sentry到ranger升级过程中的权限迁移问题. 本文分享自华为云社区<[平滑上云]Apache Sentry->Ranger平滑升级方案>,作者: ...

  7. 云小课|MRS基础原理之Oozie任务调度

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:Oozie是一个基 ...

  8. 一文读懂火山引擎A/B测试的实验类型(3)——多链接实验

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 一. 概述 多链接实验,也称为Split url实验,用户根据分流结果访问不同版本的url. 举个例子: 当您有两 ...

  9. SpringBoot Admin OFFLINE

    java.util.concurrent.TimeoutException message Did not observe any item or terminal signal within 100 ...

  10. drf-jwt配置文件 jwt签发认证源码分析 自定义用户签发认证 simpleui后台管理美化 权限控制 (acl、rbac)

    目录 昨日回顾 接口文档 自动生成接口文档 接口文档必备的内容 cookie-session-token发展史 token原理 base64 快速签发 定制返回格式 jwt的认证 drf-jwt配置文 ...