一:通过mysqlbinlog恢复数据
1:
2:启用二进制文件
3:
4:查看二进制数据文件是否已启用
logbin -on代表已经启用。
5:查看当前数据库二进制文件有哪些
7:查看正在使用的二进制文件是哪些
每做一次操作,该二进制文件就会有变化
8:查看记录我们操作的二进制文件
9:进行二进制数据文件的恢复操作
(1)
(2)用mysqlbinlog做二进制文件恢复的依据
1:时间,start datetime~stop datetime。
2:结束的位置start position~stop position。
(3)根据时间来做
a:还原所有文件:例如恢复15;04:57到15:24:11之间create databse aa~dd的操作。
发现,aa,bb,cc都恢复了,但是dd没有,因为,2020-05-20 15:24:11是create database dd开始的时间,而不是结束的时间,要想dd也恢复,需要把stop-datetime时间设置为下条命令的开始时间。
恢复drop database cc;drop database bb;drop database aa;这三条命令
恢复成功。
b:根据起始和终止位置
(与根据时间恢复不同的是,pos指的是该命令终止的位置,所以根据pos恢复时要用该命令的上一条pos 位置到要终止的命令的pos,例如create database aa的end_log_pos是323,但要用上一个end_log_pos=244,到create database dd的end_log_pos=560)
10:定时清空占内存的二进制文件
(1)登陆数据库查看我有哪些二进制文件
(2)删掉一些二进制文件
二:Mysql主从分离原理及如何实现
**1:主从同步 **
原理:
通过binlog二进制文件实现从主数据库复制从数据库,属于异步的复制,速度比同步快。
主服务器会开启一个io线程
从服务器会开启一个io线程和sql线程
客户端需要配置master.info文件
。。。。待补充
(两台虚拟机恢复到初始状态)
(1):服务器端和客户端均做如下操作:
(2):启用二进制文件
服务器端修改主配置文件
(3)客户端修改主配置文件
(4)服务端和客户端都开启mysql服务并设置密码并登陆
mysqladmin -u root password ‘zjs819819’;
mysql -u root -p
(5)在主数据库上给从服务器做一下授权,让从数据库能拿到主数据库的二进制文件,设置一个允许访问的用户
看一下我们的有哪些二进制文件和主二进制文件
(6)从服务器上数据库配置一下master.nfo文件,告知从数据库它登陆主数据库所需要的信息
(7)开启从数据库的功能
两个YES,表示我们主从同步成功。
(8)做一下数据同步看一下效果
客户端:
服务器端:
客户端:
主从同步成功。
小结:
主从同步优点:主数据库产生的文件是不会完整同步到从数据库的,也就是说如果我想对数据进行完整备份的话可以备份从数据库,实现简单。
主从同步缺点:主数据库出现问题,从数据库不能正常工作,主主同步能解决这个问题。
2:主主同步
原理:
a,b数据库,互为主从双向复制,a数据库产生的数据会复制给b,b数据库产生的数据也会复制给a。
恢复环境,(恢复快照,我的快照是虚拟机刚建好的状态)。
1:服务端和客户端都
2:
服务器端修改主配置文件:
客户端修改主配置文件:
两台机器都:
环境准备完毕。
3:进到数据库里进行配置
(1)客户端先把数据锁一下,防止还没配置好就同步过去了
(2)启用主主配置
a:客户端进行授权,并查看当前使用的二进制文件:
b:服务器端进行授权,并查看当前使用的二进制文件:
c:两端都show slave status\G;查看是否同步成功,都yes,表示成功。
4:进行验证测试
(1)两端都:
(2)客户端进行操作,建立一个名为aa的表,
来到服务器端查看,发现同步成功:
(3)服务器端进行操作,建立一个名为bb的表,
来到客户端查看,发现同步成功:
感悟:
还是要多敲!