当前位置:   article > 正文

pgloader部署及使用-mysql迁移pg_pgloader 官方文档

pgloader 官方文档

pgloader用于将mysql数据库迁移到pg数据库,之前用DTS进行迁移,自增主键没有正常迁移,所以改为使用pgloader。pgloader部署在linux环境,支持apt-get 方式、源码部署和docker部署。

 

pgloader官网:https://pgloader.io/

pgloader mysql迁移pg官方技术文档

 

服务器系统版本

#lsb_release -a

LSB Version: :core-4.1-amd64:core-4.1-noarch

Distributor ID: CentOS

Description: CentOS Linux release 7.5.1804 (Core)  

Release: 7.5.1804

Codename: Core

1.源码部署

在centos系统中使用源码方式迁移失败。

  1. # 源码下载地址
  2. https://github.com/dimitri/pgloader.git
  3. # 上传源码文件至/opt
  4. cd /opt
  5. # 解压pgloader源码
  6. unzip pgloader-v3.6.1.zip
  7. # 进入pgloader目录
  8. cd pgloader
  9. # 给bootstrap-centos7.sh赋执行权限
  10. chmod +x bootstrap-centos7.sh
  11. # 执行chmod +x bootstrap-centos7.sh
  12. ./bootstrap-centos7.sh
  13. # 编译
  14. make pgloader
  15. # 编译过程出现以下提示时,输入0继续:
  16. # 但不知道是不是这里sbcl安装出现问题,源码方式部署迁移均未成功
  17. # 无论装哪个pgloader,sbcl版本一直是1.4.0-1.el7
  18. # sbcl地址:http://www.sbcl.org/platform-table.html
  19. # 这个版本太低了,迁移时会报一个控制栈耗尽的错误 Control stack exhausted (no more space for function call frames).
  20. This is probably due to heavily nested or infinitely recursive function
  21. calls, or a tail call that SBCL cannot or has not optimized away.
  22. # 这个问题和服务器资源没有关系,服务器资源还很充足。
  23. Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
  24. restarts (invokable by number or by possibly-abbreviated name):
  25. 0: [CONTINUE ] Use the new definition of SCHEMA,
  26. invalidating already-loaded code and
  27. instances.
  28. 1: [RECKLESSLY-CONTINUE ] Use the new definition of SCHEMA as if it
  29. were compatible, allowing old accessors to
  30. use new instances and allowing new
  31. accessors to use old instances.
  32. 2: [TRY-RECOMPILING ] Recompile catalog and try loading it again
  33. 3: [RETRY ] Retry
  34. loading FASL for #<CL-SOURCE-FILE "pgloader" "src" "utils" "catalog">.
  35. 4: [ACCEPT ] Continue, treating
  36. loading FASL for #<CL-SOURCE-FILE "pgloader" "src" "utils" "catalog">
  37. as having been successful.
  38. 5: Retry ASDF operation.
  39. 6: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
  40. configuration.
  41. 7: [ABORT ] Give up on "pgloader"
  42. 8: Ignore runtime option --eval "(ql:quickload \"pgloader\")".
  43. 9: Skip rest of --eval and --load options.
  44. 10: Skip to toplevel READ/EVAL/PRINT loop.
  45. 11: [EXIT ] Exit SBCL (calling #'EXIT, killing the process).
  46. (SB-KERNEL::%REDEFINE-DEFSTRUCT #<SB-KERNEL:STRUCTURE-CLASSOID SCHEMA> #<SB-KERNEL:LAYOUT for SCHEMA {20557883}> #<SB-KERNEL:LAYOUT for SCHEMA, INVALID=:UNINITIALIZED {205B0783}>)
  47. 0]
  48. # 查看pgloader版本
  49. ./pgloader --version
  50. ------------------------
  51. pgloader version "3.6.1"
  52. compiled with SBCL 1.4.0-1.el7
  53. # 迁移mysql数据到pg库 -d:debug级别日志,迁移时报控制栈耗尽的错误
  54. ./pgloader -d mysql://user@localhost/mysql postgresql://user@localhost/pg
  55. # pgloader日志及迁移表缓存文件
  56. /tmp/pgloader

2.docker命令方式迁移

该方式只能使用默认配置进行迁移,如果需要个性化配置,使用下方docker配置文件方式迁移。

  1. # docker版本
  2. docker --version
  3. Docker version 1.13.1, build 0be3e21/1.13.1
  4. # 拉取镜像
  5. docker pull dimitri/pgloader:ccl.latest
  6. # 查看pgloader版本 --rm:容器执行完自动删除
  7. docker run --rm --name pgloader.tmp dimitri/pgloader:ccl.latest pgloader --version
  8. # pgloader版本
  9. pgloader version "3.6.3~devel"
  10. compiled with Clozure Common Lisp Version 1.11.5/v1.11.5 (LinuxX8664)
  11. # mysql数据库迁移pg 通过命令使用默认配置迁移
  12. #docker run --rm --name pgloader.tmp dimitri/pgloader:ccl.latest pgloader -d mysql://user@localhost/mysql postgresql://user@localhost/pg

3.docker配置文件方式迁移

通过配置文件方式迁移可以修改默认迁移配置,比如规定类型迁移的标准、排除需要迁移的表等。

pgloader默认迁移转换规则:https://pgloader.readthedocs.io/en/latest/ref/mysql.html#default-mysql-casting-rules

  1. pg.loader文件内容
  2. # CAST type tinyint to smallint drop typemod:迁移时将mysql中的tinyint字段指定为int2并忽略长度。
  3. # 其他为默认配置
  4. ------------------------------------
  5. LOAD DATABASE
  6. FROM mysql://user@localhost/mysql
  7. INTO postgresql://user@localhost/pg
  8. WITH include drop, create tables, create indexes, reset sequences,
  9. workers = 8, concurrency = 1,
  10. multiple readers per thread, rows per range = 50000
  11. CAST type tinyint to smallint drop typemod
  12. ;
  13. ------------------------------------
  14. # 运行容器
  15. docker run -tid --name pgloder.ccl dimitri/pgloader:ccl.latest
  16. # 复制配置文件到容器
  17. docker cp /root/pgloader/pg.loader pgloder.ccl:/
  18. # 进入容器
  19. docker exec -it pgloder.ccl /bin/bash
  20. # 使用文件方式执行迁移
  21. pgloader pg.loader
 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/401330
推荐阅读
相关标签
  

闽ICP备14008679号