docker下使用logbin备份mysql数据,删除以及恢复

hello,我是专注于开发的小红(男),今天咋们来聊聊删库跑路。

你是否有过不小心删了数据库的烦恼,别急,今天带你手把手配置数据库,
使你的数据库不再害怕被删。

1.配置

在mysql下的(如果这里是挂载在外面的,直接在外面更改即可,每个人的路径可能不一样,以实际为准)
/etc/mysql/my.cnf 文件里,加入

#配置文件储存的位置
log-bin=/usr/local/mysql/data/binlog/mysql-bin
#5.7以及以上版本需要配置这一行(保证唯一性)
server-id=1
#binlog的格式,
#statement(保存语句)
#row(保存执行后的结果)
#mixed(同时保存语句和结果)
binlog-format=ROW
#表示每执行一次就同步
sync-binlog=1

加入后重启mysql,这个时候可能会重启不成功,报下面的错误
启动 mysql-bin.index' not found (Errcode: 13) 这是因为在配置上面的log-bin路径的时候,该路径下的文件访问权限不足导致的,所以这时候去更改一下文件的访问权限chmod 777 文件名称,更改后再次重启就成功了。

2.查看

打开连接工具或者是在mysql的bash里面查看是否开启了logbin,输入show variables like '%log_bin%',查看是否开启了logbin,如果出现下面的结果,说明开启成功

docker重启mysql丢失 docker mysql 数据丢失_docker重启mysql丢失

3.删库

新建一个数据库,新建一个表,新建一条数据,然后在log-bin目录下回出现

docker重启mysql丢失 docker mysql 数据丢失_docker重启mysql丢失_02

该文件,说明已经同步成功,然后删除刚刚建立的表。

4.恢复

进入mysql的bash页面,输入/usr/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 |mysql -uroot -p test,注意,这里的/usr/bin/mysqlbinlog是在我的服务器上所在的位置,可以使用whereis mysqlbinlog查看所在位置,最后的test是数据库的名字,当敲完回车后,数据就回来了,注意,logbin只对加完配置后的操作生效,以前的数据是不生效的,请慎重。

5.结语

好了,以上便是删库恢复的大致过程,如有错误或遗漏,请多多指教。