zoukankan      html  css  js  c++  java
  • mysqldump备份技巧分享

    前言:

    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 等图形化界面导出更快速,且文件体积小。

    作者:MySQL技术
    出处:https://www.cnblogs.com/kunjian/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。有需要沟通的,可以站内私信,文章留言,或者关注『MySQL技术』公众号私信我。一定尽力回答。
  • 相关阅读:
    Java 8 stream的详细用法
    SpringBoot启动异常 Process finished with exit code 1
    GIT-版本管理-初阶使用
    升级 kubeadm 集群
    antdv 获取 axios文件上传实时进度
    Ant Design Vue 实现文件上传 (通过点击提交按钮后开始上传)
    Ant Design Vue 实现菜单栏根据url变化自动高亮和展开
    Do not access Object.prototype method 'hasOwnProperty' from target object
    Nginx配置WebSocket (包含nginx-ingress-controller)
    Django ORM 常用字段和参数/关系字段/ForeignKey操作/数据库查询优化(重要)/事务初识
  • 原文地址:https://www.cnblogs.com/mysqljs/p/15029977.html
Copyright © 2011-2022 走看看