docker安装mysql以及数据库恢复/找回数据 | 您所在的位置:网站首页 › mysql数据库找回 › docker安装mysql以及数据库恢复/找回数据 |
环境准备
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 执行附件的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 实验室设备网 版权所有 |