您的位置 首页 新品

MySQL MyISAM和InNodb备份与康复技巧

1. 为什么要备份数据库对数据库来说,最重要也最容易被忽视的就是备份。由于不可预测性,偶然的事件可能会导致非常惨重的损失。数据越是重要,

1. 为什么要备份数据库

对数据库来说,最重要也最简单被忽视的便是备份。由于不行猜测性,偶尔的事情可能会导致十分沉重的丢失。

数据越是重要,数据的改变越频频,备份越发需求常常进行。

备份周期依据不同事务的需求能够调整,可是不能忽视备份。

备份时最好也备份my.cnf或my.ini,这样能够保存你曾经的装备参数。

2. MyISAM 表备份/康复战略

2.1. 文件热备份

2.1.1. 仿制文件

由于MySQL表保存为文件办法,很简单备份。要想坚持备份的一致性,对相关表履行LOCK TABLES操作,然后对表履行FLUSH TABLES。

你只需求读确定;这样当你仿制数据库目录中的文件时,答应其它客户持续查询表。需求FLUSH TABLES句子来保证开端备份前将一切激活的索引页写入硬盘。

规范流程:锁表-》改写表到磁盘-》仿制文件-》解锁。

2.1.2. 运用sql 句子备份

假如你想要进行SQL等级的表备份,你能够运用SELECT INTO …OUTFILE或BACKUP TABLE。关于SELECT INTO …OUTFILE, 输出的文件不能先存在。

关于BACKUP TABLE也如此,由于掩盖完好的文件会有安全危险。

这两种备份办法,假如输出文件有重名的话,最好把重名文件移除。

BACKUP TABLE备份时留意输出目录的权限,改办法仅仅备份MYD和frm文件,不备份索引。

2.1.3. 运用mysqlhotcopy 备份

mysqlhotcopy 是一个 Perl脚本,开始由Tim Bunce编写并供给。它运用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运转在数据库目录地点的机器上。mysqlhotcopy 只用于备份MyISAM。它运转在Unix和NetWare中。

shell> mysqlhotcopy db_name [/path/to/new_directory ]

shell> mysqlhotcopy db_name_1 … db_name_n /path/to/new_directory

备份给定数据库中的匹配正则表达式的表:

shell> mysqlhotcopy db_name./regex/

加上发音符(‘~’)前缀,表名的正则表达式能够被否定:

shell> mysqlhotcopy db_name./~regex/

mysqlhotcopy支撑下面的选项:

· —help,-?

显现协助音讯并退出。

· –allowold

假如方针存在不抛弃(加上一个_old后缀从头命名它)。

· –checkpoint=db_name.tbl_name

在指定的db_name.tbl_name刺进检查点条目。

· —debug

启用调试输出。

· –dryrun,-n

陈述动作而不履行它们。

· –flushlog

一切表确定后改写日志。

· –keepold

完成后不删除曾经(从头命名的)的方针。

· — method=command

仿制办法(cp或scp)。

· –noindices

备份中不包含悉数索引文件。这样使备份更小、更快。能够在以后用myisamchk -rq从头构建索引。

· –password=password,-p password

当衔接服务器时运用的暗码。请留意该选项的暗码值是不行选的,不象其它MySQL程序。

· –port=port_num,-P port_num

当衔接本地服务器时运用的TCP/IP端口号。

· –quiet,-q

除了呈现错误时坚持沉默。

· –regexp=expr

仿制一切数据库名匹配给出的正则表达式的数据库。

· –socket=path,-S path

用于衔接的Unix套接字文件。

· –suffix=str

所仿制的数据库名的后缀。

· –tmpdir=path

暂时目录(替代/tmp)。

· –user=user_name,-u user_name

当衔接服务器时运用的MySQL用户名。

mysqlhotcopy从选项文件读取[client]和[mysqlhotcopy]选项组。

由于mysqlhotcopy一般是用来做彻底备份,所以引荐运用—flushlog选项来发生增量更新日志。

2.1.4. 运用mysqldump 备份

能够备份表结构和数据,能够一起支撑MyISAM和InnoDB引擎数据库。

mysqldump能够备份单个表、单个库或一切库。

Mysqldump 还能够只导出表结构。

mysqldump是逻辑备份,输出的是sql句子文件,还能够输出其他数据库兼容的格局。

有3种办法来调用mysqldump:

shell> mysqldump [options] db_name [tables]

shell> mysqldump [options] —database DB1 [DB2 DB3…]

shell> mysqldump [options] –all–database

假如没有指定任何表或运用了—database或–all–database选项,则转储整个数据库。

要想取得你的版别的mysqldump支撑的选项,履行mysqldump —help。

假如运转mysqldump没有–quick或–opt选项,mysqldump在转储成果前将整个成果集装入内存。假如转储大数据库可能会呈现问题。该选项默许启用,但能够用–skip-opt禁用。

mysqldump支撑下面的选项:

· —help,-?

显现协助音讯并退出。

· –add-drop–database

在每个CREATE DATABASE句子前增加DROP DATABASE句子。

· –add-drop-tables

在每个CREATE TABLE句子前增加DROP TABLE句子。

· –add-locking

用LOCK TABLES和UNLOCK TABLES句子引证每个表转储。重载转储文件时刺进得更快。

· –all–database,-A

转储一切数据库中的一切表。与运用—database选项相同,在命令行中命名一切数据库。

· –allow-keywords

答应创立关键字列名。应在每个列名前面加上表名前缀。

· —comments[={0|1}]

假如设置为 0,制止转储文件中的其它信息,例如程序版别、服务器版别和主机。–skip—comments与—comments=0的成果相同。 默许值为1,即包含额定信息。

· –compact

发生少数输出。该选项禁用注释并启用–skip-add-drop-tables、–no-set-names、–skip-disable-keys和–skip-add-locking选项。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/323242.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部