数据库备份的重要性
数据库备份的分类
完全备份的缺点:备份占用内存越来越大 浪费长时间
优点就是:数据的完整性
差异备份的缺点:占用内存越来越大
增量备份优点:每次备份备份最新的 占用空间相对于少 备份快
数据库完全备份分类
物理冷备份:
恢复数据库
增量备份与恢复
1.二进制日志文件![](https://img-blog.csdnimg.cn/direct/611b67c86e564aa296dc0df6988716d4.png)
vim /etc/my.cnf
------------在“server-id”行下面添加mysql数据库的日志信息---------
server-id = 1
---------------------------------------------------------------
#错误日志
log-error=/usr/local/mysql/data/mysql_error.log
#通用查询日志
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
#二进制日志
log_bin=mysql_bin
#慢查询日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=2
systemctl restart mysqld
mysql -uroot -pabc123
刷新生成二进制日志文件的两种方式:
重启数据库服务:systemctl restart mysqld
flush-logs命令刷新:mysqladmin -uroot -pabc123 flush-logs
二进制日志(binlog)有三种不同的记录格式
STATEMENT(基于SQL语句):默认格式是STATEMENT。该方式记录语句快,占用内存空间少。但高并发情况下会导致记录日志顺序紊乱,造成恢复数据时发生偏差
ROW(基于行):基于数据内容行进行记录,不仅记录执行的命令语句,还会记录命令影响的相关数据行
MIXED(混合模式):高并发情况下ROW方式进行记录,一般情况下采用STATEMENT方式进行记录
断点恢复
基于位置恢复
mysqlbinlog --no-defaults --start-position='开始位置点' --stop-position='结束位置点' 二进制文件路径 | mysql -u root -p密码
.基于时间点恢复
mysqlbinlog --no-defaults --start-datetime='YYYY-mm-dd HH:MM:SS' --stop-datetime='YYYY-mm-dd HH:MM:SS' 二进制文件路径 | mysql -u root -p密码
断点恢复原则
- 如果要恢复到某条sql语句之前的所有数据,就stop在这个语句的位置点或时间点之前
- 如果要恢复某条sql语句及其之后的所有数据,就从这个语句的位置点或时间点开始start