分类: Mysql/postgreSQL
2008-05-21 20:44:33
来源: |
|
3、 SQL 语法备份 3.1 备份 BACKUP TABLE 语法其实和 mysqlhotcopy 的工作原理差不多,都是锁表,然后拷贝数据文件。它能实现备份,但是不理想,因此不推荐使用。它只拷贝表结构文件和数据文件,不同时拷贝索引文件,因此恢复时比较慢。例子: BACK TABLE tbl_name TO '/tmp/db_name/'; 注意,必须要有 FILE 权限才能执行本SQL,并且目录 /tmp/db_name/ 必须能被 mysqld 用户可写,导出的文件不能覆盖已经存在的文件,以避免安全问题。
SELECT INTO OUTFILE '/tmp/db_name/tbl_name.txt' FROM tbl_name; 注意,必须要有 FILE 权限才能执行本SQL,并且文件 /tmp/db_name/tbl_name.txt 必须能被 mysqld 用户可写,导出的文件不能覆盖已经存在的文件,以避免安全问题。
RESTORE TABLE FROM '/tmp/db_name/'; 权限要求类似上面所述。
LOAD DATA INFILE '/tmp/db_name/tbl_name.txt' INTO TABLE tbl_name; 权限要求类似上面所述。倒入数据之前,数据表要已经存在才行。如果担心数据会发生重复,可以增加 REPLACE 关键字来替换已有记录或者用 IGNORE 关键字来忽略他们。
补充: shell> mysqldump --quick db_name | gzip > db_name.contents.gz
恢复/转移到另一台的命令如下: shell> gunzip < db_name.contents.gz | mysql db_name
启用 binlog 时必须要重启 mysqld。首先,关闭 mysqld,打开 my.cnf,加入以下几行: server-id = 1 然后启动 mysqld 就可以了。运行过程中会产生 binlog.000001 以及 binlog.index,前面的文件是 mysqld 记录所有对数据的更新操作,后面的文件则是所有 binlog 的索引,都不能轻易删除。关于 binlog 的信息请查看手册。
FLUSH LOGS;
/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 该工具允许你显示指定的数据库下的所有 SQL 语句,并且还可以限定时间,相当的方便,详细的请查看手册。
/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name 把 mysqlbinlog 输出的 SQL 语句直接作为输入来执行它。
5、 直接备份数据文件 FLUSH TABLES WITH READ LOCK;
6、 备份策略 7、 数据维护和灾难恢复 CHECK TABLE 或 REPAIR TABLE,检查或维护 MyISAM 表 当然了,上面这些命令起始都可以通过工具 myisamchk 来完成,在这里不作详述。
ALTER TABLE tbl_name ENGINE = Innodb; 这其实是一个 NULL 操作,表面上看什么也不做,实际上重新整理碎片了。
innodb_force_recovery = 4 关于该参数的信息请查看手册。
|