mysqldump的简单用法及其原理

mysqldump
生产备份:
  搭建主从: mysqldump -A -B -R --master-data=2 >backup.sql

  备份单库(包含建库语句): mysqldump -B 数据库名 --single-transaction >db.sql

  备份单库:(不包含建库语句):mysqldump db_name --single-transaction >db_date.sql

  备份表的数据及结构:mysqldump -u username -ppassword database --tables table_name1 table_name2 table_name3 >create_date.sql

  备份指定表的结构:mysqldump -u username -ppassword -d database --tables table_name1 table_name2 table_name3 >create_table.sql

  备份指定表的数据:mysqldump -u username -ppassword -t database --tables table_name1 table_name2 table_name3 >table_data.sql

  数据库中,某些表除外,其余表都需导出
    mysqldump -h IP -u username -ppassword --default-character-set=utf8
    --database database_name --ignore-table=database_name.table_name1
    --ignore-table=database_name.table_name2 --ignore-table=database_name.table_name3 >ignore_table.sql
恢复:
  对应好服务器、数据库
  source backup.sql;

mysqldump的原理:(可以在dump时自行打开general log,观察日志的输出)

  1. mysqldump的本质是通过select * from tab来获取表的数据的。

  2. START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */必须放到FLUSH TABLES WITH READ LOCK和UNLOCK TABLES之间,放到之前会造成START   TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */和FLUSH TABLES WITH READ LOCK之间执行的DML语句丢失,放到之后,会造成从库重复插入数据。

  3. mysqldump只适合放到业务低峰期做,如果备份的过程中数据操作很频繁,会造成Undo表空间越来越大,undo表空间默认是放到共享表空间中的,而ibdata的特性是一旦增大,就不会收缩。

  4. mysqldump的效率还是比较低下,START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */只能等到所有表备份完后才结束,其实效率比较高的做法是备份完一张表就提交一次,这样可尽快释放Undo表空间快照占用的空间。但这样做,就无法实现对所有表的一致性备份。

时间: 2024-10-18 05:07:05

mysqldump的简单用法及其原理的相关文章

xtrabackup的简单用法及其原理

xtrabackup 全备: innobackupex --defaults-file=$mysql_config --user=$user --password=$password --all-databases --no-lock --no-timestamp --stream=tar $backup_dir 2>$backup_dir/$log|gzip 1>$backup_dir/$str 恢复全备: innobackupex --apply-log --user-memory /ba

shell expect的简单用法【转】

用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下:  ##############################################  #!/usr/bin/expect  set timeout 30  spawn ssh -l username 192.168.1.1  expect "password:"  send "ispa

IOS 中block结构的简单用法

自从block出现之后,很多API都开始采用这样的结构,由此可见,block确实有许多优势存在,这里将一些简单用法总结如下: 一.如何声明一个block变量 我们通过^符号来声明block类型,形式如下: void (^myBlock)(); 其中第一个void是返回值,可以是任意类型,中间括号中^后面的是这个block变量的名字,我把它命名为myBlock,最后一个括号中是参数,如果多参数,可以写成如下样式: int (^myBlock)(int,int); 同样,你也可以给参数起名字: in

mysqldump的一些用法

mysqldump的一些用法: -d, --no-data -t, --no-create-info -R, --routines      Dump stored routines (functions and procedures). -n, --no-create-db 常用: mysqldump -q --single-transaction -A > all.sql   导出全部库 mysqldump -q --single-transaction -B db1 db2 > db12

iOS block-base 动画简单用法+关键帧动画设置线性变化速度的问题

本文转载至 http://www.tuicool.com/articles/aANBF3m 时间 2014-12-07 20:13:37  segmentfault-博客原文  http://segmentfault.com/blog/alan/1190000002411296 iOS的各种动画相漂亮,相信这是吸引很多人买iPhone的原因之一.不仅如此,这还是吸引我做iOS开发的一大原因,因为在iOS上给界面实现一些像样的动画实在是太轻松了! 这里就介绍一下iOS的block-based an

Android WIFI 简单用法

随着Wifi的普及,在开发App的时候对wifi的考虑越来越多了.例如程序的升级在wifi下可以省很多流量,在通信软件中的视频通话.可以实现高画质的传输等等,Android提供了WifiManager类来帮助开发者们管理Wifi.下面就简单来说一下WifiManager的简单用法把. 权限: 为了使用WfiManager 我们需要在Androidmanifest.xml 加入权限: //本例中使用了前两个.具体请按照需要添加权限. <uses-permission android:name=&quo

Android中资源文件中的字符串数组string-array简单用法

在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例子如下: 把相应的数据放到values文件夹的strings.xml文件里,或是其他自定义的xml中都可以,以下操作方法相同. <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="sports"> <item>足球<

expect简单用法

1 #!/usr/expect/bin/expect -f 2 3 4 set loginuser [lrange $argv 0 0] 5 set loginpass [lrange $argv 1 1] 6 set ipaddr [lrange $argv 2 2] 7 set port [lrange $argv 3 3] 8 set timeout [lrange $argv 4 4] 9 set from [lrange $argv 5 5] 10 set to [lrange $ar

Tcpdump 的简单用法

Tcpdump 的简单用法 tcpdump是Linux命令行下使用最广泛的网络分析工具,运行的时候会将网卡运行在混杂模式下,需要root权限才能执行 下面是几个比较常见的参数: -w  保持到指定的文件 -i  指定监听的网卡,缺省显示第一块网卡 -nn 以IP方式显示host -v  显示详细信息 -s  指定数据包大小,缺省是65535 -t  不显示时间 ,缺省是显示时间戳 -c  获取数据包数量,缺省不限制,需要用Ctrl+c来终止 下面是关于命令关键字的说明 1.主要包括host,ne