MySQL 日志管理、备份与恢复

发布于:2024-07-04 ⋅ 阅读:(17) ⋅ 点赞:(0)

数据库备份的重要性

数据库备份的分类

完全备份的缺点:备份占用内存越来越大 浪费长时间

优点就是:数据的完整性

差异备份的缺点:占用内存越来越大

增量备份优点:每次备份备份最新的 占用空间相对于少 备份快

数据库完全备份分类

物理冷备份:

恢复数据库

增量备份与恢复

1.二进制日志文件

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