1.环境准备
vim/etc/my.cnf 开启二进制日志
log_bin
server-id=2
systemctl restast mmyaqld 启动数据库
mysql -uroot -p"Xp.@123456haha" 登陆数据库
create database xp; 创建名称为xp的库
use xp; 进入xp这个库
create table nice (id int); 在xp库中创建一个名称为nice的表,并在表中写入一列,名称为ID(格式为int(数字))
insert into nice values (1); 向表格nice中的id列插入数据1
insert into nice values (2);
insert into nice values (3);
\q 退出数据库
2.数据库备份
mysqldump -p"Xp.@123456haha" --all-databases --single-transaction --master-data=2 --flush-logs > /mnt/date +%F-%H
-mysql-all.sql
注:为了让实验效果更佳明显数据库备份后我们再次进入数据库进行一些操作
mysql -uroot -p"Xp.@123456haha" 登陆数据库
create database xp; 创建名称为xp的库
use xp; 进入xp这个库
create table dir1 (ip int);
3.二进制日志备份
cp /var/lib/mysql/bin /tmp
4.开始数据恢复
systemctl stop mysqld 停止数据库
rm -rf /var/lin/mysqld/* 清空数据库所有数据
systemctl restast mysqld 启动数据库
grep password
/var/log/mysqld.log 由于是全新的数据库 系统会自动生成一个原始MySQL数据库密码(随机产生),利用grep过滤找出原始密码
mysql -uroot -p',zAywtYj+2Zu'
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Xp.@123456haha';
或者,
mysqladmin -uroot -p'Kyzw;u2dq<mh' password 'XUPENG@123456haha'
都可修改MySQL密码
开始恢复MySQL数据库数据:
mysql -p"XUPENG@123456haha" < /mnt/2019-01-19-15-mysql-all.sql
注:在最开始时MySQL数据库的密码是"Xp.@123456haha" ,删除数据库所有数据后重新设定的MySQL数据库密码为"XUPEMG@123456haha" , 当数据库被恢复时MySQL数据库的密码也会被恢复到之密码"Xp.@123456haha"
登陆数据库验证数据是否完整:
mysql -uroot -p"Xp.@123456haha"
show databasea;
use xp;
show table;
注:这时我们会发现MySQL数据库中xp这个库里面的数据是完整的,但缺少一个我们在数据库备份好后创建的xp这个库 ,这就需要我们通过恢复二进制日志来恢复dir这个库
5.二进制日志恢复
恢复二进制日志时一定要到之前备份的哪个目录下进行恢复
ls /var/lib/mysql/bin 查询二进制日志是否生产
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001 查看二进制文件内容
mysqlbinlog localhost-bin.000001 localhost-bin.000002 --start-position=760255 | mysql -p"Xp.@123456haha"
注:每当数据库断开一次就会产生一个二进制日志 ,她们会一次排序, mysqlbinlog -v /var/lib/mysql/localhost-bin.000002 通过查看最后一个的二进制文件内容,找到。后面的“760255” 是通过查看最后一个二进制内容得到的
再次登录MySQL查询即可 ,如果xp这个库恢复成功的话则说明全部数据恢复成功!