一.简介
数据可以重复导入,每次都是导入的那个数据,如果数据不一致,会以导入的数据覆盖现在有的。
完全备份 备份所有数据(整个/整个库/整个表)
a.只能把数据恢复到备份之前的状态,新产生的数据无法恢复
b.备份数据和恢复数据都要加写锁
差异备份 备份完全备份后新产生的 从完全开始叠加
增量备份 备份上一次备份后新产生的 只增加新的
二.物理备份
直接备份mysql的data或者存储文件。
查看存储文件所在位置show global variables like "%datadir%";
备份后直接恢复即可tar -zcvf mysqlbak.tar.gz /var/lib/mysql
三.导出查询结果
查看默认使用目录,一般为空show variables like "secure_file_priv";
配置数据目录
[mysqld]下添加
secure_file_priv="/data"
导出查询结果,只能到/data这个默认目录下面select * from mysql.user into outfile "/data/one.txt";
四.逻辑备份
开启binlog日志
开启binlog日志vim /etc/my.cnf
log_bin
server_id=20 #局域网内不能重复,1-255
查看binlog日志,将从开启binlog日志时开始记录cd /var/lib/mysql
mysqlbinlog xx.000001
备份binlog日志
1.首先做一次完整备份:
这时候就会得到一个全备文件test.sqlmysqldump test>test.sql
在sql文件中我们会看到:是指备份后所有的更改将会保存到bin-log.000002二进制文件中。cat test.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;
2.在test库的t_student表中增加两条记录,然后执行flush logs
命令。这时将会产生一个新的二进制日志文件bin-log.000003,bin-log.000002则保存了全备过后的所有更改,既增加记录的操作也保存在了bin-log.00002中。
3.再在test库中的a表中增加两条记录,然后误删除t_student表和a表。a中增加记录的操作和删除表a和t_student的操作都记录在bin-log.000003中。
恢复binlog日志
1.首先导入全备数据mysql test < test.sql;
2.恢复整个bin-log.000002mysqlbinlog bin-log.000002 |mysql test -uroot -p123456