MySQL 数据库自动备份「建议收藏」

MySQL 数据库自动备份「建议收藏」MySQL 数据库自动备份 MySQL 数据库自动备份 MySQL 备份命令 mysqldump 介绍 数据备份 数据恢复 gzip 介绍 MySQL 备份脚本 Linux 定时任务-crontab

MySQL 数据库自动备份

MySQL 数据库自动备份

  • MySQL 数据库自动备份
    • MySQL 备份命令
      • mysqldump 介绍
      • 数据备份
      • 数据恢复
      • gzip 介绍
    • MySQL 备份脚本
    • Linux 定时任务-crontab

MySQL 备份命令

手抖、写错条件、写错表名、错连生产库造成的误删库表和数据总有听说,那么删库之后除了跑路,还能做什么呢,当然是想办法恢复,恢复数据的基础就在于完善的备份策略。下面就来介绍下MySQL自带备份工具mysqldump

mysqldump 介绍

  • 用法

    Usage: mysqldump [OPTIONS] database [tables]
    OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
    OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
    
  • 常用参数

    • --opt 如果有这个参数表示同时激活了mysqldump命令的quick,add-drop-table,add-locks,extended-insert,lock-tables参数,它可以给出很快的转储操作并产生一个可以很快装入MySQL服务器的转储文件。当备份大表时,这个参数可以防止占用过多内存。(反之使用 --skip-opt
    • --single-transaction 设置事务的隔离级别为可重复读,然后备份的时候开启事务,这样能保证在一个事务中所有相同的查询读取到同样的数据。注意,这个参数只对支持事务的引擎有效,如果有 MyISAM 的数据表,并不能保证数据一致性。(自动关闭选项 --lock-tables)
    • --default-character-set=charset 指定转储数据时采用何种字符集。(默认使用数据库的字符集)
    • --master-data=2 表示在备份过程中记录主库的 binlog 和 pos 点,并在dump文件中注释掉这一行,在使用备份文件做新备库时会用到
    • -x --lock-all-tables 锁表备份。由于 MyISAM 不能提供一致性读,如果要得到一份一致性备份,只能进行全表锁定。
    • -l --lock-tables 锁定所有的表以便读取。(默认为打开;使用--skip-lock-tables来禁用。)
    • --dump-date 在输出的最后加上转储日期。(默认为打开;使用--skip-dump-date来禁用。)
    • -h --host=name 连接主机
    • -P --port=# 端口号
    • -u --user=username 用户名
    • -p --password[=passwd] 密码
    • -A --all-databases 转储全部数据库
    • -Y --all-tablespaces 转储所有的表空间。(反之 -y --no-tablespaces不转储任何表空间信息)
    • -B --databases 转储指定数据库
      • --tables 转储指定表, 覆盖选项 --databases
    • --ignore-table=name 不转储指定的表。要指定一个以上的忽略的表,请多次使用该指令,每个表一次为每个表使用一次。每个表都必须同时指定数据库和表名(如--ignore-table=database.table)
    • -d --no-data 不转储行记录。(只有表结构,没有表数据)
    • --add-drop-database 在每次创建前添加一个DROP DATABASE。
    • --add-drop-table 在每次创建前添加一个DROP TABLE。(默认添加)

数据备份

  • InnoDB 全库备份

    mysqldump –opt –single-transaction –master-data=2 –default-character-set=utf8 -h

    -u

    -p -A > backup.sql

  • MyISAM 全库备份

    mysqldump –opt –lock-all-tables –master-data=2 –default-character-set=utf8 -h

    -u

    -p -A > backup.sql

  • 备份带上压缩

    mysqldump -h

    -u

    -p -A | gzip >> backup.sql.gz

  • 备份指定库(可多个库)

    mysqldump -h

    -u

    -p –databases


    > backup.sql


数据恢复

  • SQL文件恢复

    mysql -h

    -u

    -p < backup.sql

  • 压缩文件恢复

    gzip -d backup.sql.gz | mysql -h

    -u

    -p

    note: gzip -d为解压, 下面介绍下gzip用法与参数介绍(gzip命令只是压缩,不做打包操作)

gzip 介绍

  • 用法:

    gzip [OPTION]… [FILE]…

  • 常用参数

    • -d --decompress 解压
    • -c --stdout 保留原始文件,把压缩/解压流重定向到新文件(如: gzip -c aa > aa.gz
    • -l --list 列出压缩文件信息,并不解压
    • -r --recursive 对目录进行递归操作
    • -t --test 测试压缩文件的完整性
    • -v --verbose 冗长模式
    • -num num为压缩效率,是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;
      • -1 --fast 最快压缩方法(低压缩比)
      • -9 --best 最慢压缩方法(高压缩比)
  • 栗子

    • 把 test目录下的每个文件压缩成.gz文件

      gzip test/*

    • 把上例中每个压缩的文件解压,并列出详细的信息

      gzip -dv test/*

    • 详细显示test中每个压缩的文件的信息,并不解压

      gzip -l test/*

    • 压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz

      gzip -r log.tar

    • 递归的压缩目录

      gzip -rv test

      这样,所有test下面的文件都变成了.gz,目录依然存在只是目录里面的文件相应变成了.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。

    • 递归地解压目录

      gzip -dr test

    • 保留原始文件,把压缩/解压流重定向到新文件

      gzip -c aa > aa.gz

      gzip -dc bb.gz > bb

MySQL 备份脚本

  • MySQL 数据库备份脚本

Linux 定时任务-crontab

crontab 是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。

  • 用法:

    • crontab [-u user] file
    • crontab [-u user] [ -e | -l | -r ]
  • 参数解释:

    • -e 编辑用户的定时任务 (edit user”s crontab)
    • -l 列出用户的定时任务 (list user”s crontab)
    • -r 删除用户的定时任务 (delete user”s crontab)
    • -i 在删除用户的定时任务前提示 (prompt before deleting user”s crontab)
    • -s (selinux context)
  • 栗子

    • 编辑

      crontab -e

    • 执行计划 (每天23点执行service iptables status命令)

      00 23 * * * service iptables status

    • 详情

      *  *  *  *  *  commad
      分 时  日 月 周  命令
      
      第`1`列表示分钟 `1~59`, 每分钟用 `*` 或者 `*/1`表示
      
      第`2`列表示小时 `1~23` (0表示0点)
      
      第`3`列表示日期 `1~31`
      
      第`4`列表示月份 `1~12`
      
      第`5`列表示星期 `0~6` (0表示星期日)
      
      第`6`列是要运行的命令
      

Reference

  • https://segmentfault.com/a/1190000019955399
  • https://wangchujiang.com/linux-command/c/gzip.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5569.html

(0)
上一篇 2023-05-03
下一篇 2023-05-04

相关推荐

  • CentOS 7 安装 Oracle 12c 步骤「终于解决」

    CentOS 7 安装 Oracle 12c 步骤「终于解决」CentOS 7 安装 Oracle 12c 步骤 catoop 2019-09-28 23:35:02 2170 收藏 4 分类专栏: 数据库 版权 本例操作系统版本:CentOS 7.7、数据库…

    2023-03-19
    128
  • 数据库发展史(下)

    数据库发展史(下)本篇文章为大家讲解AI原生数据库和其他类型数据库的发展历程。 AI原生数据库 近年来,随着AI(人工智能)技术的成熟和发展,AI与数据库的结合越来越紧密。为了提高数据库系统的智能化程度,使数据库系统…

    2023-04-12
    163
  • ODBCDataset odbc编程

    ODBCDataset odbc编程ODBCDataset ds = statement.query(); ReturnIfNotFmt1(!ds.null(), “%s”, (const char *)statement.getEr…

    2023-04-07
    151
  • Python s_irusr:优秀的字符串处理工具

    Python s_irusr:优秀的字符串处理工具在Python中,字符串是非常重要的数据类型之一。在各种应用场景中,我们经常需要进行字符串的处理、拼接、转换、比较等操作。这时候,字符串处理工具就会成为我们必不可少的工具之一。Python s_irusr正是其中一个优秀的字符串处理工具。下面,我们将从多个方面对其进行详细阐述:

    2024-01-05
    120
  • Mysql实战45讲 百度网盘_MySQL数据库基础

    Mysql实战45讲 百度网盘_MySQL数据库基础MySQL实战45讲 6,7,8

    2023-05-27
    137
  • 如何创建一个空列表

    如何创建一个空列表在Python编程语言中,列表是一种常见的数据类型,可以存储多个元素并且支持添加、删除和修改等操作。创建一个空列表,即没有任何元素的列表,是编写Python程序时经常需要用到的操作。

    2024-04-13
    88
  • Mysql 一主一从「建议收藏」

    Mysql 一主一从「建议收藏」1. 主从原理 1.1 主从介绍 所谓 mysql 主从就是建立两个完全一样的数据库,其中一个为主要使用的数据库,另一个为次要的数据库,一般在企业中,存放比较重要的数据的数据库服务器需要配置主从,这样

    2023-06-01
    135
  • 禧云数芯大数据平台技术白皮书「建议收藏」

    禧云数芯大数据平台技术白皮书「建议收藏」白皮书首次完整介绍了我司数据中台的数据资产管理、数据开放共享、开发协作调度、数据采集与迁移管理、数据可视化及自助分析、平台运维管控六大技术领域,并从抽象出来的平台支撑、数据管理和数据产品三大体系逐一拆

    2022-12-30
    136

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注