PostgreSQL、Greenplum内核开发
确定要迁移或同步的源数据库,如,以根用户,使用DMS或psql客户端登陆到源库上,创建插件:dbname=> create extension ali_decoding; 联系DBA,修改源端参数wal_level为logical,并重启实例。
报错信息: Cannot create temp file ...: No space on device 或者 实例因磁盘空间暴增,导致磁盘满而锁定 解决方案: 这种情况可能是由于嵌套SQL、多表关联SQL编写不当,导致的大量内存溢出磁盘。
使用HybridDB PG的外部表输出数据到OSS时,一般会输出成多个文件(文件个数一般与节点数个数一致)。如何输出为一个文件呢?步骤如下: 1)创建示例表: create table test( A1 char(30), A2 char(30), A3 varchar(255).
HybridDB for PG 实例使用方法
有一个功能,是社区官方版"永远"不考虑引入的(参见PG TODO,查找"Oracle-style"),即类似Oracle的Plan Hint。社区开发者的理念是,引入Hint功能,会掩盖优化器本身的问题,导致缺陷不被暴露出来。但对于我们的使用者来讲,遇到某些SQL的查询计划不好,性能出了问题,使用.
1)下载代码
git clone git@github.com:aliyun/rds_dbsync.git
2)下载安装mysql的开发包
下载repo的rpm:wget http://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
安装repo:rpm -Uvh mysql57-community-release-el6-9.noarch.rpm
编辑 vi /etc/yum.repos.d/mysql-community.repo,把除mysql 57外的其他repo的enable设为0
查看可安装的mysql报:yum list mysql-community-*
安装mysql的开发包: yum install mysql-community-devel.x86_64
3)下载安装pg的安装包
下载repo的rpm:wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm
安装repo(注意在rhel平台加上--nodeps否则报错):rpm -ivh pgdg-centos96-9.6-3.noarch.rpm --nodpes
编辑 vi /etc/yum.repos.d/pgdg-96-centos.repo,可能需要把https改成http
安装pg的server和开发包:yum install postgresql96-devel.x86_64 postgresql96-server.x86_64
4) 执行make
5) 打包二进制 make package 将生成一个install目录,里面有二进制和lib
6)执行dbsync:cd install; bin/mysql2pgsql
RDS for PG产品提供的备份下载中的文件是物理备份,可以直接启动。可以使用下面的脚本:
Chnge to you instance user (non-root user)
LOCALUSER=postgres
Change to your actual pg dir
LOCALPGBASEDIR=/usr/local/pgsql
su $LOCALUSER -c "$LOCALPGBASEDIR/bin/pg_ctl start -D $LOCALPGDATA
如果启动遇到信号量方面的错误,请改小数据目录的max_connections参数,再次尝试
检查一下自己的ip地址和实例的白名单设置。这种问题一般是由于ip白名单设置引起
需要安装的软件:
yum install java-1.7.0
yum groupinstall 'X Window System'
yum install postgresql-server.x86_64
useradd postgres
su postgres
initdb -D xdbdata
pg_ctl -D xdbdata -l logfile start
psql
=>alter role postgres password 'xyz';
Cp ojdbc6.jar /opt/PostgreSQL/EnterpriseDB-xDBReplicationServer/lib/jdbc/ojdbc14.jar
/opt/PostgreSQL/EnterpriseDB-xDBReplicationServer/bin/runRepConsole.sh
创建这个插件,需要时数据库的owner。出错原因是你使用的数据库是别的用户为owner的数据库(例如postgres这个默认数据库的owner是超级用户)。
解决方法是,用户自己创建一个自己的数据库
再执行这个就可以了
可以使用
alter role all set local_preload_libraries = 'pg_hint_plan'
自动load。
详细使用方法:
https://yq.aliyun.com/articles/3072?spm=0.0.0.0.44qCsT
RR(repeatable read的隔离级别)的话会的,需要一直保存旧的回滚段不能被清理
RC(read committed) 的话,每个语句结束后可以看到最新的已提交数据,旧的就不可见了,就可以purge,索引并不会膨胀undo
请您参考文档:
建议您先测试迁移下。具体的迁移效率和具体的场景相关,建议您实际测试下。