情况描述
目前我的mysql和postgresql都安装在本地, 并且没有开放外部访问权限.
为了节省服务器资源需要把mysql的db数据库数据迁移至postgre.
服务器是CentOS7, docker环境已经安装
拉取镜像
1 |
docker pull dimitri/pgloader |
创建容器
pgloader 没找到合适的yum源, 用源码安装中途卡住, 所以考虑使用docker安装
使用 host 网络模式, 表示容器在本机网络中运行, localhost表示宿主机.
1 |
docker run -itd --network host --name pgloader_container dimitri/pgloader |
编写配置
vim pgloader.load
编辑如下:
1 2 3 4 5 6 |
LOAD DATABASE FROM mysql://root:xxxx@localhost:3306/db INTO pgsql://postgres:xxxx@localhost:5432/db WITH include drop, create tables,disable triggers, create indexes,foreign keys, reset no sequences, workers = 8, concurrency = 1, multiple readers per thread, rows per range = 50000 CAST type timestamp to timestamp drop default drop not null using zero-dates-to-null ALTER SCHEMA 'db' RENAME TO 'public'; |
默认会使用mysql的数据库名称作为pgsql的schema名称, 这里改成默认的public
运行容器
拷贝配置到容器根目录
1 |
docker cp pgload.load pgloader_container:/ |
进入容器, 执行导入, 等待数据转移完成.退出容器:
1 2 3 4 |
docker exec -it pgloader_container /bin/bash pgloader pgloader.load ... ... exit |
如果不再需要, 清除容器和镜像.
1 2 3 |
docker kill pgloader_container docker rm pgloader_container docker image rm dimitri/pgloader |
Views: 5