MySQL5.6 数据备份方法汇总

来源:互联网 发布:linux可以用来干什么 编辑:程序博客网 时间:2024/06/05 15:50
一、使用MySQL企业版做一个MySQL的热备份
    使用MySQL企业版可以使用 MySQL Enterprise Backup进行数据库、表的备份。该工具可以进行全量、压缩备份。备份物理数据库文件使得恢复比逻辑技术更快就像是mysqldump。mysqldump和mysqlhotcopy都可以进行备份,mysqldump更常用,因为他可以备份各种类型的表。
    针对innodb类型的表,可以对未加锁的表实行在线备份。使用的是mysqldump的 --single-transaction 选项。
二、通过复制表文件进行备份
    myisam表是通过文件形式存储的所以可以复制*.frm, *.MYD, *.MYI 完成备份。为了保证数据一致性,首先要停止服务,或者锁定并刷新相关表。
FLUSH TABLES test_table WITH READ LOCK;
    进行备份时,只需要上读锁即可,这样可以确保其他用户对表进行读操作。刷新操作是为了确保所有活动索引页在备份前写到磁盘中。
    只要是服务器没有在更改任何东西,你也可以创建一个二进制备份通过拷贝表文件。mysqlhotcopy就是用的这种方式。(注意:如果数据库中的表是innodb类型就不行。mysqlhotcopy对innodb表是不工作的,因为innodb不需要存储表内容在数据库目录中。同时,即使服务器没有在做任何更改,innodb仍然更改在内存中的数据,并不刷新至磁盘。)
三、做一个Delimited-Text文件备份
    创建一个文本文件,包含表中数据,你可以使用: SELECT * INTO OUTFILE 'file_name' FROM tbl_name。文件就会在MySQL服务器上创建文件,不是客户端。这种方法可以对任何种类的数据生效,但是只能复制表数据,不能复制表结构。
    另一种方法创建文本数据文件(包含create table建表语句的)是使用msyqldump的--tab 选项。
将delimited-text data文件载入,可以使用 LOAD DATA INFILE 或者 mysqlimport。
四、使用二进制日志,做增量备份
    MySQL支持增量备份,你必须启动服务使用 --log-bin 选项。如果你想要做一个增量备份,(在上一次全量备份或者增量备份基础之上)。你需要先FLUSH LOGS.然后,将二进制日志文件复制,然后根据日志进行分析。下一次做全量备份的时候,你也需要进行FLUSH LOGS.
五、使用主从复制进行备份

六、通过文件系统快照进行备份
引用一下吧:
If you are using a Veritas file system, you can make a backup like this:
From a client program, execute FLUSH TABLES WITH READ LOCK.
From another shell, execute mount vxfs snapshot.
From the first client, execute UNLOCK TABLES.
Copy files from the snapshot.
Unmount the snapshot.Similar snapshot capabilities may be available in other file systems, such as LVM or ZFS.

恢复坏表

如果是恢复myisam表,可以先试着使用REPAIR TABLE 或者 myisamchk -r。这可能会对99%的情况有用。如果myisamchk 失败,可以看看http://dev.mysql.com/doc/refman/5.6/en/myisam-table-maintenance.html


0 0
原创粉丝点击