迁移Ghost数据库MariaDB到 MySQL 8.0
Dec 26, 2022 — Softwares
本次更新花费 10 分钟左右,基本上纯 docker 命令操作,不难。
当然,为了避免一些瞎操作导致灾难事件,可以先做个系统备份。
- 停止 ghost 容器
- dump mariadb 数据库
sudo docker exec blog_mariadb_1 mysqldump --user ghost --password=ghost ghost > db_backup.sql- 停止 mariadb 容器
- 编辑
docker-compose.yml文件
假如原先是:
mariadb: image: 'mariadb:latest' restart: always volumes: - mariadb:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=ghost - MYSQL_DATABASE=ghost - MYSQL_USER=ghost - MYSQL_PASSWORD=ghost
ghost: image: 'ghost:alpine' restart: always depends_on: - mariadb volumes: - ./ghost:/var/lib/ghost/content environment: - database__client=mysql - database__connection__host=mariadb改成:
mysql: image: 'mysql:8.0' restart: always volumes: - mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=ghost - MYSQL_DATABASE=ghost - MYSQL_USER=ghost - MYSQL_PASSWORD=ghost
ghost: image: 'ghost:alpine' restart: always depends_on: - mysql volumes: - ./ghost:/var/lib/ghost/content environment: - database__client=mysql - database__connection__host=mysql- 启动 mysql 容器
sudo docker-compose up -d mysql这里会自动创建 ghost数据库,后续导入用到。
- 导入备份的数据,这里遇到个问题,通过
docker exec导入失败,所以我先复制到容器内,然后进入容器 bash:
sudo docker cp db_backup.sql blog_mysql_1:/sudo docker exec -it blog_mysql_1 /bin/bash然后执行 mysql 的命令导入:
mysql --user ghost --password=ghost ghost < /db_backup.sql数据不多的话,很快就完成了,然后输入exit退出容器。
- 删除创建的容器,再重新创建
sudo docker-compose down --remove-orphans && sudo docker-compose up -d至此,所有操作基本上完成了,再次访问博客应该没啥问题了。