一:通过mysqlbinlog恢复数据

1:

本地mysql 命令行还原nb3 mysql nb3 还原_数据库


2:启用二进制文件

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_02


本地mysql 命令行还原nb3 mysql nb3 还原_客户端_03


3:

本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_04


本地mysql 命令行还原nb3 mysql nb3 还原_数据库_05


4:查看二进制数据文件是否已启用

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_06


本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_07


logbin -on代表已经启用。

5:查看当前数据库二进制文件有哪些

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_08


7:查看正在使用的二进制文件是哪些

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_09


每做一次操作,该二进制文件就会有变化

本地mysql 命令行还原nb3 mysql nb3 还原_数据库_10


8:查看记录我们操作的二进制文件

本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_11

9:进行二进制数据文件的恢复操作

(1)

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_12


本地mysql 命令行还原nb3 mysql nb3 还原_客户端_13


本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_14


(2)用mysqlbinlog做二进制文件恢复的依据

1:时间,start datetime~stop datetime。

2:结束的位置start position~stop position。

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_15


(3)根据时间来做

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_16


a:还原所有文件:例如恢复15;04:57到15:24:11之间create databse aa~dd的操作。

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_17


发现,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;这三条命令

本地mysql 命令行还原nb3 mysql nb3 还原_数据库_18

本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_19


本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_20


恢复成功。

b:根据起始和终止位置

本地mysql 命令行还原nb3 mysql nb3 还原_数据库_21


本地mysql 命令行还原nb3 mysql nb3 还原_数据库_22


与根据时间恢复不同的是,pos指的是该命令终止的位置,所以根据pos恢复时要用该命令的上一条pos 位置到要终止的命令的pos,例如create database aa的end_log_pos是323,但要用上一个end_log_pos=244,到create database dd的end_log_pos=560

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_23

10:定时清空占内存的二进制文件

(1)登陆数据库查看我有哪些二进制文件

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_24


(2)删掉一些二进制文件

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_25

二:Mysql主从分离原理及如何实现

**1:主从同步 **
原理:
通过binlog二进制文件实现从主数据库复制从数据库,属于异步的复制,速度比同步快。
主服务器会开启一个io线程
从服务器会开启一个io线程和sql线程
客户端需要配置master.info文件
。。。。待补充

(两台虚拟机恢复到初始状态)

(1):服务器端和客户端均做如下操作:

本地mysql 命令行还原nb3 mysql nb3 还原_数据库_26


本地mysql 命令行还原nb3 mysql nb3 还原_数据库_27


(2):启用二进制文件

服务器端修改主配置文件

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_28


本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_29


(3)客户端修改主配置文件

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_30


本地mysql 命令行还原nb3 mysql nb3 还原_数据库_31


(4)服务端和客户端都开启mysql服务并设置密码并登陆

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_32


mysqladmin -u root password ‘zjs819819’;

mysql -u root -p

(5)在主数据库上给从服务器做一下授权,让从数据库能拿到主数据库的二进制文件,设置一个允许访问的用户

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_33


看一下我们的有哪些二进制文件和主二进制文件

本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_34


(6)从服务器上数据库配置一下master.nfo文件,告知从数据库它登陆主数据库所需要的信息

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_35


(7)开启从数据库的功能

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_36


两个YES,表示我们主从同步成功。

(8)做一下数据同步看一下效果

客户端:

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_37


服务器端:

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_38


客户端:

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_39


主从同步成功。

小结:

主从同步优点:主数据库产生的文件是不会完整同步到从数据库的,也就是说如果我想对数据进行完整备份的话可以备份从数据库,实现简单。

主从同步缺点:主数据库出现问题,从数据库不能正常工作,主主同步能解决这个问题。

2:主主同步

原理:

a,b数据库,互为主从双向复制,a数据库产生的数据会复制给b,b数据库产生的数据也会复制给a。

恢复环境,(恢复快照,我的快照是虚拟机刚建好的状态)。

1:服务端和客户端都

本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_40


2:

服务器端修改主配置文件:

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_41


本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_42


客户端修改主配置文件:

本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_43


本地mysql 命令行还原nb3 mysql nb3 还原_数据库_44


两台机器都:

本地mysql 命令行还原nb3 mysql nb3 还原_数据库_45


本地mysql 命令行还原nb3 mysql nb3 还原_本地mysql 命令行还原nb3_46


环境准备完毕。

3:进到数据库里进行配置

(1)客户端先把数据锁一下,防止还没配置好就同步过去了

本地mysql 命令行还原nb3 mysql nb3 还原_数据库_47


(2)启用主主配置

a:客户端进行授权,并查看当前使用的二进制文件:

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_48


b:服务器端进行授权,并查看当前使用的二进制文件:

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_49


c:两端都show slave status\G;查看是否同步成功,都yes,表示成功。

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_50

4:进行验证测试

(1)两端都:

本地mysql 命令行还原nb3 mysql nb3 还原_客户端_51


(2)客户端进行操作,建立一个名为aa的表,

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_52


来到服务器端查看,发现同步成功:

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_53


(3)服务器端进行操作,建立一个名为bb的表,

本地mysql 命令行还原nb3 mysql nb3 还原_数据库_54


来到客户端查看,发现同步成功:

本地mysql 命令行还原nb3 mysql nb3 还原_二进制文件_55

感悟:

还是要多敲!