docker安装mysql以及数据库恢复/找回数据 您所在的位置:网站首页 mysql数据库找回 docker安装mysql以及数据库恢复/找回数据

docker安装mysql以及数据库恢复/找回数据

2024-06-15 08:47| 来源: 网络整理| 查看: 265

 环境准备

docker的安装

docker命令安装mysql 安装步骤

这里默认安装是mysql8,如果并发高可以换成5.7

首先执行docker pull mysql:8.0.18                                                                                                                        

Shelldocker run --name mysql-dev -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:8.0.18

安装成功后,查看容器

docker sp | grep mysql

docker-compose 安装

执行附件的mysql-compose.yaml文件,内容如下:

version: "2.2" services:   mysql:     image: mysql:8.0.18     container_name: mysql-dev     volumes:       - ./conf:/etc/mysql/conf.d       - ./logs:/logs       - ./data:/var/lib/mysql     ports:       - "3306:3306"     environment:       - MYSQL_ROOT_PASSWORD=123456     restart: always     command:       --max_connections=1000       --character-set-server=utf8mb4       --collation-server=utf8mb4_general_ci       --lower_case_table_names=1

可以这里直接下载mysql-compose.yaml

 执行命令如下:

docker-compose -f mysql-compose.yaml up

后续如果手动启动,命令如下

 docker-compose -f mysql-compose.yaml start

 后续如果手动停止,命令如下

 docker-compose -f mysql-compose.yaml stop

数据库安装完成后

开启大小写敏感

首先停止容器,并删除挂载的data,

Docker stop 《容器id》

然后把容器内的my.cnf拷贝出来(容器内没有vi命令,不方便编辑),添加lower_case_table_names=1

命令如下:

Shelldocker cp 《容器id》:/etc/mysql/my.cnf my.cnf

ShellVi my.cnf

Shelldocker cp my.cnf 《容器id》:/etc/mysql/my.cnf

执行完成后启动容器

docker start 《容器id》

docker

开启远程连接

接下来需要开启远程连接和大小写敏感。

首先进入容器

执行命令

docker exec -it 《容器id》 bash

然后执行命令

mysql -uroot -p123456

连接上mysql

然后执行

Shelluse mysql; select host,user from user; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; flush privileges;

就可以通过数据库连接工具尝试连接

数据恢复

不到万不得已,不得使用,binlog数据可能不完整(binlog默认会定期删除)。

首先进入存储地址,如果docker安装的进入挂载地址,不知道挂载地址的可以进入容器

docker exec -it 《容器id》 /bin/bash

进入数据库数据存储地址,先执行sql

sql:  SHOW VARIABLES LIKE '%log_bin%';

获取到binlog存储地址后,进入

如果知道挂载地址,直接进入挂载地址即可。

执行下面命令

Plain Textmysqlbinlog --start_datetime="2023-02-02 00:00:00" --stop_datetime="2023-04-23 12:45:00" binlog.000017 > tmp.sql

参数说明

--start_datetime 恢复数据的开始时间

--stop_datetime 恢复数据的截止时间

--binlog.000017 为当前mysql的binlog文件

生成后如果在容器中,拷贝出来,查看里面内容是否是需要的

docker cp 40b529ef92f5:/var/lib/mysql/tmp.sql tmp.sql

40b529ef92f5 是容器id,tmp.sql是之前通过binlog导出来的sql文件

导出来后检查是否是需要的sql,确认无误后执行

mysql -uroot -p -s -N -f -D techx < tmp.sql

这命令会忽略错误,一直执行完所有binlog日志

执行结束后,再把剩余的binlog文件全部按上面步骤执行完即可。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有