Chinaunix首页 | 论坛 | 博客
  • 博客访问: 327706
  • 博文数量: 104
  • 博客积分: 3025
  • 博客等级: 中校
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-02 11:12
文章分类

全部博文(104)

文章存档

2013年(1)

2011年(2)

2010年(30)

2009年(29)

2008年(8)

2007年(15)

2006年(17)

2005年(2)

我的朋友

分类:

2010-06-24 16:19:26

基本知识>>>>>>>

mysqldump(数据导出工具)
备份单个数据库
mysqldump 选项 db_name[table_name]
备份指定的数据库一个或者多个
mysqldump 选项 --database database-name1 [databases-name2]....  
备份所有的数据库
mysqldump 选项 --all-database  

链接选项:
-u : 指定用户名
-h : 指定服务器 ip 或者域名
-p(小写) : 指定密码
-P(大写) : 指定端口
eg:/usr/bin/mysqldump -u root -h db -P 3306 -p password user > /home/user.txt

输出内容选项:
--add-drop-database : 每个数据库创建语句之前加上 drop database 语句
--add-drop-table    : 每个表创建语句之前加上 drop table 语句
-n                  : 不包含数据库的创建语句
-t                  : 不包含数据表的创建语句
-d                  : 不包含数据

输出格式选项:
--compact           : 使输出结果简洁
-c --compact-insert : 使输出文件中的 insert 语句包含字段名
-T                  : 将数据库表中的数据备份为单纯的数据文本和建表 sql 俩个文件
NOTE: This only works if mysqldump is run on the same machine as the mysqld daemon.
--fields-terminated-by=name            (域分割符)
--fields-enclosed-by=name              (域引用符)
--fields-optionally-enclosed-by=name   (域可选引用符)
--fields-escaped-by=name               (转移字符)
eg:/usr/bin/mysqldump -u root -h db1 -P 3306 -p BBS user -T ./bak

字符集选项:
--default-character-set=name  : 设置导出的客户端字符集
eg:usr/bin/mysqldump --compact --default-character-set=utf8 -u root -p password user > test.txt

其他选项:
-F : 备份前刷新日志
-C : 压缩
-l : 给所有表加读锁(备份期间使用,使备份的数据保持一致性)

备份:
备份所有数据库:
mysqldump -u root -p --all-database > test.sql
备份数据库 test:
mysqldump -u root -p test > test.sql
备份数据库 test 下的 temp 表:
mysqldump -u root -p test demp > test.sql
备份数据库下的所有表为逗号分割的文本,备份到/temp
mysqldump -u root -p test -T /temp --fields-terminated-by ','

完全恢复:
mysql -u root -p < bakfile
注意:将备份恢复后数据并不完整,还需要将备份后执行的日志进行重做
mysqlbinlog binlog-file | mysql -u root -p***

举个完整的 mysqldump 备份和恢复的例子:
上午 9 点备份数据库
mysqldump -u root -p -l -F test > test.dmp
9 点半备份完毕,然后向数据库中插入数据
10 点数据库突然故障,数据无法访问,需要恢复备份
mysql -u root -p test < test.dmp
恢复后的数据并不完整,9 点半插入的数据并没有恢复
使用 mysqlbinlog 恢复自 mysqldump 备份以来的 binlog
mysqlbinlog binlogfilename | mysql -u root -p test

基于时间点恢复:
如果上午 10 点发生了误操作.可以用下面语句进行备份和 binlog 将数据库恢复到故障前:
mysqlbinlog --stop-date="2009-01-20 9:59:59" binlogfile | mysql -u root -p test
跳过故障的时间点,继续执后面的 binlog,完成恢复
mysqlbinlog --start-date="2009-01-20 9:59:59" binlogfile | mysql -u root -p test
基于位置恢复:
mysqlbinlog --start-date="2009-01-20 9:55:59" --stop-date="2009-01-20 10:05:00" binlogfile >test.sql
查看此文件,找出出错语句前后的位置号,例如是 368312,368315
mysqlbinlog --stop-position="368312" binlogfile | mysql -u root -p test
mysqlbinlog --start-position="368315" binlogfile | mysql -u root -p test




阅读(501) | 评论(0) | 转发(0) |
0

上一篇:mysql show status解释

下一篇:文件循环拷贝

给主人留下些什么吧!~~