1.数据库的备份
备份=拷贝加管理,防止数据的丢失同时记录用户的操作记录。其中最有效的备份是对IT架构进行备份。
原则:
(1)数据库要定期备份,备份的周期应当根据应用数据系统可承受的恢复时间,而且定期备份的时间应当在系统负荷最低的时候进行。对于重要的数据,要保证在极端情况下的损失都可以正常恢复。
(2)定期备份后,同样需要定期做恢复测试,了解备份的正确可靠性,确保备份的有意义的、可恢复的。
(3)根据系统需要来确定是否采用增量备份,增量备份只需要备份每天的增量数据,备份花费的时间少,对系统负载的压力也小。缺点是恢复的时候需要加载之前所有的备份数据。恢复时间较长。
(4)确保MySQL打开了log-bin选项,mysql在做完整恢复或者基于时间点恢复的时候都需要binlog。
(5)可以考虑异地备份。
2.逻辑备份和恢复
(1)逻辑备份:也可以成为文件级备份,是将数据库中的数据备份为一个文本文件,而备份大小取决于文件大小。并且该文本文件是可以移植到其他机器上的,甚至是不同硬件结构的机器。
使用mysqldump命令生成insert语句备份
语法:mysqldump [arguments] >file_name.sql
使用帮助如下:
[root@cai ~]# mysqldump Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS] For more options, use mysqldump –help 例:备份所有数据库,语句如下: [root@cai dumpback]# mysqldump -uroot -p123456 --all-databases >/tmp/dumpback/alldb.sql 备份某些数据库,语法如下: [root@cai dumpback]# mysqldump -uroot -p123456 --databases aa >/tmp/dumpback/data_aa.sql 备份某数据库中的表,语句如下: [root@cai dumpback]# mysqldump -uroot -p123456 aa cairui >/tmp/dumpback/aa_cairui.sql 查看备份内容,语句如下: [root@cai dumpback]# more aa_cairui.sql
如何保证数据备份的一致性?有以下两种方法:
①同一时刻取出所有数据
对于事务支持的存储引擎,如innodb或者bdb等,可以通过控制将整个备份过程在同一事物中,使用 -single-transaction test>test_backup.sql选项
例:[root@cai dumpback]# mysqldump -uroot -p123456 --single-transaction aa >/tmp/dumpback/aa_backup.sql
②数据库中的数据处于静止状态
通过锁表参数未完成
LOCK-TABLES 每次锁定一个数据库的表,此参数默认为true
LOCK-ALL-TABLES 一次锁定所有的表,适用于dump的表分别处于各个不同的数据库中的情况。
l 生成特定格式的纯文本文件备份
①通过select … to outfile from … 命令
参数如下:
fields escaped by [‘name’]:在sql语句中需要转义的字符
fields terminated by:设定每两个字段之间的分隔符
fields [optionally] enclosed by ‘name’:包装,有optionally数字类型不被包装,否则全包装。
lines terminated by ‘name’:行分隔符,即每记录结束时添加的字符。
例:mysql> select * into outfile '/tmp/tb1.txt' -> fields terminated by ',' -> optionally enclosed by '"' -> lines terminated by '\n' -> from cai limit 50;
②通过mysqldump工具命令导出文本。
用此方法可以生成一个文本数据和一个对应的数据库结构创建脚本,主要参数:
-T,--tab=name