范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

MySQL数据库使用pgchameleon迁移至openGauss

  pg_chameleon介绍
  pg_ chameleon是一个用 Python 3编写的实时复制工具,经过内部适配,目前支持MySQL迁移到openGauss。工具使用 mysql- replication库从 MySQL中提取 row  images,这些 row  images将以 jsonb格式被存储到openGauss中。在openGauss中会执行一个 pl/ pgsql函数,解码 jsonb并将更改重演到 openGauss。同时,工具通过一次初始化配置,使用只读模式,将 MySQL的全量数据拉取到openGauss,使得该工具提供了初始全量数据的复制以及后续增量数据的实时在线复制功能。pg_ chameleon的特色包括: 通过读取MySQL的binlog,提供实时在线复制的功能。  支持从多个MySQL schema读取数据,并将其恢复到目标openGauss数据库中。源schema和目标schema可以使用不同的名称。  通过守护进程实现实时复制,包含两个子进程,一个负责读取MySQL侧的日志,一个负责在openGauss侧重演变更。
  使用pg_chameleon将MySQL数据库迁移至openGauss,通过pg_chameleon的实时复制能力,可以大大降低系统切换数据库时的停服时间。
  pg_chameleon在openGauss上的使用注意事项  pg_chameleon依赖psycopg2,psycopg2内部通过pg_config检查PostgreSQL版本号,限制低版本PostgreSQL使用该驱动。而openGauss的pg_config返回的是openGauss的版本号(当前是 openGauss 2.0.0),会导致该驱动报版本错误,"Psycopg requires PostgreSQL client library (libpq) >= 9.1"。解决方案为通过源码编译使用psycopg2,并去掉源码头文件 psycopg/psycopg.h 中的相关限制。  pg_chameleon通过设置LOCK_TIMEOUT GUC参数限制在PostgreSQL中的等锁的超时时间。openGauss不支持该参数(openGauss支持类似的GUC参数lockwait_timeout,但是需要管理员权限设置)。需要将pg_chameleon源码中的相关设置去掉。  pg_chameleon用到了upsert语法,用来指定发生违反约束时的替换动作。openGauss支持的upsert功能语法与PostgreSQL的语法不同。openGauss的语法是 ON DUPLICATE KEY UPDATE { column_name = { expression | DEFAULT } } [, ...]。PostgreSQL的语法是 ON CONFLICT [ conflict_target ] DO UPDATE SET { column_name = { expression | DEFAULT } }。两者在功能和语法上略有差异。需要修改pg_chameleon源码中相关的upsert语句。  pg_chameleon用到了CREATE SCHEMA IF NOT EXISTS、CREATE INDEX IF NOT EXISTS语法。openGauss不支持SCHEMA和INDEX的IF NOT EXISTS选项。需要修改成先判断SCHEMA和INDEX是否存在,然后再创建的逻辑。  openGauss对于数组的范围选择,使用的是 column_name[start, end] 的方式。而PostgreSQL使用的是 column_name[start : end] 的方式。需要修改pg_chameleon源码中关于数组的范围选择方式。  pg_chameleon使用了继承表(INHERITS)功能,而当前openGauss不支持继承表。需要改写使用到继承表的SQL语句和表。
  接下来我们将演示如何使用pg_chameleon迁移MySQL数据库至openGauss。
  配置pg_chameleon
  pg_chameleon通过 ~/.pg_chameleon/configuration 下的配置文件config-example.yaml定义迁移过程中的各项配置。整个配置文件大约分成四个部分,分别是全局设置、类型重载、目标数据库连接设置、源数据库设置。全局设置主要定义log文件路径、log等级等。
  类型重载让用户可以自定义类型转换规则,允许用户覆盖已有的默认转换规则。目标数据库连接设置用于配置连接至openGauss的连接参数。源数据库设置定义连接至MySQL的连接参数以及其他复制过程中的可配置项目。
  详细的配置项解读,可查看官网的说明:
  https://pgchameleon.org/documents_v2/configuration_file.html
  下面是一份配置文件示例:
  # global settings
  pid_dir: "~/.pg_chameleon/pid/"
  log_dir: "~/.pg_chameleon/logs/"
  log_dest: file
  log_level: info
  log_days_keep: 10
  rollbar_key: ""
  rollbar_env: ""
  # type_override allows the user to override the default type conversion
  # into a different one.
  type_override:
  "tinyint(1)":
  override_to: boolean
  override_tables:
  - "*"
  # postgres destination connection
  pg_conn:
  host: "1.1.1.1"
  port: "5432"
  user: "opengauss_test"
  password: "password_123"
  database: "opengauss_database"
  charset: "utf8"
  sources:
  mysql:
  db_conn:
  host: "1.1.1.1"
  port: "3306"
  user: "mysql_test"
  password: "password123"
  charset: "utf8"
  connect_timeout: 10
  schema_mappings:
  mysql_database:sch_mysql_database
  limit_tables:
  skip_tables:
  grant_select_to:
  - usr_migration
  lock_timeout: "120s"
  my_server_id: 1
  replica_batch_size: 10000
  replay_max_rows: 10000
  batch_retention: "1 day"
  copy_max_memory: "300M"
  copy_mode: "file"
  out_dir: tmp
  sleep_loop: 1
  on_error_replay: continue
  on_error_read: continue
  auto_maintenance: "disabled"
  gtid_enable: false
  type: mysql
  keep_existing_schema: No
  以上配置文件的含义是,迁移数据时,MySQL侧使用的用户名密码分别是 mysql_test 和 password123。MySQL服务器的IP和port分别是1.1.1.1和3306,待迁移的数据库是mysql_database。
  openGauss侧使用的用户名密码分别是 opengauss_test 和 password_123。openGauss服务器的IP和port分别是1.1.1.1和5432,目标数据库是opengauss_database,同时会在opengauss_database下创建sch_mysql_database schema,迁移的表都将位于该schema下。
  需要注意的是,这里使用的用户需要有远程连接MySQL和openGauss的权限,以及对对应数据库的读写权限。同时对于openGauss,运行pg_chameleon所在的机器需要在openGauss的远程访问白名单中。对于MySQL,用户还需要有RELOAD、REPLICATION CLIENT、REPLICATION SLAVE的权限。
  下面开始介绍整个迁移的步骤。
  创建用户及database
  在openGauss侧创建迁移时需要用到的用户以及database。
  在MySQL侧创建迁移时需要用到的用户并赋予相关权限。
  开启MySQL的复制功能
  修改MySQL的配置文件,一般是/etc/my.cnf或者是 etc/my.cnf.d/ 文件夹下的cnf配置文件。在[mysqld] 配置块下修改如下配置(若没有mysqld配置块,新增即可):
  [mysqld]
  binlog_format= ROW
  log_bin = mysql-bin
  server_id = 1
  binlog_row_image=FULL
  expire_logs_days = 10
  修改完毕后需要重启MySQL使配置生效。
  运行pg_chameleon进行数据迁移
  1. 创建python虚拟环境并激活
  python3 -m venv venv
  source venv/bin/activate
  2. 下载安装psycopg2和pg_chameleon
  更新pip:pip install pip --upgrade
  将openGauss的 pg_config 工具所在文件夹加入到 $PATH 环境变量中。例如:
  export PATH={openGauss-server}/dest/bin:$PATH
  下载psycopg2源码(https://github.com/psycopg/psycopg2 ),去掉检查PostgreSQL版本的限制,使用 python setup.py install编译安装。
  下载pg_chameleon源码(https://github.com/the4thdoctor/pg_chameleon ),修改前面提到的在openGauss上的问题,使用 python setup.py install编译安装。
  3. 创建pg_chameleon配置文件目录
  chameleon set_configuration_files
  4. 修改pg_chameleon配置文件
  cd ~/.pg_chameleon/configuration
  cp config-example.yml default.yml
  根据实际情况修改 default.yml 文件中的内容。重点修改pg_conn和mysql中的连接配置信息,用户信息,数据库信息,schema映射关系。前面已给出一份配置文件示例供参考。
  5. 初始化复制流
  chameleon create_replica_schema --config default
  chameleon add_source --config default --source mysql
  此步骤将在openGauss侧创建用于复制过程的辅助schema和表。
  6. 复制基础数据
  chameleon init_replica --config default --source mysql
  做完此步骤后,将把MySQL当前的全量数据复制到openGauss。
  可以在openGauss侧查看全量数据复制后的情况。
  7. 开启在线实时复制
  chameleon start_replica --config default --source mysql
  开启实时复制后,在MySQL侧插入一条数据:
  在openGauss侧查看 test_decimal 表的数据:
  可以看到新插入的数据在openGauss侧成功被复制过来了。
  8. 停止在线复制
  chameleon stop_replica --config default --source mysql
  chameleon detach_replica --config default --source mysql
  chameleon drop_replica_schema --config default
  更多内容请参考:
  https://docs.opengauss.org/zh/docs/3.1.0/docs/BriefTutorial/BriefTutorial.html

邢台免费一日游推荐?邢台免费一日游推荐?邢台,简称邢,古称邢州顺德府,是河北省地级市。邢台免费一日游方案有多种,这里的免费一日游,不是吃住全免费,一般指景区门票免费。1推荐方案一邢台森林公园邢台动物园你们听过最感人的故事是什么?我是一名参加过老山对越防御作战的老兵。我所在的连,战后经中央军委批准,由成都军区授予英雄连称号。在此要说明一下,本来授予军区级英雄称号(二级英模称号),是无需中央军委批准的,只需军你在火车上遇到最吹牛的事情是什么?我曾经在火车上碰见过一个奇葩,是在卧铺,我隔壁有个铺位一个女的从上车就开始和上下铺白话上了,什么自己工作好,老公的工作也好,家里的房子好几百平方,两口子一家一台车,有银行信贷给打电滕州的房价会跌吗?可以预见,滕州市区房价三年后必定跌落,即将实施的乡村振兴战略,合村并居,危房改造,村庄建设大行动将会给城区居高不下的房价带来冲击,镇驻地商业街扩容升级也会让更多农民就近购房就业居住淄博市张店区新区房价15000元人民合理吗?你怎么看?市场经济的发展自有它的规律在,假如它的内在价格不到15000,他硬卖15000,那结果肯定是他卖不出去,但现实告诉我们他卖的很好,前几天金科的房子,先收保证金,还要摇号。就像前几天你身边靠赌博为生的人最终是什么样?我有一个朋友非常的爱好赌博,只要一有空余时间就想着那里有赌博,尤其是过年回来了,刚回来时抽烟都是抽几十块一包的烟,一副很有成就的派头,整天就是很难在家找得到他,一日三餐都是在外面吃在死刑犯被枪毙的最后一刻,执法人员为了顺利执刑会安慰犯人吗?你当执法人员是街道办事处大妈吗?死刑犯被枪毙的最后全身绑着法绳,法警左右押着,如果当天只执行一个犯人,执行法警往往趁犯人不注意一枪击毙。左右两名法警顺势一放手,接下来就是法医和火葬农村大病补助还有吗?我是一个乡镇民政办主任,我来为大家介绍一下最新的大病救助政策。套用一句俗话,农村大病救助过去有,现在有,将来也一定还会有。不过,随着时代的发展,大病救助也一直在发生变化。在说农村大月收入不足三千的人,每月的开销都是怎样的?我有一个邻居,她每个月的养老金,就是两千三百元,距离3000元还有很大一段距离,她唯一的儿子,没有正式工作,收入很不稳定,前不久,又离婚了,她每个月要从她,微薄的,二千三百元中,拿如果老楼拆了每户出20万重新盖,这样比加装电梯是否更合理?给开发商搞,不用出二十万。因为现在的旧楼房都是五六层楼高,拆除比较容易,开发商拆除后可以建二三十层楼高的住宅小区,老住户一套赔一套,剩下的全由开发商卖掉,如今的老小区一般都是在闹市监狱里面的伙食好不好?监狱里面的伙食标准是这样的早餐馒头,大米粥,小咸菜!午餐馒头,大锅炖菜,每星期改善二次,基本是星期三和刑期六,这两天的午餐米饭,带肉的炖菜。晚餐与午餐一样!元旦改善两天,春节改善五
屏保限定新年将至,福兔迎春癸卯兔年即将到来,大家的手机屏保都准备好了吗?卯兔,是十二生肖地支的第四位传说兔子是天上的玉衡星变化而成生性灵活机警,温柔欢乐象征敏捷机智长寿吉祥温顺可爱幸福在全世界都收获了不少粉农产品电子商务标准化,应该从哪几个方面入手?近年来,随着互联网的普及以及云计算大数据物联网等新兴技术的深度应用,我国电子商务发展迅猛,带动了供给侧结构性改革,创造了消费新需求和就业创业新渠道。同时,我国电子商务正加速与其他产模寿推出精英级合金骨架拼装机甲产品模寿的至臻级合金骨架成品在国内有很好的口碑,不但产品质量和品控过硬,而且售价也很合理。整体口碑在国内模玩圈打下基础了。今年推出新系列商品,精英级的合金骨架拼装机甲。骨架为一体成型的智能手表测血氧靠谱吗?智能手表能否代替血氧仪?在对抗新冠的过程中,血氧检测十分必要。消息一出,立即引爆血氧市场。于是,人们开始关注血氧饱和度指标,并开始抢购血氧仪进行日常监测,但由于血氧仪的市场体量都比较小,面对如今庞大的需求活到五十五,不算白受苦苦不尽,甘不来!五十岁的人生,饱含岁月的沧桑。经历过酸甜苦辣,方知今日生活来之不易!所有的苦都不会白受,人没有一天是白活的!人生路就是一步一个脚印这么走出来来的!五十岁以后,有一个栉风沐雨又何妨嘘寒问暖,冬去春来,岁月只轮不返。装怯作勇,都是男子汉。扶摇大江南北,装不下东西少年。再后来,豪气干云,调笑武媚娘。人间。情无恙,栉风沐雨,又有何妨,纵辞暮尔尔,烟火年年。可惜挖空20年增长超400倍!西班牙橄榄油对华出口快速增长视频加载中(央视财经天下财经)西班牙橄榄油的产量和出口量,都位居世界第一,主要的出口目的地包括美国法国和葡萄牙等国。而近年来,中国已经成为西班牙橄榄油出口增长速度最快的市场之一。近章泽天国外出席活动!穿得低调但妆容挺明媚,东方气质赢很大很多时候一个人的气质会跟着装的风格有一定的改变,这也是一种快速有效改变个人外在形象的方式。章泽天以奶茶妹妹出名,校园女神的即视感。而升级成为了京东老板娘之后,身份有所转变,在着装风首破40万亿!外贸进出口总值再创新高点蓝字关注,不迷路2022年外贸实现多项新突破。(来源国新办,栾海军摄)1月13日,国新办举行2022年全年进出口情况新闻发布会。据海关统计,2022年中国货物贸易进出口总值为42这里下了一场雪,霸占冬日风流,美翻了!说好的大雪天,真的来了!一夜之间,嘉鱼许多地方都白了头天地茫茫,白雪皑皑满满的都是梦幻一时间刷屏朋友圈!漫天琼花飞舞,银装素裹忽然之间千树万树梨花开从容温柔且富有诗意踏雪寻雾,围炉中国儿童因用错药导致耳聋的数量惊人,而解决问题很严峻中国儿童用药引发耳聋已经成为一个令人担忧的问题。根据中国聋儿协会的统计,我国儿童因用错药导致耳聋的数量已经达到三十万。这一数字可谓惊人,在把握这一问题上,人们发现面临着严峻挑战。首