关于mysql:mysqldump备份技巧分享

46次阅读

共计 2243 个字符,预计需要花费 6 分钟才能阅读完成。

前言:

mysqldump 是日常比拟罕用的一个工具了,在对数据库进行导出工作时,常常会用到 mysqldump。本篇文章将介绍 mysqldump 工具的应用办法并分享几点备份技巧。

1.mysqldump 应用简介

mysqldump 是 MySQL 零碎自带的逻辑备份工具,次要用于转储数据库。它次要产生一系列的 SQL 语句,能够封装到文件,该文件蕴含重建数据库所须要的 SQL 命令如 CREATE DATABASE,CREATE TABLE,INSERT 等等。当咱们须要还原这些数据时,只须要执行此文件,即可将对应的数据还原。

mysqldump 根底应用语法如下:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

执行 mysqldump –help 或参考 MySQL 官网文档,咱们发现 mysqldump 工具可配置的参数有很多,以下简要阐明局部罕用的参数。

上表展现了一些常见的 mysqldump 相干选项,当你不理解某个参数的作用时,能够执行 mysqldump –help 来获取帮忙。对于布尔类型的参数,个别还存在一个与之对抗的参数,如 –triggers 默认开启,能够应用 –skip-triggers 来禁用它。

2. 几点备份小技巧

尽管 mysqldump 不太实用于大数据量的备份,但因其具备灵便不便、可依据场景定制参数等长处,还是被广泛应用在数据导出畛域。

笔者依据本人的应用教训,简略分享几点 mysqldump 备份小技巧:

  • 倡议应用 –single-transaction 参数来取得一致性备份,缩小锁表。
  • 按需要来导出,只有本人想要的数据,尽量减少导出文件大小。
  • 若想用于搭建从库,倡议应用 –master-data = 2 参数记录主库 binlog 信息。
  • 若想备份存储过程、自定义函数及事件,请加 -R -E 参数,此二者默认不开启。
  • 不理解的参数不要随便加,按默认即可。

上面分享几个不同场景下的 mysqldump 应用办法:

# 备份全副数据库(蕴含存储过程、自定义函数及事件)mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases > /tmp/all_database.sql

# 要求记录 binlog 位点信息 可用于搭建从库
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases --master-data=2 > /tmp/all_database.sql

# 备份指定数据库
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 > /tmp/db1.sql
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 db2 > /tmp/db1_db2.sql

# 备份局部表
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 > /tmp/tb1.sql
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 tb2 tb3 > /tmp/tb.sql

# 导出某个表,数据以单行 insert 显示
mysqldump -uroot -pxxxxxx --single-transaction --skip-extended-insert db1 tb1 > /tmp/tb1.sql

# 导出单表的局部数据
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where="create_time >='2021-06-01 00:00:00' " > /tmp/tb1.sql
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where='id < 10' > /tmp/tb1.sql

# 排除某些表导出
mysqldump -uroot -pxxxxxx --single-transaction --databases db1 --ignore-table=db1.tb1 --ignore-table=db1.tb2 > /tmp/db1.sql

# 只导出构造或只导出数据
mysqldump -uroot -pxxxxxx db1 --no-data > /tmp/db1_jiegou.sql
mysqldump -uroot -pxxxxxx db1 --no-create-info > /tmp/db1_data.sql

# 只导出某个库的存储过程及自定义函数
mysqldump -uroot -pxxxxxx -d -t -R db1 > /tmp/db1_routine.sql

# 近程导出 即 MySQL 服务端不在本地
mysqldump -uroot -pxxxxxx -hxxx.xxx.xx -P3306 --single-transaction --databases db1 > /tmp/db1.sql

总结:

本篇文章次要介绍了 mysqldump 工具的应用办法及一些常见场景。mysqldump 作为一个实用工具,心愿各位都能上手学习下,比用 Navicat 等图形化界面导出更疾速,且文件体积小。

正文完
 0