恢复数据库
利用二进制日志,还原数据库最新状态
1在恢复数据库前期准备:
1.1
完全备份,并记录备份的二进制位置
mysqldump -A -F --master-data=2 | gzip > /data/binlog/all_date +%F
.sql.gz
1.2二进制日志独立存放
[mysqld](在配置文件中添加)
log-bin=/data/binlog(随便一个目录,不要和安装程序在一个目录)
[root@localhost ~]#chown mysql.mysql /data/binlog/(修改权限和组)
[root@localhost ~]#systemctl restart mariadb.service (重启服务)
(备份二进制文件)
[root@localhost ~]#cd /data/binlog/
[root@localhost binlog]#ls (查看备份)
mysql-bin.000001 mysql-bin.index
2数据库修复
数据库加锁(在mysql程序里)
在恢复数据库之前先加锁,恢复完成后再解锁。
加写锁
MariaDB [hellodb]> lock tables students write;
解锁
MariaDB [hellodb]> unlock tables;
2.1生成数据库相关文件
先停服务stop
在7里要是二进制安装的MySQL需要在/usr/local/mysql
的目录下执行./scripts/mysql_install_db --user=mysq
要是8就执行mysql_install_db ⠀–user=mysql
2.2重启服务
systemctl restart mariadb
2.3数据还原解压缩
gzip -d all_2019-11-25.sql.gz(选择解压到某个目录)
2.4进入服务(没修复完一定不能退出)
mysql
2.4.1关闭二进制(如果不关闭,修复会生成一些没必要的二进制)
select @@sql_log_bin;(查当前二进制情况1是启用0是禁用)
MariaDB [(none)]>set sql_log_bin=0;(临时禁用)
2.4.2数据库文件进行还原
MariaDB [(none)]>source /data/binlog/all_2019-11-25.sql(完全备份)
{只还原了完全备份的文件,并没有还原 未备份的二进制文件}
2.4.3还原二进制的文件
查看丢失前的文件大小(在另一个窗口执行)
Vim /data/all_2019-11-25.sql
或用grep找到文件
[root@centos8 ~]#grep ‘^-- CHANGE MASTER TO’ /data/all_2019-11-25.sql(文件)
– CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000001’, MASTER_LOG_POS=328;
(找到这个备份前的文件大小,查看之前的大小)
2.5进行二进制文件备份导入
[root@centos8 ~]mysqlbinlog mysql-bin.000001 --start-position=328 > inc.sql(只要328以后的数据)
[root@centos8 ~]mysqlbinlog mysql-bin.00000 >> inc.sql (所有内容全要)
MariaDB [(none)]>source /data/binlog/inc.sql
还原二进制
MariaDB [(none)]>set sql_log_bin=1;(也可以直接退出)