前言:
现在各位老铁们对“mysql存储url”可能比较关心,小伙伴们都想要学习一些“mysql存储url”的相关内容。那么小编同时在网络上收集了一些有关“mysql存储url””的相关内容,希望姐妹们能喜欢,大家快快来学习一下吧!一 说明
1. MySQL Shell 介绍
MySQL Shell 是 MySQL 的一个高级客户端和代码编辑器, 是第二代 MySQL 客户端. 第一代 MySQL 客户端即我们常用的 mysql
2. MySQL Shell 备份功能
在之前,备份MySQL方法有: mysqldump , mypump,mydumper, xtrabackup , mysqlbackup
mysqldump , mypump,mydumper都是逻辑备份, mysqldump可以保证一致性但速度比较慢不能并行, mypump无法获取当前备份对应的binlog位置。基于表进行并行备份,对于大表来说性能较差。mydumper可定制性差
mysqlbackup和xtrabackup 是物理备份, 前者是官方收费软件, 后者是开源软件, 功能雷同但又有差异,各有亮点. 例如mysqlbackup支持的特性多一点, 但是是收费软件. xtrabackup 免费但特性少一点,例如仅支持linux平台
我们最常用的基本上就是mysqldump, 对于不是太大的数据库还是很好用的, 但数据量稍微一上去, 备份时间就很长了.
现在有了MySQL Shell 可以大大解决这个问题
3. MySQL Shell 的安装(以 8.0.31 为例)
yum install mysql-shell-commercial-8.0.31-1.1.el9.x86_64.rpm
4. 登录数据库
可以通过 mysqlsh --help 查看到有很多种连接方法:
$ mysqlsh root@localhost/schema$ mysqlsh mysqlx://root@some.server:3307/world_x$ mysqlsh --uri root@localhost --py -f sample.py sample param$ mysqlsh root@targethost:33070 -s world_x -f sample.js$ mysqlsh -- util check-for-server-upgrade root@localhost --output-format=JSON$ mysqlsh mysqlx://user@host/db --import ~/products.json shop
我们此处使用 mysqlsh --uri root@127.0.0.1:3308/mysql 方式, 第一次登录可以保存密码
二 例子
1. 备份例子
util.dumpInstance('/backup/full',{compression: "none"})
Acquiring global read lockGlobal read lock acquiredInitializing - done1 out of 5 schemas will be dumped and within them 8 tables, 0 views.3 out of 6 users will be dumped.Gathering information - doneAll transactions have been startedLocking instance for backupGlobal read lock has been releasedWriting global DDL filesWriting users DDLRunning data dump using 4 threads.NOTE: Progress information uses estimated values and may not be accurate.Writing schema metadata - doneWriting DDL - doneWriting table metadata - doneStarting data dump124% (198.22K rows / ~158.99K rows), 133.81K rows/s, 0.00 B/sDump duration: 00:00:00sTotal duration: 00:00:01sSchemas dumped: 1Tables dumped: 8Data size: 598.90 MBRows written: 198221Bytes written: 598.90 MBAverage throughput: 598.90 MB/s
2. 备份产生的内容
@.done.json:会记录备份的结束时间, 备份集的大小. 备份结束时生成
@.json:会记录备份的一些元数据信息, 包括备份时的一致性位置点信息:binlogFile, binlogPosition 和 gtidExecuted, 这些信息可用来建立复制,或用来基于时间点的恢复
@.sql, @.post.sql:这两个文件只有一些注释信息. 导入数据时, 我们可以通过这两个文件自定义一些 SQL. 分别用于数据导入前和数据导入后执行
*.tsv:数据文件. 可以打开查看数据文件的内容
TEST@a_news.json:记录了表相关的一些元数据信息, 如列名, 字段之间的分隔符(fieldsTerminatedBy)等
TEST@a_news.sql:建表语句
TEST.json:记录数据库中已经备份的表、视图、定时器、函数和存储过程
TEST.sql:建库语句. 如果这个库中存在存储过程、函数、定时器, 也是写到这个文件中
@.users.sql:创建账号及授权语句. 默认不会备份 mysql.session, mysql.session, mysql.sys 这三个内部账号
3. 恢复例子
util.loadDump("/backup/full")
Loading DDL and Data from '/backup/full' using 4 threads.Opening dump...Target is MySQL 8.0.31. Dump was produced from MySQL 8.0.31Scanning metadata - doneChecking for pre-existing objects...Executing common preamble SQLExecuting DDL - doneExecuting view DDL - doneStarting data load1 thds loading \ 100% (598.90 MB / 598.90 MB), 20.59 MB/s, 7 / 8 tables doneExecuting common postamble SQLRecreating indexes - done23 chunks (198.22K rows, 598.90 MB) for 8 tables in 1 schemas were loaded in 50 sec (avg throughput 12.13 MB/s)0 warnings were reported during the load.
4. 恢复产生的内容
load-progress.<server_uuid>.progress: 在导入的过程中, 会在备份目录生成一个 progressFile, 用于记录加载过程中的进度信息, 可用来实现断点续传功能
三 命令说明
1. 备份命令
1) 备份实例 其中
util.dumpInstance(outputUrl[, options])
2) 备份指定库的数据. 第一个参数必须为数组, 如 util.dumpSchemas(['TEST'],'/backup/schema')
util.dumpSchemas(schemas, outputUrl[, options])
3) 备份指定表的数据. 第二个参数必须为数组, 如 util.dumpTables('TEST',['t'],'/backup/table')
util.dumpTables(schema, tables, outputUrl[, options])
2. 恢复命令
util.loadDump(url[, options])
3. 不进入mysqlsh, 操作系统命令行执行备份
mysqlsh --uri root@127.0.0.1:3308/mysql -e "util.dumpInstance('/backup/full1')"
四 备份脚本
例如数据库有 TEST1,TEST2 数据库,我比较喜欢每个数据库分别备份, 每天备份,自动覆盖上周的备份, 可以编写以下脚本并加入计划任务
#!/bin/bashfor v_db in TEST1 TEST2do v_target=/backup/full/$(date +%w)/${v_db} [ -d ${v_target} ] && rm -rf ${v_target} [ -d ${v_target} ] || mkdir -p ${v_target} mysqlsh --uri root@127.0.0.1:3308/mysql -e "util.dumpInstance('${v_target}')"done
标签: #mysql存储url #shell同步mysql #shell连接远程mysql #sql语句备份mysql数据库 #shell脚本操作mysql数据库