MySQL shell 备份数据库
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 备份数据库的更多相关文章
- linux下mysql定时备份数据库
linux下mysql定时备份数据库 (2010-10-21 12:40:17) 转载▼ 标签: 杂谈 一.用命令实现备份 首页进入mysql的bin目录 1.备份数据#mysqldump -uu ...
- Navicat for MySQL定时备份数据库及数据恢复
在做数据库修改或删除操作中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库.本篇文章主要讲述Navicat for MySQL定时备份数据库和数据恢复等功能,同时可以定时播放电 ...
- Navicat for Mysql 如何备份数据库
Navicat for Mysql 如何备份数据库 打开界面如下 打开自己的的数据库 点击需要备份的数据库名 未完!!! 文章来自:http://jingyan.baidu.com/article/f ...
- MySQL定时备份数据库
一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...
- MySQL定时备份数据库(全库备份)
一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...
- mysql shell 备份脚本
使用 mysqldump 备份数据库,通过 FTP 上传到备份服务器,同时在本地保留备份文件. 新建一个 Shell 脚本文件 vi /home/work/backup.sh 添加如下内容: #! / ...
- mysql自动备份数据库
可以选择设置需要备份的库,自动备份压缩,自动删除 7 天前的备份,需要使用 crontab 定时执行. #!/bin/bash # 要备份的数据库名,多个数据库用空格分开 databases=(db1 ...
- MySQL定时备份数据库方案
MySQL数据备份 1.备份全部数据库的数据和结构 mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql 2.备份全部数据库的结构(加 ...
- Linux shell实现Mysql异地备份数据库
#--------------------------Mysqldump异地备份-----------------# #!/bin/bash #start mysqldump back /usr/bi ...
- MySql 定时备份数据库
每天零点备份一次数据库,备份文件放在指定目录(如果目录不存在则新建),按月存储: 将下面这段命令存储为一个 *.bat 文件,添加一个Windows任务计划程序(Task scheduler)指向这个 ...
随机推荐
- java中获取内网IP
package com.dashan.utils.iputils; import org.apache.commons.lang.StringUtils; import javax.servlet.h ...
- 十分钟从入门到精通(下)——OBS权限配置
上一篇我们介绍了OBS权限管理中统一身份认证和企业项目管理,本期我们继续介绍OBS权限管理中的高级桶策略和ACL应用. 您是否也遇到过类似的问题或者困扰? 1.隔壁的主账户给了子用户创建一个桶,但 ...
- 云小课|GaussDB如何进行性能调优
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:GaussDB性能 ...
- 华为云PB级数据库GaussDB(for Redis)介绍第四期:高斯 Geo的介绍与应用
摘要:高斯Redis的大规模地理位置信息存储的解决方案. 1.背景 LBS(Location Based Service,基于位置的服务)有非常广泛的应用场景,最常见的应用就是POI(Point of ...
- webpack性能优化(2):splitChunks用法详解
之前写的<webpack性能优化(0):webpack性能优化概况-优化构建速度>.<webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载> 如果使用vue-c ...
- 火山引擎 DataTester 为企业降本增效:1 个人也能成为一支 A/B 实验团队
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 今年天猫电商.京东均表示交易规模与 2021 年持平,跟往年急剧增长的销售额相比,今年的双十一显得略微" ...
- Flutter 自定义组件实战之Cupertino(iOS)风格的复选框
继上一篇Flutter自定义组件的视频短课(视频地址: https://www.bilibili.com/video/BV1ap4y1U7UB/ )后,我们继续来聊自定义组件.视频中我为大家详解了Cu ...
- expect --批量传递公钥
#!/binbash ! rpm -qa |grep expect &> /dev/null && yum -y install expect #判断是否已下载expec ...
- BOM批量查询
1业务要求 1.当多层展开时: 根据"BOM应用程序"字段CAPID在TC04中取出"选择ID"TC04-CSLID: 再根据TCS41-CSLID= TC0 ...
- 自己实现的一个简单的C# IOC 容器
IService接口,以实现服务的启动.停止功能: using System; using System.Collections.Generic; using System.Linq; using S ...