Xcopy模块是支持数据迁移功能的重要组成部分。该模块不仅支持元数据的迁移,还支持表数据的迁移,并提供四种不同的迁移粒度,包括集群级别、数据库级别、Schema级别和表级别的数据迁移。
初始化实例
通过pgxc_ctl新建一个双CN、双DN的实例,并开启服务。
使用Xcopy进行数据迁移
表级别数据迁移。
./Xcopy --source-host 源库host --source-port 源库端口 --source-user 源库用户 --source-password '源库密码' --dest-host 目标库host --dest-port 目标库端口 --dest-user 目标库用户 --dest-password '目标库密码' --include-table 表名 --truncate
模式级别数据迁移。
./Xcopy --source-host 源库host --source-port 源库端口 --source-user 源库用户 --source-password '源库密码' --dest-host 目标库host --dest-port 源库端口 --dest-user 目标库用户 --dest-password '目标库密码' --schema schema名 --dest-schema schema名 --truncate
数据库级别数据迁移。
./Xcopy --source-host 源库host --source-port 源库端口 --source-user 源库用户 --source-password '源库密码' --dest-host 目标库host --dest-port 源库端口 --dest-user 目标库用户 --dest-password '目标库密码' --dbname "xcopydb" --dest-dbname "xcopydb" --truncate-cascade
实例级别数据迁移。
./Xcopy --source-host 源库host --source-port 源库端口 --source-user 源库用户 --source-password '源库密码' --dest-host 目标库host --dest-port 源库端口 --dest-user 目标库用户 --dest-password '目标库密码'--truncate-cascade
使用Xcheck进行数据对比验证
表级别对比
./Xcheck --source-host 源库host --source-port 源库端口 --source-user 源库用户 --source-password "源库密码" --dest-host 目标库host --dest-port 目标库端口 --dest-user 目标库用户 --dest-password "目标库密码" --mapping-file "mapping-file绝对路径" --mode high;
模式级别对比
./Xcheck --source-host 源库host --source-port 源库端口 --source-user 源库用户 --source-password "源库密码" --dest-host 目标库host --dest-port 目标库端口 --dest-user 目标库用户 --dest-password "目标库密码" --dbname postgres --dest-dbname postgres --schema 模式名 --dest-schema 模式名 --mode high
库级别对比
./Xcheck --source-host 源库host --source-port 源库端口 --source-user 源库用户 --source-password "源库密码" --dest-host 目标库host --dest-port 目标库端口 --dest-user 目标库用户 --dest-password "目标库密码" --dbname "库名" --dest-dbname "库名" --mode high
使用Ximport导入数据
在机器上创建名为control_file2的control_file文件,并写入数据库实例和需要导入的表的相关信息
执行以下语法导入指定表
./Ximport --control_file 'control_file文件绝对路径' --host 实例host --port 实例端口 --user root --database ximport --force_password_auth
使用Xexport导出数据
执行以下语法导出指定表:
../Xexport -h 实例host -p 实例端口 -u 用户名 -s '密码' -d "Xexport" -r \"AllcolumnCopy\".\"Test_1\" -o '导出文件名称1' -i '~' -z 'none' -l \"N_smallint\",n_integer -c 'UTF-8' -w 'where "N_smallint">1'