MYSQL备份工具-mysqldump

介绍

mysqldump 是文本备份还是二进制备份

它是文本备份,如果你打开备份文件你将看到所有的语句,可以用于重新创建表和对象。它也有 insert 语句来使用数据构成表。

语法

  • mysqldump 的语法是什么?

mysqldump -u [uname] -p'[pass]' -h[host] -P[port] –databases [dbname][dbname2] > [backupfile.sql]

  • 使用 mysqldump 怎样备份所有数据库?

mysqldump -u root -p'mypassword' –all-databases > backupfile.sql

  • 使用 mysqldump 怎样备份指定的数据库?

mysqldump -u root -p –databases school hospital > backupfile.sql

  • 使用 mysqldump 怎样备份指定的表?

mysqldump –u root –p'mypassword' -h localhost databasename table_name_to_dump table_name_to_dump_2 > dump_only_two_tables_file.sql

  • 我不想要数据,怎样仅获取表结构(DDL)?

mysqldump -u root -p –all-databases –no-data > backupfile.sql

  • 一次 mysqldump 备份花费多长时间?

这依赖于数据库大小,100 GB 大小的数据库可能花费两小时或更长时间

  • 怎样备份位于其他服务器的远程数据库?

mysqldump -h 172.16.25.126 -u root -p'pass' dbname > dbname.sql

  • 如何从一个库同步到另一个库? mysqldump -u #user# -h #host# -P #port# -p'#pwd#' #dbName# --single-transaction | mysql -u #targtuser# -h #targethost# -P #port# -p'#pwd#' #dbNam#

  • routines 选项的含义是什么?

通过使用 -routines 产生的输出包含 CREATE PROCEDURE 和 CREATE FUNCTION 语句用于重新创建 routines。如果你有 procedures 或 functions 你需要使用这个选项

  • 怎样列出 mysqldump 中的所有选项?

mysqldump –-help

  • mysqldump 中常用的选项是? --all-databases --databases --routines --single-transaction (它不会锁住表) – 一直在 innodb databases 中使用 --master-data – 复制 (现在忽略了) --no-data – 它将 dump 一个没有数据的空白数据库

默认所有的 triggers 都会备份吗?

是的

single transaction 选项的含义是什么?

–singletransaction 选项避免了 innodb databases 备份期间的任何锁,如果你使用这个选项,在备份期间,没有锁

使用 mysqldump 备份的常用命令是什么?

nohup mysqldump –socket=mysql.sock –user=user1 –password=pass –single-transaction –flush-logs –master-data=2 –all-databases –extended-insert –quick –routines > market_dump.sql 2> market_dump.err &

  • 使用 mysqldump 怎样压缩一个备份? 注意: 压缩会降低备份的速度 Mysqldump [options] | gzip > backup.sql.gz

  • mysqldump 备份大数据库是否是理想的?

依赖于你的硬件,包括可用的内存和硬盘驱动器速度,一个在 5GB 和 20GB 之间适当的数据库大小。 虽然有可能使用 mysqldump 备份 200GB 的数据库,这种单一线程的方法需要时间来执行。

  • 怎样通过使用 mysqldump 来恢复备份? 使用来源数据的方法 Mysql –u root –p < backup.sql

  • 在恢复期间我想记录错误到日志中,我也想看看恢复的执行时间?

Time Mysql –u root –p < backup.sql > backup.out 2>&1

  • 怎样知道恢复是否正在进行?

显示完整的进程列表

如果数据库是巨大的,你不得不做的事情是?

使用 nohup 在后台运行它

我是否可以在 windows 上使用 mysqldump 备份然后在 linux 服务器上恢复?

是的

我怎么传输文件到目标服务器上去? 使用 scp 使用 sftp 使用 winscp

  • 如果我使用一个巨大的备份文件来源来恢复会发生什么?

如果你的一个数据库备份文件来源,它可能需要很长时间运行。处理这种情况更好的方式是使用 nohup 来在后台运行。也可使用在 unix 中的 screen 代替

默认情况下,mysqldump 包含 drop 数据库吗?

你需要添加 –add-drop-database 选项

  • 怎样从一个多数据库备份中提取一个数据库备份(假设数据库名字是 test)?

sed -n '/^-- Current Database: test/,/^-- Current Database: `/p' fulldump.sql > test.sql

  • 结合Linux的cron命令实现定时备份

比如需要在每天凌晨1:30备份某个主机上的所有数据库并压缩dump文件为gz格式,那么可在/etc/crontab配置文件中加入下面代码行:

30 1 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /mnt/disk2/database_date '+%m-%d-%Y'.sql.gz 前面5个参数分别表示分钟、小时、日、月、年,星号表示任意。date '+%m-%d-%Y'得到当前日期的MM-DD-YYYY格式。

  • 一个完整的Shell脚本备份MySQL数据库示例 #vi /backup/backup.sh
#!bin/bash
cd /backup
echo "You are in backup dir"
mv backup* /oldbackup
echo "Old dbs are moved to oldbackup folder"
File = backup-$Now.sql
mysqldump -u user -p password database-name > $File
echo "Your database backup successfully completed"

 上面脚本文件保存为backup.sh,并且系统中已经创建两个目录/oldbackup和/backup。每次执行backup.sh时都会先将/backup目录下所有名称为backup开头的文件移到/oldbackup目录。

  为上述脚本制定执行计划如下:

#crontab -e 30 1 * * * /backup.sh

转载于:https://my.oschina.net/guoenzhou/blog/1858013

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值