一、通过mysqlbinlog恢复数据

先安装mysql mysql-server

yum -y install mysql mysql-server

编辑配置文件

[root@localhost 桌面]# vim /etc/my.cnf 
#添加
log-bin=mysql-bin

Centos Mysql数据还原_二进制文件
启动服务

service mysqld start

设置mysql密码

[root@localhost mysql]# mysqladmin -u root password '123456'

看二进制文件是否启用

mysql> show global variables like '%log%';

Centos Mysql数据还原_服务器_02
已经启用
Centos Mysql数据还原_服务器_03
有三个二进制文件,当前使用的是第三个

mysql> show binlog events in 'mysql-bin.000003';

查看这个文件的详细的信息,做任何操作都会在这个文件中呈现出来
Centos Mysql数据还原_二进制文件_04
先进行一些操作
Centos Mysql数据还原_二进制文件_05
查看一下,确实记录了刚才的操作
Centos Mysql数据还原_配置文件_06
添加删除的操作都有记录

[root@localhost mysql]# cd /var/lib/mysql
[root@localhost mysql]# mysqlbinlog mysql-bin.000003 

利用二进制文件进行恢复操作
Centos Mysql数据还原_mysql_07
拿时间做恢复,必须精确到秒

[root@localhost mysql]# mysqlbinlog --start-datetime="2020-05-20 14:40:06" --stop-datetime="2020-05-20 14:40:11" mysql-bin.000003 |mysql -u root -p

Centos Mysql数据还原_服务器_08
但是dd数据库没有被恢复,因为我们设置的结束时间是dd的创建时间,应该用dd下面删除数据库的时间.

[root@localhost mysql]# mysqlbinlog --start-datetime="2020-05-20 14:40:06" --stop-datetime="2020-05-20 14:40:26" mysql-bin.000003 |mysql -u root -p

Centos Mysql数据还原_二进制文件_09
下面根据位置进行还原

因为位置是结束位置,所以要向上一条去写

[root@localhost mysql]# mysqlbinlog --start-position=1024 --stop-position=1261 mysql-bin.000003 |mysql -u root -p

Centos Mysql数据还原_mysql_10
总结一下:

通过mysqlbinlog恢复数据
mysqlbinlog
--start-datetime
--stop-datetime
起始时间
--start-position
--stop-position
结束位置

定期清楚binlog文件,但不能使用rm去删除这些二进制文件

mysql> purge binary logs to 'mysql-bin.000002';
#会将'mysql-bin.000001'文件删除

主从复制

定义:

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

主服务器(master)

yum -y install mysql mysql-server

关闭防火墙\SELinux

iptables -F
setenforce 0

启用二进制文件

vim /etc/my.cnf

Centos Mysql数据还原_服务器_11
开启mysql

service mysqld start

设置密码

[root@localhost 桌面]# mysqladmin -u root password '123456'

在mysql中设置权限

mysql> grant replication slave on *.* to 'zhangsan'@'%' identified by '123456';
mysql> flush privileges;

当前使用的二进制文件
Centos Mysql数据还原_服务器_12
从服务器

yum -y install mysql mysql-server

关闭防火墙\SELinux

iptables -F
setenforce 0

编辑配置文件
Centos Mysql数据还原_mysql_13
设置数据库密码

[root@localhost 桌面]# mysqladmin -u root password '123456'

进行同步操作

Centos Mysql数据还原_配置文件_14

start slave;
show slave status\G;

Centos Mysql数据还原_mysql_15
连接成功,可以进行同步

主服务器
Centos Mysql数据还原_mysql_16
从服务器
Centos Mysql数据还原_配置文件_17
在从服务器上进行查看
Centos Mysql数据还原_二进制文件_18
同步成功

三、主主复制

所谓双主备份,其实也就是互做主从复制,每台master既是master,又是另一台服务器的slave。这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中。

主服务器端

yum -y install mysql mysql-server

修改主配置文件,添加
Centos Mysql数据还原_数据库_19
启动,如果失败了直接恢复快照直接重来
Centos Mysql数据还原_mysql_20
进行授权
Centos Mysql数据还原_配置文件_21

mysql> flush privileges;

mysql> show master status;

Centos Mysql数据还原_二进制文件_22
进行同步操作
Centos Mysql数据还原_服务器_23

mysql> start slave;

mysql> show slave status\G;
Centos Mysql数据还原_二进制文件_24

属服务器

yum -y install mysql mysql-server

修改主配置文件,添加
Centos Mysql数据还原_二进制文件_25
先把数据库给锁一下,防止数据更新

mysql> flush tables with read lock;

进行拷贝
Centos Mysql数据还原_配置文件_26
再进行解锁

unlock tables;

授权
Centos Mysql数据还原_数据库_27
查看
Centos Mysql数据还原_服务器_28
进行同步
Centos Mysql数据还原_数据库_29

mysql> start slave;

mysql> show slave status\G;
Centos Mysql数据还原_服务器_30
最后进行测验

在主服务器

use test;
create table aa(name char(20));

从服务器
Centos Mysql数据还原_数据库_31
查看主服务器
Centos Mysql数据还原_服务器_32
查看从服务器
Centos Mysql数据还原_mysql_33
说明双方互相同步,实验完成