mysql 备份

数据库是否能够继续提供服务

 

热备份

在线备份,能读能写
温备份能读不能写
冷备份离线备份
备份数据库对象物理备份直接复制数据文件,直接复制数据文件,速度较快
逻辑备份

将数据导出至文件中,必要时将其还原(也包括备份成sql语句的方式)。

将数据导出到文本文件中或其他格式的文件中。有MySQL服务进程参与,相比物理备份而言速度较慢;可能丢失浮点数精度;但可以使用文本工具二次处理;可以跨版本和跨数据库系统进行移植

是否备份整个数据集完全备份备份从开始到某段时间的全部数据
差异备份备份自完全备份以来变化的数据
增量备份备份自上次增量备份以来变化的数据

mysqldump:逻辑备份工具。要求mysql服务在线。MyISAM(温备),InnoDB(热备)

lvm快照:几乎热备。注意点是:先flush table、lock table、创建快照、释放锁、复制数据。因为要先flush table和lock table,这对于                    MyISAM来说很简单很容易实现。但对于InnoDB来说,因为事务的原因,锁表后可能还有缓存中的数据在写入文件中,所以                    应该监控缓存中的数据是真的已经完全写入数据文件中,之后才能进行复制数据。
xtrabackup:开源。MyISAM(温备),InnoDB(热备),速度较快

cp:冷备

mysqldump

mysqldump默认会从配置文件中的mysqldump段读取选项,配置文件读取的顺序:

/etc/my.cnf --> /etc/mysql/my.cnf --> /usr/local/mysql/etc/my.cnf --> ~/.my.cnf

选项 -A          --all-databases 导出全部数据库
  -B         --databases导出几个数据库。参数后面所有名字参量都被看作数据库名
               --ignore-table不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……
               --max_allowed_packet服务器发送和接受的最大包长度
 -n           --no-create-db

只导出数据,而不添加CREATE DATABASE 语句。

指定了--databases或者--all-databases选项时默认会加上数据库创建语句,该选项抑制建库语句的输出

 -t            --no-create-info

只导出数据,而不添加CREATE TABLE 语句。

 

 -d           --no-data不导出任何数据,只导出数据库表结构
               --opt

这只是一个快捷选项,等同于同时添加 –add-drop-tables –add-locking –create-option –disable-keys –extended-insert –lock-tables –quick –set-charset 选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 –skip-opt 禁用。注意,如果运行 mysqldump 没有指定 –quick 或 –opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题

 -R      --routines导出存储过程以及自定义函数。
 --add-drop-table每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)
 --single-transaction该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储 引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK  TABLES 会使任何挂起的事务隐含提交。要想导出大表的 话,应结合使用--quick 选项。
 --quick, -q不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。
 --tables覆盖--databases (-B)参数,指定需要导出的表名
 --triggers导出触发器。该选项默认启用,用--skip-triggers禁用它。
 --where, -w只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来
   

1 导出一个数据库的结构

mysqldump -d dbname -uroot -p > dbname.sql

2 导出多个数据库的结构

mysqldump -d -B dbname1 dbname2 -uroot -p > dbname.sql

3 导出一个数据库中数据(不包含结构)

mysqldump -t dbname -uroot -p > dbname.sql

4 导出多个数据库中数据(不包含结构)

mysqldump -t -B dbname1 dbname2 -uroot -p > dbname.sql

5 导出一个数据库的结构以及数据

mysqldump dbname -uroot -p > dbname.sql

6 导出多个数据库的结构以及数据

mysqldump -B dbname1 dbname2 -uroot -p > dbname.sql

7 导出一个数据库中一个表的结构

mysqldump -d dbname1 tablename -uroot -p > tablename.sql

8 导出一个数据库中多个表的结构

mysqldump -d -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql

9 导出一个数据库中一个表的数据(不包含结构)

mysqldump -t dbname1 tablename -uroot -p > tablename.sql

10 导出一个数据库中多个表的数据(不包含结构)

mysqldump -t -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql

11 导出一个数据库中一个表的结构以及数据

mysqldump dbname1 tablename -uroot -p > tablename.sql

12 导出一个数据库中多个表的结构以及数据

mysqldump -B dbname1 --tables tablename1 tablename2 -uroot -p > tablename.sql

 

存储过程&函数操作

1 只导出存储过程和函数(不导出结构和数据,要同时导出结构的话,需要同时使用-d)

mysqldump -R -ndt dbname -u root -p > dbname.sql

2 只导出事件

mysqldump -E -ndt dbname -u root -p > dbname.sql

3 不导出触发器(触发器是默认导出的–triggers,使用–skip-triggers屏蔽导出触发器)

mysqldump --skip-triggers dbname1 -u root -p > dbname.sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤舞飘伶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值