前提条件
容器数据库配文件开启bin-log
#标识该语句最初从哪个server写入 server-id = 1 log-bin = /var/lib/mysql/mysql-bin
操作如下
[root@wuweixiang javaweb-compose]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c9c5050353b3 javaweb-compose_tomcat "catalina.sh run" 35 minutes ago Up 35 minutes 0.0.0.0:8080->8080/tcp tomcat-8.5.35-jre8 d8c396c5afb7 javaweb-compose_redis_slave "docker-entrypoint.s…" 35 minutes ago Up 35 minutes 6379/tcp, 0.0.0.0:6380->6380/tcp redis-slave-5.0.2 d4678fc3525c javaweb-compose_redis_master "docker-entrypoint.s…" 35 minutes ago Up 35 minutes 0.0.0.0:6379->6379/tcp redis-master-5.0.2 e7fa5e29dc5a javaweb-compose_mysql "docker-entrypoint.s…" 35 minutes ago Up 35 minutes 33060/tcp, 0.0.0.0:3308->3306/tcp mysql-5.7 57ed6cfc9b24 javaweb-compose_activemq "/app/run.sh" 35 minutes ago Up 35 minutes 1883/tcp, 5672/tcp, 61613-61614/tcp, 61616/tcp, 0.0.0.0:8161->8161/tcp activemq-5.14.3 d410aa3412c3 portainer/portainer "/portainer" 22 hours ago Up 22 hours 0.0.0.0:9000->9000/tcp portainer [root@wuweixiang javaweb-compose]# docker exec -it e bash root@mysql:/# cd /var/lib/mysql/ root@mysql:/var/lib/mysql# ls aaa ca-key.pem client-cert.pem ib_buffer_pool ib_logfile1 ibtmp1 mysql-bin.000001 mysql-bin.000003 mysql-bin.000005 mysql-slow.log mysqld-error.log private_key.pem server-cert.pem sys auto.cnf ca.pem client-key.pem ib_logfile0 ibdata1 mysql mysql-bin.000002 mysql-bin.000004 mysql-bin.index mysql.log performance_schema public_key.pem server-key.pem root@mysql:/var/lib/mysql# mysqlbinlog --no-defaults mysql-bin.000004
通过前面操作步骤我们知道,在删除数据之前,我们生成了 mysql-bin.000005
日志文件,所以我们只要恢复到这个时间点即可,上图中我已找到了这个时间。
命令如下:
root@mysql:/var/lib/mysql# mysqlbinlog --no-defaults --stop-datetime='2018-12-12 15:33:29' /var/lib/mysql/mysql-bin.000004 |mysql -uroot -p
Enter password:
再看数据库数据,恢复成功。