MySQL数据库备份(2)2013613

把数据库从一个服务器复制到另一个服务器

如果把输出通过网络直接写到另一个服务器区,就不需要使用转储文件作为媒介了。

% mysqldump --databases sampdb |mysql -h boa.snake.net

如果你从本地无法访问远程MySQL服务器但能够通过登入远程主机的方法去访问它:

mysqldump --databases sampdb|ssh boa.snake.net mysql

使用--compress选项能改善性能。

检查和修复MyISAM和InnoDB数据库的几种常用办法:
1.发出check table 和repair table语句。也可以使用mysqlcheck程序,它将替你连接服务器并发出那些语句

2.使用myisamchk程序,它将直接在数据表文件上操作。

两种方法的比较:

 mysqlcheck程序可以在MySQL服务器关停时使用。而create table等职能在MySQL服务器正在运行时使用。

你可以加大myisamchk程序使用的缓冲区,从而加快数据表的检查和修复速度。

check table 来用检查MyISAM和InnoDB数据表。还可以检查视图,archive数据表和csv数据表

repair table 提供了一个使用MySQL服务器的数据表修复能力的接口。能用来修复MyISAM和ARCHIVE数据表。

mysqlcheck的用法:

mysqlcheck sampdb:程序将检查该数据库里的所有数据表

mysqlcheck sampdb president memeber程序将只检查哪些数据库。

如果给出了--databases选项,随后的参数将被解释为数据库名。

如果给出了--all-databases选项,mysqlcheck程序将检查所有数据库里的所有表数据。

用myisamchk 程序检查和修复数据表:

它可以用来检查和修复MyISAM数据表。myisamchk程序通过直接访问数据表文件来完成其工作,所以再开始使用这个工具之前最好先关停MySQL服务器以防止它和myisamchk程序同时访问一个数据表。

myisamchk程序默认进行的“普通”检查已经可以查出绝大多数问题。如果它报告说没有错误,你仍然怀疑可以使用--medium-check选项再做一个检查,时间花的更长但是更彻底。

--extend-check选项进行“高级”检查。这将花费非常多的时间,但最全面彻底。

如果myisamchk程序报告数据表有错误,应该尽量修复它。

用myisamchk程序修复数据表

在使用myisamchk修复数据表的时候应该先备份一份数据。

1.首先尝试使用 --recover选项来修复数据表,还可以加上--quick选项。 只根据索引未见来修复数据表,不涉及数据文件。

2.如果问题没有解决,去掉--quick选项后再执行一次这个命令。

3.使用--safe-recover修复模式。

让myisamchk程序运行得更快

可以设置几个变量

key_buffer_size 用来存在所以快的缓冲区的长度

read_buffer_size用来完成读操作的缓冲区的长度

sort_buffer_size用来完成排序操作的缓冲区长度

write_buffer_size用来完成写操作的缓冲区的长度。

恢复数据表

恢复一个数据表往往比恢复一个数据库更困难。

mysqlbinblog程序可以处理多个二进制日志文件,可以限制它自己只输出与某个给定数据库有关的语句或者是在给定时间区间被执行过的语句。

如果想恢复数据库的备份是在创建所有二进制日志文件之前完成的,你还需要执行所有二进制日志文件的内容。

mysqlbinlog binlog.[0-9]*|mysql

也可以先编辑为一个临时文件

%mysqlbinlog binlog.[0-9]*>text_file

%mysql <text_file

这个方法很有用,因为如果你是应为delete drop table等语句造成的数据丢失,在开始执行日志文件的内容之前,必须先去掉这些语句。

如果想重新执行从2007-10-30 16:50:36那一刻开始被记载道二进制日志里的修改,可以使用mysqlbinlog程序的--start-datetime选项来给出那个时间。

mysqlbinlog --start-datetime = "2007-10-30 16:50:36" binlog.[0-9]*|mysql 

mysqlbinlog程序还有一个相应的--stop-datetime 选项可以用来给出一个截止时间。

原文地址:https://www.cnblogs.com/evencao/p/3134726.html