mysql数据库备份 mysqldump
一、--all-databases
/application/mysql3307/bin/mysqldump -uroot -S /application/mysql3307/logs/mysql.sock -p123456 -R -E --all-databases | gzip > database_`date '+%Y-%m-%d-%H:%M:%S'`.sql.gz
二、--databases
/application/mysql3307/bin/mysqldump -uroot -S /application/mysql3307/logs/mysql.sock -p123456 --databases wohaoshuai mysql | gzip > database_`date '+%Y-%m-%d-%H'`.sql.gz
三、不指定--databases
/application/mysql3307/bin/mysqldump -uroot -S /application/mysql3307/logs/mysql.sock -p123456 wohaoshuai | gzip> database_`date '+%Y-%m-%d-%H'`.sql.gz
1、当对一个数据库进行备份时,--databases允许省略,但是省略后导致的是备份文件名.sql中没有create database和use语句,那么恢复备份文件时,必须指定一个默认的数据库名,由此服务器才知道备份文件恢复到哪个数据库中;由此可以导致你可以使用一个和原始数据库名称不同的数据库名。
四、调用mysqldump备份某个数据库中的某几张表:mysqldump –u用户名 –p 数据库名 表名1 表名2 表名3… > 备份文件名.sql(若只导出表结构需要加上--no-data)
1、 /application/mysql3307/bin/mysqldump -uroot -S /application/mysql3307/logs/mysql.sock -p123456 wohaoshuai(数据库) wohaoshuai1(表) wohaoshuai2(表) | gzip > database_`date '+%Y-%m-%d-%H:%M:%S'`.sql.gz
在备份库的时候用了--databases则恢复不用加数据库名(经后面测试,发现如果加上--databases后面是否跟表名都会会备份库中的所有表),否则要加数据库名。
此处有一个问题是,如果也存在wohaoshuai1和wohaoshuai2这个数据库名那么用此备份命令会是什么样子呢?
此时切记不要用--databases,否则就备份成了wohaoshuai数据库和wohaoshuai1和wohaoshuai2三个数据库了。因此建议:
备份库的时候尽量都加上--databases这样恢复的时候就直接恢复就可以,备份表的话就不要加了,但是恢复的话就要记得指定库。
备份表恢复:
/application/mysql3309/bin/mysql -uroot -S /application/mysql3309/logs/mysql.sock -p zengliangtest <database2_2018-09-08-20.sql
五、恢复sql格式的备份文件
1、通过mysqldump备份的文件,如果用了 --all-databases或--databases选项,如果是全备也可以两者都加上,则在备份文件中包含create database和use语句,故并不需要指定一个数据库名去恢复备份文件。
gzip -d 备份文件.sql.gz
a、mysql -uroot -p123456 < 备份文件.sql
b、在mysql命令下,用source命令导入备份文件:
source 备份文件.sql(需要在sql文件目录下打开mysql然后source sql文件,否则就要用绝对路径)
注意:恢复后新增的表不会被覆盖,但备份时存在的表备份后的数据会被冲掉。
2、如果通过mysqldump备份的是单个数据库,且没有使用--databases选项,则备份文件中不包含create database和use语句,那么在恢复的时候必须先创建数据库。
在shell命令下:
mysqladmin -u 用户名 -p create 数据库名 //创建数据库
mysql -u 用户名 -p 数据库名 < 备份文件.sql
在mysql命令下:
create database if not exist 数据库名;
use 数据库名;
source 备份文件.sql
注意:只能在cmd界面下执行source命令,不能在mysql工具里面执行source命令,会报错,因为cmd是直接调用mysql.exe来执行命令的。
六、增量备份
1、在mysql配置文件中打开binlog日志功能,在my.cnf中加入
log-bin=mysql-bin(也可指定二进制日志生成的路径,如:log-bin=/opt/Data/mysql-bin)
server-id=1
2、mysqldump增量备份
全备标准化语句:
/application/mysql/bin/mysqldump -upy_rsync_155 -p -h192.168.0.153 -A -B -F -R --master-data=2 --single-transaction --events|gzip >/application/data/backup/database_`date '+%Y-%m-%d-%H:%M:%S'`.sql.gz
/application/mysql/bin/mysqldump -upy_rsync_155 -p -h192.168.0.153 -A(相当于--alldatabases) -B(相当于--databases) -F(相当于flush-logs) -R(存储过程时加上) --master-data=2 --single-transaction(锁行,如果存储引擎是myiasm则加--lock-all-tables) --events|gzip >/application/data/backup/database_`date '+%Y-%m-%d-%H:%M:%S'`.sql.gz
--flush-logs为结束当前日志,生成新日志文件;
--master-data=2 选项将会在输出SQL中记录下完全备份后新日志文件的名称,用于日后恢复时参考,例如输出的备份sql文件中含有:
CHANGE MASTER TO MASTER_LOG_FILE=’MySQL-bin.000002′, MASTER_LOG_POS=106;
刷新二进制日志:
/application/mysql3308/bin/mysqladmin -uroot -S /application/mysql3308/logs/mysql.sock -p123456 flush-logs
3、恢复完全备份
/Registry/fof2v1_mysql/mysql3312/bin/mysql -uroot -p -S /Registry/fof2v1_mysql/mysql3312/logs/mysql.sock -f(最好加上) <py_fof_2_1.sql
4、恢复增量备份
/application/mysql3309/bin/mysqlbinlog mysql-bin.000002 | /application/mysql3309/bin/mysql -uroot -S /application/mysql3309/logs/mysql.sock -p123456 注意此次恢复过程亦会写入日志文件,如果数据量很大,建议先关闭日志功能
5、二进制文件恢复详解https://www.cnblogs.com/kevingrace/p/5907254.html
七、myiasm 和 innodb锁表参数详解
1、--single-stransaction是创建一个一致性的快照通过dump 所有的表到一个单独的transaction,添加这个参数后其实会默认加一个锁,用户在备份期间可以增删改操作,但不能修改表结构innodb在备份过程中,虽然其他线程也在写数据,但是dump出来的数据能保证是备份开始时那个binlog pos的数据。
2、myisam引擎要保证得到一致性的数据的话,他是如何实现的呢?
它是通过添加--lock-all-tables,这样在flush tables with read lock后,直到整个dump过程结束,断开线程后才会unlock tables释放锁(没必要主动发unlock tables指令),整个dump过程其他线程不可写,从而保证数据的一致性
八、顺便说一下,mysqldump默认是lock-tables的。
当执行mysqldump -uroot -p123 -h192.131.1.9 -R vgos_statnum>11.dmp 的时候,lock整个vgos_statnum库
当执行mysqldump -uroot -p123 -h192.131.1.9 -R vgos_statnum t1>11.dmp 的时候,没有lock整个vgos_statnum库,lock的是t1表。
九、
1、-E或者 --events:导出数据库中的事件
2、-R 或者--routines:导出数据库中存储过程以及自定义函数
十、参数详解
总结一下:
-t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)
-n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)
-R (--routines:导出存储过程以及自定义函数)
-E (--events:导出事件)
--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)
-B (--databases:导出数据库列表,单个库时可省略)
--tables 表列表(单个表时可省略)
①同时导出结构以及数据时可同时省略-d和-t
②同时 不 导出结构和数据可使用-ntd
③只导出存储过程和函数可使用-R -ntd
④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
⑤只导出结构&函数&事件&触发器使用 -R -E -d
mysql数据库备份 mysqldump的更多相关文章
- MySQL数据库备份--mysqldump用法
导出要用到MySQL的mysqldump工具,基本用法是: shell> mysqldump [OPTIONS] database [tables] 如果你不给定任何表,整个数据库将被导出. ...
- 在给mysql数据库备份时,报错: mysqldump: Got error: 145: Table '.\shengdaxcom\pre_forum_thread' is marked as c rashed and should be repaired when using LOCK TABLES
在给mysql数据库备份时,报错: mysqldump: Got error: 145: Table '.\shengdaxcom\pre_forum_thread' is marked as cra ...
- TODO:MongoDB MySQL数据库备份
TODO:MongoDB MySQL数据库备份 1. MongoDB使用命令备份 mongodump进行整个数据库备份,主要用到的命令参数: -d 要备份的数据库 -o 输出的路径 ./mongodu ...
- Java实现MySQL数据库备份(二)
权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MyS ...
- Java实现MySQL数据库备份(一)
下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...
- MySQL数据库备份命令
原文参考:MySQL数据库备份的命令 - 司南 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql备 ...
- MySQL数据库备份和还原的常用命令
其实很多情况下mysql备份就是采用了这些命令,例如: mysql导入和导出数据 linux自动定时备份web程序和mysql数据库 备份MySQL数据库的命令 mysqldump -hhostnam ...
- Java实现mysql数据库备份
Runtime是一个与JVM运行时环境有关的类,这个类是Singleton的. Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. ...
- Mysql数据库备份和还原常用的命令
Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下 ...
随机推荐
- Cmder-控制台模拟器
Cmder是一个软件包,由于在Windows上缺少漂亮的控制台模拟器而纯粹受挫. 它基于令人惊叹的软件,并采用Monokai配色方案和自定义快速布局,从一开始就看起来很性感. 首先,展示一下界面,和W ...
- DotNetBar滚动条的疑似BUG
1.重现过程,在winform窗体上拖一个VScrollBarAdv 2.Button里点击跟踪代码 3.Value居然是-5,,而不是0,这是直接赋值,不是手动拖的呀. 4.解决办法,将LargeC ...
- 支付宝app支付流程
- scapy官方文档
https://thepacketgeek.com/scapy-p-04-looking-at-packets/ http://biot.com/capstats/bpf.html filter语 ...
- linux 网络之 bond 网卡模式
Linux bond模式通过多个网卡绑定技术既能增加服务器的可靠性,又增加了可用网络宽带,为用户提供不间断的网络服务: 七种bond模式: 第一种模式:mod=0 ,即:(balance-rr) Ro ...
- JavaJavaScript之内存与变量初始化
0.搞清三个概念:预加载与执行期:js变量存储(栈区与堆区):js变量的类型(引用类型(对象)与基本数据类型); JS在预编译时,对于函数的预加载方面,浏览器仅仅选择编译声明式函数(function ...
- CentOS 6.8 部署django项目二
CentOS 6.8 部署django项目一 1.项目部署后发现部分页面的样式丢失,是因为在nginx中配置的static路径中未包含. 解决:在settinfs.py中添加: STATIC_ROOT ...
- plsql developer无法识别32位oracle问题如何解决?
1.登录PL/SQL Developer这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...
- C# .NET Winform等程序一运行就闪退 不同环境 换到其他电脑,例如XP之类的解决方法。
我现在写标题就跟写tag一样,方便大家索引. 有时候经常会把.NET写的程序拿到其他客户机,发现直接闪退,啥也不报错..那就很蛋疼,又不可能去装IDE来检测是吧,网上还有很多说啥看系统日志的,什么图标 ...
- 005_git专题
一.仓库管理 ➜ gittest git:(master) git config --local user.name "arunguang" ➜ gittest git:(mast ...