Linux下实现MySQL数据备份和恢复的命令使用全攻略

2019-01-04 20:03:28刘景俊

mysql> UNLOCK TABLES;

(6)备份数据

[root@stu18 data] # cp -a * /zhao/lvmback-2013-08-14/

(7)二进制实现增量备份

mysql> use hellodb; #指定默认数据库 Database changed mysql> CREATE TABLE testtb (id int,name CHAR(10)); #创建表 Query OK, 0 rows affected (0.35 sec) mysql> INSERT INTO testtb VALUES (1,'tom'); #添加数据 Query OK, 1 row affected (0.09 sec) [root@stu18 data] # mysqlbinlog --start-position=187 mysql-bin.000004 > /zhao/lvmlogbin_2013-08-14/binlog.sql #日志实现增量备份

(8)模拟数据库崩溃

[root@stu18 ~] # service mysqld stop [root@stu18 ~] # cd /mydata/data/ [root@stu18 data] # rm -rf *

(9)恢复数据

[root@stu18 ~] # cp /zhao/lvmback-2013-08-14/* /mydata/data/ -a #完全备份恢复 [root@stu18 ~] # cd /mydata/data/ #查看恢复数据内容 [root@stu18 data] # chown -R mysql.mysql * #更改属主属组 [root@stu18 data] # service mysqld start #启动服务 [root@stu18 data] # mysql -uroot –pmypass #登录测试
mysql> SHOW DATABASES; #查看数据完整性,无测试表testtd使用二进制恢复 mysql> SET sql_log_bin=0 #关闭二进制日志 mysql> source /zhao/lvmlogbin_2013-08-14/binlog.sql; #二进制恢复 mysql> SHOW TABLES; #查看恢复结果 +-------------------+ | Tables_in_hellodb | +-------------------+ | classes | | coc | | courses | | scores | | students | | teachers | | testtb | | toc | +-------------------+ mysql> SET sql_log_bin=1; #开启二进制日志

此工具是接近于热备的方式实现的,并且用此方法来备份恢复数据速度是非常快的。

四:基于xtrabackup来实现备份恢复

4.1、优势特性

完全以热备的形式进行,能够实现快速可靠地完全备份和部分备份,支持增量备份,支持时间点还原,备份过程中不会打扰到事务操作,能够实现网络传输和压缩功能从而有效的节约磁盘空间,备份完成后可自动验证数据是否可用,恢复速度较快等等。更多优势特性请参考http://www.percona.com/software/percona-xtrabackup

注意:以上这些优势特性只能在InnoDB引擎上完美实现,而在MyISAM存储引擎上依然最多只能使用温备的形式进行并且还不支持增量备份。
另外Xtrabackup更多的高级功能还依赖于Mysql数据库对于InnoDB实现了单独的表空间,否则也就没有办法实现单表导入导出查看方式如下:

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_file%'; +--------------------------+----------+ | Variable_name | Value | +--------------------------+----------+ | innodb_file_format | Antelope | | innodb_file_format_check | ON | | innodb_file_format_max | Antelope | | innodb_file_per_table | ON | +--------------------------+----------+