#离线做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;


 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐