一、通过mysqlbinlog恢复数据
先安装mysql mysql-server
yum -y install mysql mysql-server
编辑配置文件
[root@localhost 桌面]# vim /etc/my.cnf
#添加
log-bin=mysql-bin
启动服务
service mysqld start
设置mysql密码
[root@localhost mysql]# mysqladmin -u root password '123456'
看二进制文件是否启用
mysql> show global variables like '%log%';
已经启用
有三个二进制文件,当前使用的是第三个
mysql> show binlog events in 'mysql-bin.000003';
查看这个文件的详细的信息,做任何操作都会在这个文件中呈现出来
先进行一些操作
查看一下,确实记录了刚才的操作
添加删除的操作都有记录
[root@localhost mysql]# cd /var/lib/mysql
[root@localhost mysql]# mysqlbinlog mysql-bin.000003
利用二进制文件进行恢复操作
拿时间做恢复,必须精确到秒
[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
但是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
下面根据位置进行还原
因为位置是结束位置,所以要向上一条去写
[root@localhost mysql]# mysqlbinlog --start-position=1024 --stop-position=1261 mysql-bin.000003 |mysql -u root -p
总结一下:
通过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
开启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;
当前使用的二进制文件
从服务器
yum -y install mysql mysql-server
关闭防火墙\SELinux
iptables -F
setenforce 0
编辑配置文件
设置数据库密码
[root@localhost 桌面]# mysqladmin -u root password '123456'
进行同步操作
start slave;
show slave status\G;
连接成功,可以进行同步
主服务器
从服务器
在从服务器上进行查看
同步成功
三、主主复制
所谓双主备份,其实也就是互做主从复制,每台master既是master,又是另一台服务器的slave。这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中。
主服务器端
yum -y install mysql mysql-server
修改主配置文件,添加
启动,如果失败了直接恢复快照直接重来
进行授权
mysql> flush privileges;
mysql> show master status;
进行同步操作
mysql> start slave;
mysql> show slave status\G;
属服务器
yum -y install mysql mysql-server
修改主配置文件,添加
先把数据库给锁一下,防止数据更新
mysql> flush tables with read lock;
进行拷贝
再进行解锁
unlock tables;
授权
查看
进行同步
mysql> start slave;
mysql> show slave status\G;
最后进行测验
在主服务器
use test;
create table aa(name char(20));
从服务器
查看主服务器
查看从服务器
说明双方互相同步,实验完成