最近更新时间:2021-08-16 14:12:19
结构迁移
将迁移对象的结构从源数据库迁移到目标数据库,目前DTS仅支持表结构迁移。
全量迁移
将源数据库迁移对象的存量数据,迁移到目标数据库。
特别说明:由于全量数据迁移会并发插入,导致目标实例的表存在碎片,全量迁移完成后目标库的表空间会比源库的表空间大。
增量迁移
通过读取源数据库的WAL日志,将源数据库的增量数据迁移到目标数据库。通过增量迁移,可以实现源端不停服的情况下迁移上云。
数据库 | 结构/全量迁移 | 增量迁移 |
---|---|---|
源端为自建PostgreSQL实例 | 待迁移库的connect权限,待迁移SCHEMA的usage权限 | superuser权限 |
源端为RDS PostgreSQL实例 | 待迁移库的connect权限,待迁移SCHEMA的usage权限 | superuser权限 |
目标端为RDS PostgreSQL实例 | rolcreatedb或superuser权限,如需迁移postgres库,需有postgres库的create权限 | rolcreatedb或superuser权限,如需迁移postgres库,需有postgres库的create权限 |
CREATE TABLE public.dts_ddl_command
( id bigserial primary key,
ddl_text text COLLATE pg_catalog."default",
event text COLLATE pg_catalog."default",
tag text COLLATE pg_catalog."default",
username character varying COLLATE pg_catalog."default",
database character varying COLLATE pg_catalog."default",
schema character varying COLLATE pg_catalog."default",
cli_addr character varying COLLATE pg_catalog."default",
cli_port integer,
event_time timestamp with time zone);
CREATE FUNCTION public.dts_ddl_func()
RETURNS event_trigger
VOLATILE NOT LEAKPROOF SECURITY DEFINER
AS $$
declare ddl_query text;
begin
select query into ddl_query from pg_stat_activity where pid=pg_backend_pid();
insert into public.dts_ddl_command(id,ddl_text,event,tag,username,database,schema,cli_addr,cli_port,event_time)
values (default,ddl_query,TG_EVENT,TG_TAG,current_user,current_database(),current_schema,inet_client_addr(),inet_client_port(),current_timestamp);
end
$$ language plpgsql strict;
create event trigger dts_ddl_tri on ddl_command_end when tag in ('ALTER TABLE','CREATE TABLE','DROP TABLE','CREATE SCHEMA','DROP SCHEMA','CREATE INDEX','DROP INDEX') execute procedure dts_ddl_func();
纯净模式