mysql逻辑备份(mysql dump的使用)

mysqldump 属于MySQL客户端工具

mysqldump备份工具对于MyISAM存储引擎实现备份是温备份,对innodb存储引擎是可以实现热备份。

使用mysqldump备份数据库可以实现完全备份 + 二进制日志文件,这样也算是完全备份 + 增量备份。

首先将这个数据库备份下来这就是完全备份,然后以后数据的变化再每天进行对二进制日志进行备份这就是增量备份。

mysqldump命令的使用:

用法mysqldump  + 选项  +要备份的数据库

常用选项:

db_name:      备份指定数据库如果备份数据库中某张表,db_name [tb_name]  备份时候并不包含创建数据库命令,意味着以后想还原数据时候需要手动创建数据库。

比如我们备份一个叫做file的数据库:

假如Linux下面我们可以这样

mysqldump -u root -p file >/root/sql/file.sql

这里叫表示备份到/root/sql/目录下,命名为file.sql

windows下备份

mysqldump -u root -p file > D:\sqlback\file.sql

备份好之后我们就可以使用文本编辑器打开了

可以看到mysqldump的备份是将整个表中的数据备份为批量插入的insert语气。因此以后如果你删除了你所备份的数据库。想导入你备份的数据库是导入不了的,它里面没有创建数据库的命令。

例如我想尝试导入一个备份数据库:

在Linux下面直接切换到备份数据路径下执行mysql < file.sql

现在我们创建一个叫做china的数据库再将MySQL版中国省市区数据导入

mysql -u root -p china < MySQL版中国省市区数据表.sql

这样执行表示导入这个MySQL版中国省市区数据表.sql备份数据到我们的china库中

这种备份必须要在数据库在线的情况下才能备份,如果此时数据库非常繁忙时候时时刻刻都有写入操作的话,千万不能用这种方式进行备份,我们应该先进行锁表再备份。步骤如下:

首先使用mysql客户端连接上mysql以后,执行下面两句

lock tables;  #锁表,所有的表不能再写入数据。可以读数据

flush tables;   #将内存中的数据刷新保存到硬盘

或者执行flush tables with read lock;

备份完之后执行解锁表命令,务必记得

unlock tables;

--master-data=n

n的取值范围为0-2   0表示不记录二进制日志文件以及路径位置

1表示以change master to 的方式记录位置,可用于恢复启动后直接启动从服务器

2表示 以change master to的方式记录位置,但是默认为被注释掉

比如:

mysqldump -u root -p --master-data=2 file >D:\sqlback\file `date + %F-%H-%M-%S`.sql

这里表示备份file库到指定路径下面以当前时间命名

如果报错:mysqldump: Error: Binlogging on server not active

表示没有开启二进制日志,需要在配置文件开启

通过这种方式备份以后。我们可以看到sql文件周会有一行

--change master to master_log_file=‘当前二进制日志文件名‘ master_log_pos=事件日志位置‘

下次从二进制日志中备份数据时候就可以从这个二进制文件的这个位置往下备份就行了

--lock-tables  表示自动锁定所有表,如果我们只是备份单个库而锁定所有表的话,这样是不合理的,我们可以使用这个选项。单独登陆mysql客户端锁定单张表,再进行备份

--flush_logs :备份之前自动执行日志刷新到磁盘

如果指定库中所有表的存储引擎均为innodb可以使用

--single-transaction  启动热备份,启动热备份就无需我们手动锁表

备份多个库:

--all-databases;  备份所有库

--databases db_name1,db_name2,,,,, ;   备份多个库

这两个命令备份会创建数据库命令,因此还原时候就不需要再手动创建了

例如:

mysqldump -u root -p --single-transaction --all-databases --master-data = 2 --flush-logs >D:\sql back\all.sql

这个表示我们将使用热备份将所有的库备份到D盘下面,命名为all.sql

--events  : 事件

--routines :存储过程,存储函数

--triggers:触发器

时间: 2024-10-24 00:05:26

mysql逻辑备份(mysql dump的使用)的相关文章

MySQL 逻辑备份神器

简介: Mydumper.Myloader 是一个第三方的.开源的 MySQL 逻辑备份工具. 支持多线程,比起 mysqldump 要快很多,也能解决 innobackupex 备份工具对 MyISAM 引擎备份的不便. 多线程快速逻辑备份,支持快照功能. 下载地址:https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz 一.安装 Mydumper shell > yum -y install gcc g

(4.12)mysql备份还原——mysql逻辑备份之mysqldump

关键词:mysql逻辑备份介绍,mysqldump 1.mysql逻辑备份介绍 [1.1]备份内容:数据库的结构定义语句+数据内容的插入语句,备份出来的文件可以编辑 [1.2]使用场景:数据量较少的库,比较适合100G数据量以内的 逻辑备份的特点 (1)sql语句组成的文件,可以编辑截取部分单独使用. (2)备份文件比物理文件小 (3)可以细化到表/表的内容 (4)速度慢 (5)可以跨平台恢复/迁移 2.逻辑备份工具 [1.1]mysqldump(单线程).mysqlpump(多线程,5.7以后

mysql逻辑备份2种方案

mysql逻辑备份方案: 针对db进行逻辑备份(由于数据量较小,正在生产环境使用). mysql_backup.sh #!/bin/bash date=`date +%F-%H-%M` mkdir /opt/backup/${date} -p usesize=`du -s /opt/mysql |cut -f 1` biaozhun=`df  /opt/ |awk 'END{print ("'$usesize'"+$3)/$2*100+0.5}'|cut -d. -f1` ip=`gr

MySQL逻辑备份利器-mydumper

关于mydumper的简介和下载请访问:https://launchpad.net/mydumper 简言之,mydumper是多线程逻辑备份,对于表和数据量很大的情况下,建议使用mydumper提高备份效率,比mysqldumper要快很多. 我为什么要用mydumper?是基于某个需求,比如我需要把某个库下的所有按日期分表的表备份并导入到新实例?如何实现? table_20170101 table_20170102 ...... table_20171231 一共三百多张表 开始我去尝试my

MySQL逻辑备份mysqldump

一个用mysqldump做逻辑备份的小脚本 用于小数据量的备份,全库,按日期,按库,按表,进行分类 # date -s "2015/01/01" && bash mybackup.sh #!/bin/bash # 使用mysqldump进行逻辑备份 # 目录结构/backup/日期 # 每隔7天删除旧的备份目录 db_backup_root="/backup" today=`date +%Y%m%d` old_backup_dir=`date -d

mysql逻辑备份与还原工具mysqldump

(一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所有数据库 某个或某几个数据库 某个数据库中的表 某个数据库中的表的某些记录 mysqldump的备份结果集有两种文件:一种是将数据转换为标准的SQL语句,另一种是按照指定的分隔符,输出为特定格式的平面文件. (二)mysqldump的用法 可以直接使用mysqldump命令查看mysqldump的用

(十二)MySQL逻辑备份mysqldump

(1)简介 语法 mysqldump -h服务器 -u用户名 -p密码 [-P端口号] [参数] 数据库名 >备份文件.sql 关于数据库: -A,--all-databases 所有库,会生成DDL语句(创建数据库的语句和进入数据库的语句,导入的时候不需要指定数据) test 数据库,没有指定其它参数,导入到数据的时候需要指定导入到哪个数据库,不会生成创建数据库的DDL语句,mysql -uroot -predhat testdb <1.sql test t1 t2 test数据库的表t1和

mysql逻辑备份

逻辑备份一般用于数据迁移或者数据量很小事,逻辑备份采用的是数据导出的备份方式. 如果需要导出所有数据库,命令如下: mysqldump -uroot -p --single-transaction -A>all.sql 如果只是要导出其中的某几个数据库,则采用如下命令: mysqldump -uroot -p --single-transaction -B test1 test2>test1_test2.sql 如果要是导出的是一个库中的某几个表,可采用如下命令: mysqldump -uro

mysql多种备份方式比较及实现

Mysql备份 MySQL的备份和还原: 备份:存放为副本-->数据备份 RAID1,RAID10:保证硬件损坏而不会业务中止,不能保证逻辑上的损害 例如:DROP TABLE mydb.tb1;如果使用raid1,则两边都删除了,则需要备份 备份类型 热备份.温备份和冷备份 热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 物理备份和逻辑备份 物理备份:复制数据文件: 逻辑备份:将数据导出至文本文件中: 完全备份.增量备份和差异备份 完全备份:备份全部