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技术』公众号私信我。一定尽力回答。
  • 相关阅读:
    Oracle 按一行里某个字段里的值分割成多行进行展示
    Property or method "openPageOffice" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by
    SpringBoot 项目启动 Failed to convert value of type 'java.lang.String' to required type 'cn.com.goldenwater.dcproj.dao.TacPageOfficePblmListDao';
    Maven 设置阿里镜像
    JS 日期格式化,留作参考
    JS 过滤数组里对象的某个属性
    原生JS实现简单富文本编辑器2
    Chrome控制台使用详解
    android权限(permission)大全
    不借助第三方网站四步实现手机网站转安卓APP
  • 原文地址:https://www.cnblogs.com/mysqljs/p/15029977.html
Copyright © 2011-2022 走看看