分享更有价值
被信任是一种快乐

MySQL和PostgreSQL之间如何跨数据库进行复制

文章页正文上

这篇文章主要介绍“MySQL和PostgreSQL之间如何跨数据库进行复制”,在日常操作中,相信很多人在MySQL和PostgreSQL之间如何跨数据库进行复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL和PostgreSQL之间如何跨数据库进行复制”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!涉及跨数据库复制的databases一般被称作异构databases。这是将数据从一种RDBMS server复制到另一种server的一种很好的方法。PostgreSQL和MySQL都是传统的RDBMS数据库,但是他们也提供了NoSQL的能力。本文主要从RDBMS的角度讨论PostgreSQL和MySQL之间的复制问题。不对复制内部机制做详细介绍,只对一些基本元素、如何配置、有点、限制以及一些使用案例进行阐述。通常情况下,两个种类相同的主备之间使用binary模式或者query模式进行复制。复制的目的在于,在备上能够得到主的实时备份数据,从而形成一个active-passive模式(因为复制只配置单向复制)。当然,也可以配置成向同步,构建active-active模式。可以在两个不同数据库server之间配置上面的两种模式,其中一个数据库server可以配置从另外一个完全不同的数据库server上接收副本数据并维护副本数据的实时快照。MySQL和PostgreSQL通过原生机制或者第三方插件(包括binlog方法、磁盘块方法、基于语句和行的方法)完成上面提到的模式。由于MySQL和PostgreSQL使用不同的复制协议,所以他们之间不能互相交互。为了达到通信流的目的,可以使用一个开源软件pg_chameleon。pg_chameleon是由python3开发的MySQL to PG的复制工具。该插件也会使用一个mysql-replication的开源库,该库也是由Python3开发。从MySQL表中拉取行镜像并存储成JSONB形式,然后同步到PG数据库。PG数据库通过pl/pgsql进行解析并回放。1、同一个集群中多个MySQL schema可以复制到一个PG database,形成many-to-one复制模式。2、源和目的schema名可以不一样3、复制数据可以从mysql级联副本中拉取。4、会排除复制失败的表及复制过程中产生错误的表。5、每个复制功能通过守护进程进行管理6、配置参数和配置文件以yaml结构进行控制。HostVm1Vm2操作系统Centos linux release 7.6 x86_64Centos linux release 7.5 x86_64数据库版本MySQL5.7.26PostgreSQL10.5数据库端口号33065433IP地址192.168.56.102192.168.56.106首先需要安装Python,他在创建虚拟环境以及激活的时候会用到。安装成功后需要免费主机域名创建并激活虚拟环境。另外需要将pip模块升级到最新版本。pg_chameleon最新版本是2.0.10,为了不引入新的bug,建议先使用2.0.9版本。下一步需要通过set_configuration_files配置启用pg_chameleon,并创建默认路径以及配置文件:此时,创建一个config-example.yml文件作为默认的配置文件。一个简单的配置例子如下所示:本文使用的配置文件是pg_chameleon提供的样例文件改造过的,以适应源和目标环境。下面是配置文件改造的摘要。默认情况下.yml文件有“global settings”段,用以控制详细信息比如锁文件位置、日志位置、日志保留期等。接着是“type override”段,这部分是在复制期间重写类型的集合。默认情况下使用样本类型重写规则,即将tinyint(1)转换成布尔值。然后是“pg_conn”,是目标数据库连接的详细信息。最后一部分是源数据库信息,控制源数据库的连接、源和目标直接的schema映射、需要跳过不复制的表、时间超时、内存等配置。注意,“sources”表示可以有多个源。本文使用的demo中有一个“world_x”database,包括4个表,MySQL社区提供了下载位置:https://dev.mysql.com免费主机域名/doc/index-other.html。在MySQL和PostgreSQL中都需要创建一个专用用户“usr_replica”,用以复制。在MySQL中该用户需要赋予额外的权限用以访问需要复制表:PostgreSQL段创建一个“db_replica”database用以接收MySQL数据。PG中的“usr_replica”用户自动配置成两个schemas(pgworld_x和sch_chameleon)的拥有者。这两个schema包含实际复制表和catalog表。通过create_replica_schema参数自动配置:MySQL配置如下,需重启服务才能生效:此时需要测试下连接是否正常,保证执行pg_chameleon命令时不出问题:PostgreSQL端:MySQL端:下面pg_chameleon的3个命令时搭建环境时执行,添加源并初始化一个备。“create_replica_schema”创建默认的schema(sch_chameleon)以及复制的schema(pgworld_x)。“add_source”通过读取配置文件信息添加source database,本文中是“mysql”。“init_replica”基于配置文件进行初始化。上面的三个命令执行成功后,会分别输出明显的执行成功信息。任何错误和语法错误都会清晰的输出。最后一步是通过“start_replica”启动复制:通过show_status显示复制状态:通过ps命令查看守护进程:直到“real-time 回放”搭建复制才能完成。涉及创建表、向MySQL数据库中插入数据;PG的sync_tables命令更新守护进程并将表记录复制到PG:测试确认复制正常:如果是一个迁移需求,执行下面命令标记迁移结束。在所有需要复制的表复制完成后执行这些命令:下面的命令可选:安装并配置比较简单错误日志易看懂无需更改任何配置,初始化完成后可以添加额外的复制表可配置成多源复制可以指定不复制哪些表仅支持MySQL5.5及其以上的版本到Pg9.5及其以上之间进行复制每个复制表需要有主键或唯一键只能MySQL到PG到此,关于“MySQL和PostgreSQL之间如何跨数据库进行复制”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注云技术网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: 影响MySQL主从延迟的因素有哪些

这篇文章主要介绍了影响MySQL主从延迟的因素有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 1.主库写入二进制日志的时间解决方法:控制主库的事务大小,分割大事务为多个小事务例如10万行的…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册