基于docker-compose通过指定镜像做版本升级
·
#离线做mysql升级 切记数据要放linux本地
#去可有网络的docker
docker pull mysql:latest
#将mysql的镜像导出成tar文件到当前文件夹
docker save mysql:latest -o mysql.tar
#新无网络机器导入
docker load -i mysql.tar
#查看
#进入docker
docker exec -it 0e86322c372a /bin/bash
docker exec -it 0e86322c372a mysqldump -uroot -pJmkx2022 --all-databases > \
/tmp/bak_db_20240403.sql
#重启两个服务
docker-compose restart web mysql
#停止容器
docker stop [容器名/容器id]
#拉起
docker-compose -f docker-compose.yml up -d web mysql
#docker-compose restart mysql8.0
docker-compose -f docker-compose.yml up -d grafana
docker-compose.yml文件
version: '3'
services:
mysql8.0:
# 镜像名
image: mysql:latest
# 容器名(以后的控制都通过这个)
container_name: mysql8.0
# 重启策略
restart: always
environment:
# 时区上海
# TZ: Asia/Shanghai
# root 密码
MYSQL_ROOT_PASSWORD: Jmkx2022
# 映射端口
ports:
- 3306:3306
volumes:
- /mnt/mysql/mysql-datadir:/var/lib/mysql # 映射数据目录,宿主机:容器
- /mnt/mysql/conf.d:/etc/mysql/conf.d # 映射配置目录,宿主机:容器
- /mnt/mysql/mysql-log:/var/log/mysql #映射日志目录,宿主机:容器
- /etc/localtime:/etc/localtime:ro # 让容器的时钟与宿主机时钟同步,避免时间的问题,ro是read only的意思,就是只读。
command:
# 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
#8.4以后别用下面这个配置
#--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
grafana:
image: grafana/grafana:latest
# 容器名(以后的控制都通过这个)
container_name: grafananew
# 重启策略
restart: always
environment:
GF_SECURITY_ADMIN_PASSWORD: admin
ports:
- 3000:3000
user: "472"
volumes:
- /var/lib/grafana:/var/lib/grafana # 映射数据目录,宿主机:容器
- /var/log/grafana:/var/log/grafana # 映射日志目录,宿主机:容器
- /etc/grafana/grafana.ini:/etc/grafana/grafana.ini # 映射配置目录,宿主机:容器
- /var/lib/grafana/plugins/:/var/lib/grafana/plugins
- /etc/localtime:/etc/localtime:ro
#看日志查看问题
#docker-compose logs grafana
更改image_id的tag名称
docker tag 56a8c14e1404 mysql:9
升级失败回滚:
docker rmi -f <image_id>
一定要把新镜像删了(不然说不让新降级到旧),其次报错data文件夹初始化失败。需要删了
恢复数据
先复制sql到容器内
docker cp /tmp/bak_db_20241201.sql <容器名称或 ID>:/home/
恢复之前一定要
set global innodb_strict_mode=off;
show variables like '%strict_mode%';
mysql -u root -p< /root/backup.sql
mysql -uroot -p 命令 输入自己的密码登录 MySQL
source 全路径的sql文件
给多用户权限密码
GRANT ALL PRIVILEGES ON hw.* TO 'mysql_hw'@'%';
GRANT ALL PRIVILEGES ON ads_data_screen.* TO 'bigdata_user'@'%';
set global innodb_strict_mode=off;
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)