【生产篇】_mysql逻辑备份mysqldump如何实时跟踪备份过程

【引言】

Linux环境下,MySQL在使用官方工具mysqldump逻辑备份方式进行库备份时,会给操作者一个特别不好的印象:不显式对导入过程进行刷屏。本文将讲述借助mysql的tee命令方式,对mysqldump的导出文件实现实时导入跟踪。

大家在操作命令时,都希望所执行命令能够回显执行过程,或者希望把这些执行过程以文件形式进行保存,以便后续跟踪排查。即在控制台上分析起来不方便。希望将结果导出到文件分析。

在mysql命令行中,有一个很有趣又很实用的小技巧:tee命令,可以记录语句和输出到指定文件。在debugging时会很有用。每执行一条语句,mysql都会讲执行结果刷新到指定文件。它将操作和输出的全部可视信息都保存进了一个文件里面,可以用来生成表格式的文件、报表制作、简单的备份。熟悉oracle的朋友可能想到mysql的tee命令类似于sqlplus的spool功能,可以将命令行中的结果保存到外部文件中。如果指定已经存在的文件,则结果会附加到文件中。

Tee命令用法示例:

在mysql命令行下,
开启命令:
mysql> tee /tmp/20191008.log

mysql> \T /tmp/20191008.log
此后所有操作和所有输出结果都将被记录下来。

使用notee命令来关闭日志记录
mysql> notee
Outfile disabled.
mysql> \t
Outfile disabled.

当调用mysql时,使用–tee参数,可以记录这个登录会话的全部日志。
#mysql -uroot -p --tee=/tmp/20160908_02.log

注意:
tee功能只在交互模式生效。即如果当前会话断开,则上述命令方式的反馈信息将不会再输出到外部文件。如果想使所有的会话都生效,怎么办?当然是写配置文件,在服务器上的/etc/my.cnf中的[client]加入 tee =/tmp/client_mysql.log即可。

先简单回顾下mysqldump的几种用法:
完全备份数据库中的一个表:
mysqldump -h192.168.0.110 -uusername -puserpswd dbname tablename>data_bck.sql
完全备份某个数据库:
mysqldump -h192.168.0.110 -uusername -puserpswd dbname tablename>data_bck.sql
完全备份所有数据库:
mysqldump -h192.168.0.110 -uusername -puserpswd --single-transaction --all-databases>data_bck.sql
完全备份所有数据库后停用以前所有增量日志并生成新日志:
mysqldump -h192.168.0.110 -uusername -puserpswd --single-transaction --flush-logs --master-data=2 --all-databases>data_bck.sql
完全备份所有数据库后删除以前所有增量日志并生成新日志:
mysqldump -h192.168.0.110 -uusername -puserpswd --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs>data_bck.sql

增量备份:
先执行完全备份,然后执行更新日志:
mysqladmin -h192.168.0.110 -uusername -puserpswd flush-logs

tee案例
用mysqldump进行数据库备份
$ /usr/local/bin/mysqldump --single-transaction --master-data=2 --flush-privileges --set-gtid-purged=off -S /tmp/mysql.sock -uroot -p --default-character-set=utf8mb4 -A -E -R --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats --triggers > /mysqldata/full_database_20191008.sql

导入过程跟踪
$/usr/local/bin/mysql -uroot -pPASSWORD
mysql>tee /mysqldata/full_database_20191008.sql
–此命令后,会将该会话下的所有命令回显至外部文件
mysql>\W
–执行导入命令
mysql>source /mysqldata/full_database_20191008.sql

在操作系统层面使用tail命令即可实时对上述日志进行跟踪。
$ tail -200f /mysqldata/full_database_20191008.sql

Tee命令介绍至此。

另,这里再介绍mysql的 pager命令。大家常常遇到当查询的表中数据行很多时,一页看不完时,可使用pager更改mysql的查询输出,如:
mysql> pager less;
mysql> select * from schema.tablename;
查询输出都是通过管道传给less命令,可以实现分页浏览

–即可回到标准输出stdout
mysql> nopager;

如下语句将输出发送到文件中:
mysql> pager cat>/home/pw/osq.txt;

less说明:
退出:“:q”
下一页:“F”
上一页:“B”

向前搜索
/ - 使用一个模式进行搜索,并定位到下一个匹配的文本
n - 向前查找下一个匹配的文本
N - 向后查找前一个匹配的文本
向后搜索
? - 使用模式进行搜索,并定位到前一个匹配的文本
n - 向后查找下一个匹配的文本
N - 向前查找前一个匹配的文本

【结语】
1.本文讲述了mysql的一个简单又使用的命令tee,该命令类似于oracle的spool,适用于debug问题、留存操作过程。
2.感兴趣的朋友可以动手尝试下,工具简单易用。

【参考】
1.https://www.cnblogs.com/jackluo/p/3365102.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值