mysql自带备份还原工具

mysql自带的mysqldump备份工具,将制定的数据库或表导出都一样的sql文件,以便备份或数据还原,但如果数据量很大,会耗费会很长时间,且锁表。 对于大规模备份,考虑使用物理方法,如:mysqlbackup(适于InnoDB、MyISAM及其他表)、mysqlhotcopy(适于MyISAM表)、Xtrabackup(适于InnoDB及MyISAM表)、LVM(适于各类表)等。
一、数据备份
mysqldump常用备份实例
1.导出所有数据库
mysqldump   -uroot  -pabc123  --all-databases > all.sql
2. 出整个数据库
mysqldump -u 用户名 -p  数据库名 > 导出的文件名
mysqldump -uroot  -pabc123   test> test.sql
导出整个数据库的表结构 增加-d参数
mysqldump -uroot  -pabc123  -d  test> test.sql
3. 导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -uroot  -pabc123   test  user> user.sql
导出一个表的表结构。增加-d参数
mysqldump -uroot  -pabc123   -d test  user> user.sql
4. 导出部分数据, 加上--where参数
mysqldump -uroot  -pabc123  test score --where="score>=60" > score.sql
5.导出 一个表的部分字段
mysqldump -uroot  -pabc123   -e "set names 'utf8';select realname,card_number,company_name from Database.name_v where type=2 and status=1" >name_v.sql -p
注:常用参数说明:
--add-drop-database  在CREATE DATABASE前DROP DATABASE
--add-drop-table 在每个create语句之前增加一个drop table
--add-drop-trigger   在CREATE TRIGGER 前DROP TRIGGER
--default-character-set=charset     指定导出数据时采用何种字符集
--disable-keys    在 INSERT 语句的开头和结尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。
--lock-all-tables / -x    提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。
  --lock-tables   它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项。
--no-create-info / -t    只导出数据,而不添加 CREATE TABLE 语句
--no-data /-d    不导出任何数据,只导出数据库表结构。
--routines /-R   导出存储过程以及自定义函数。
--single-transaction  在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。 本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。 要想导出大表的话,应结合使用 --quick 选项。 
--triggers   同时导出触发器, 用 --skip-triggers 禁用它
--events   备份的数据库备份事件
备份 MyISAM 表:
mysqldump   -uroot  -pabc123  --default-character-set=utf8 --opt --extended-insert=false   --triggers -R --hex-blob -x db_name > db_name.sql
备份 Innodb 表:
mysqldump   -uroot  -pabc123  --default-character-set=utf8 --opt --extended-insert=false  --triggers -R --hex-blob --single-transaction db_name > db_name.sql
实现在线备份, 可以使用 --master-data 参数来实现
mysqldump   -uroot  -pabc123   --default-character-set=utf8 --opt --master-data=1   --single-transaction --flush-logs db_name > db_name.sql   
在一开始的瞬间请求锁表,然后就刷新binlog了,而后在导出的文件中加入CHANGE MASTER 语句来指定当前备份的binlog位置,如果要把这个文件恢复到slave里去,就可以采用这种方法来做。
二、数据还原
用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。
1. mysql   -uroot  -pabc123  testdb < db.sql
这种方法很容易产生乱码,因为:
a,导出数据库时,你如果忘了设置导出字符集的话,在导入的时候,就有可能会出问题.
b,假如,你导出时设置导出时设置了utf8的编码,但是你又把你的数据库现在的字符集改成了gb2312的.这样又会乱码。
2. 用 source 语句
mysql  -uroot  -pabc123
>use testdb  ;
>set names utf8;  #这里的字符集根你的将要导入的数据库的字符集一至。
>source db.sql;

参考文章:
1. mysqldump备份还原和mysqldump导入导出语句大全详解
2. mysqldump命令详解
3. MySQL数据备份之mysqldump使用
4. mysql 利用binlog增量备份,还原实例

你可能感兴趣的:(Mysql)