mysql的备份和恢复和日志文件(配置文件当中的设置)
备份的目的是什么:
备灾。
在生产环境中,数据的安全性非常重要。
造成数据丢失的原因:
1、程序出错
2、人为的问题
3、磁盘故障
备份的分类:
物理备份:对磁盘或者对文件直接进行备份
冷备份:脱机备份,先把指定的程序关闭然后对资源进行备份
热备份:联机备份,不用关闭程序就可以对资源进行备份
逻辑备份:根据数据库文件当中保存的sql语句,表结构等等,以特定的格式和命令对文件的内容进行还原
热备份的一种。
只能对表。库没了没有办法恢复
主从复制可以恢复
物理备份 全量备份:
把数据库的内容整个一次性的做备份。
mysql自带备份命令。可以
mysqldump -u root -p123456 --databases xy102 > /opt/xy102.sql
#备份数据库
删除数据库后
mysql -u root -p123456< /opt/xy102.sql
#恢复数据库
mysqldump -u root -p123456 --databases xy102 xy103 > /opt/xy_all
.sql
#备份多个数据库
mysqldump -u root -p123456 --all-database > /opt/all.sql
#备份所有
mysqldump -u root -p123456 xy102 student > /opt/xy102_st.sql
#备份指定数据库中的表
mysqldump -u root -p123456 xy102 student t1 > /opt/xy102_st_t1.sql
#备份数据库中多个表
备份和还原时,两台数据库的版本最好一致
增量备份:
开启二进制日志的功能
binlog 逻辑备份,会生成一个文件,这个文件里面包含了sql语句,要使用特定的方式和语句才能恢复
vim /etc/my,cof
log-bin=mysql-bin
#开始起二进制日志功能
binlog_format=MIXED
#记录二进制日志的文件格式
systemctl restart mysqld
STATEMENT 基于sql语句:只是记录用户操作的sql语句,高并发的情况之下,记录操作的sql语句的顺序可能出错
导致恢复数据时,就会有丢失或者误差。效率高
ROW 基于行:记录每一行的数据,准确,高并发也不会出错,但是恢复的效率低
MIXED 混合模式:正常情况下使用statement,高并发使用row,智能判断
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001
#特殊编译使mysql日志能够被二进制解析
mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin0001 | mysql -u root -p
#从日志文件中恢复
mysqladmin -u root -p flush-logs
#给日志文件进行断点
mysqlbinlog --no-defaults --start-position ='8224' mysql-bin.00001 | mysql -u root -p
#从8224开始恢复到最后,开始位置恢复
mysqlbinlog --no-defaults --stop-position ='9011' mysql-bin.00001 | mysql -u root -p
#从开头到9011结束,后面不执行,结束位置恢复
mysqlbinlog --no-defaults --start-position ='8224' --stop-position='9011' mysql-bin.00001 | mysql -u root -p
#指定位置恢复
mysqlbinlog --no-defaults --start-datetime='2024-7-19 13:48:16' --stop-datetime='2024-7-19 13:52:25' mysql-bin00001 | mysql -u root -p
#根据时间恢复
vim /etc/my.cnf
general_log=ON
#开启通用查询日志
general_log_file=/usr/local/mysql/data/mysql_general.log
#查询日志的保存位置
log-error=/usr/local/mysql/data/mysql_error.log
#错误日志的保存位置,不需要ON,错误日志默认是开启的
slow_query_log=ON
#开启慢查询日志
slow_query_long_file=/usr/local/mysql/data/mysql_slow_query.log
#设定慢查询日志保存位置
long_query_time=5
#默认的慢查询时间10秒,超过5秒的记录都会保存