数据库备份的介绍
- 数据库的备份类型
- 完全备份:对整个数据库的数据进行备份
- 部分备份:对部分数据进行备份(可以是一张表也可以是多张表)
- 增量备份:以上一次备份为基础来备份变更数据,节约空间
- 差异备份:以第一次完全备份的基础来备份变更数据,浪费空间
- 数据库备份的方式
- 逻辑备份:直接生成sql语句保存起来,在恢复数据的时候执行备份的sql语句来实现数据的恢复
- 物理备份:直接拷贝相关的物理数据
- 区别:逻辑备份效率低,恢复数据效率低,但是逻辑备份节约空间;物理备份浪费空间,但是相对逻辑备份而言效率比较高
- 数据库备份的场景
- 热备份:备份时,数据库的读写操作不会受到影响
- 温备份:备份时,数据库的读操作可以进行,但是写操作不能执行
- 冷备份:备份时,不能进行任何操作
逻辑备份mysqldump
- mysqldump使用语法:mysqldump -u用户 -h host -p 数据库 > 路径
# 备份
./mysqldump -uroot -p --databases test_mysql > /usr/local/mysql/data/back.sql
# 恢复
mysql -uroot -p < back.sql
物理备份
-
查看数据库源文件路径:show variables like ‘datadir%‘;
-
MyISAM表源文件
- db.opt:创建库的时候生成,主要存储着当前库的默认字符集和字符校验规则
- .frm:记录着表结构信息的文件
- .MYD:记录着表的数据
- .MYI:记录着索引文件
-
InnoDB表源文件
- db.opt:创建库的时候生成,主要存储着当前库的默认字符集和字符校验规则
- .frm:记录着表结构信息的文件
- .ibd:独立表空间,里面记录这个表的数据和索引
- ibdata1:共享表空间,里面记录这个表的数据和索引
二进制日志mysqlbinlog备份
-
什么是二进制日志
二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,不包括查询
-
二进制日志的功能
一般情况下,二进制日志有着数据复制和数据恢复的功能,开启二进制日志会有1%的性能消耗
-
二进制日志开启
# 查看二进制日志是否开启 show variables like ‘log_bin%‘; # 开启二进制日志:vim /etc/my.cnf server-id=1 log_bin=/data/mydata/log_bin/mysql-bin # 查看所有的binlog日志列表 show master logs; # 刷新二进制日志 flush logs; # 重置(清空)二进制日志文件 reset master;
-
二进制日志恢复数据
# 查看二进制日志文件 ./mysqlbinlog /data/mydata/log_bin/mysql-bin.000001 # 找出要恢复的位置 ./mysqlbinlog /data/mydata/log_bin/mysql-bin.000001 | cat -n | grep -iw ‘drop‘ # 打印出相关内容 ./mysqlbinlog /data/mydata/log_bin/mysql-bin.000001 | cat -n | sed -n ‘1,51p‘ # 恢复数据 ./mysqlbinlog --stop-position="497" /data/mydata/log_bin/mysql-bin.000001 | mysql -uroot -p