As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
É possível migrar dados de um bucket do Amazon S3 utilizando o AWS DMS. Para fazer isso, conceda acesso a um bucket do Amazon S3 que contenha um ou mais arquivos de dados. Neste bucket do S3, inclua um arquivo JSON que descreve o mapeamento entre os dados e as tabelas de banco de dados referentes aos dados nesses arquivos.
Os arquivos de dados de origem devem estar presentes no bucket do Amazon S3 para que a carga máxima seja iniciada. Especifique o nome do bucket utilizando o parâmetro bucketName
.
Os arquivos de dados de origem podem estar nos seguintes formatos:
Valores separados por vírgula (.csv)
Parquet (DMS versão 3.5.3 e posterior). Para ter informações sobre como usar arquivos no formato Parquet, consulte Usar arquivos no formato Parquet no Amazon S3 como origem para o AWS DMS.
Para arquivos de dados de origem no formato de valores separados por vírgula (.csv), nomeie-os usando a seguinte convenção de nomenclatura. Nessa convenção,
é o esquema de origem, e schemaName
é o nome de uma tabela dentro desse esquema.tableName
/
schemaName
/tableName
/LOAD001.csv /schemaName
/tableName
/LOAD002.csv /schemaName
/tableName
/LOAD003.csv ...
Por exemplo, suponha que os arquivos de dados estejam no mybucket
, no seguinte caminho do Amazon S3.
s3://mybucket/hr/employee
No tempo de carregamento, o AWS DMS assume que o nome do esquema de origem seja hr
e que o nome da tabela de origem seja employee
.
Além do bucketName
(que é obrigatório), é possível fornecer opcionalmente um parâmetro bucketFolder
para especificar onde o AWS DMS deve procurar arquivos de dados no bucket do Amazon S3. Continuando o exemplo anterior, se você definir bucketFolder
como sourcedata
, o AWS DMS lerá os arquivos de dados no seguinte caminho.
s3://mybucket/sourcedata/hr/employee
É possível especificar o delimitador de coluna, o delimitador de linha, o indicador de valor nulo e outros parâmetros utilizando os atributos de conexão adicionais. Para ter mais informações, consulte Configurações de endpoint do Amazon S3 como origem do AWS DMS.
É possível especificar o proprietário do bucket e evitar o corte utilizando a configuração ExpectedBucketOwner
do endpoint do Amazon S3, conforme mostrado a seguir. Ao fazer uma solicitação para testar uma conexão ou executar uma migração, o S3 verifica o ID da conta do proprietário do bucket em relação ao parâmetro especificado.
--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'
Tópicos
- Definir tabelas externas para o Amazon S3 como origem do AWS DMS
- Utilizar a CDC com o Amazon S3 como origem do AWS DMS
- Pré-requisitos ao utilizar o Amazon S3 como origem do AWS DMS
- Limitações ao utilizar o Amazon S3 como origem do AWS DMS
- Configurações de endpoint do Amazon S3 como origem do AWS DMS
- Tipos de dados de origem do Amazon S3
- Usar arquivos no formato Parquet no Amazon S3 como origem para o AWS DMS
Definir tabelas externas para o Amazon S3 como origem do AWS DMS
Além dos arquivos de dados, você também deve fornecer uma definição de tabela externa. Uma Definição de tabela externa é um documento JSON que descreve como o AWS DMS deve interpretar os dados do Amazon S3. O tamanho máximo deste documento é 2 MB. Se você criar um endpoint de origem utilizando o console de gerenciamento do AWS DMS, poderá inserir o JSON diretamente na caixa de mapeamento de tabela. Se você utiliza o AWS Command Line Interface (AWS CLI) ou a API do AWS DMS para fazer migrações, pode criar um arquivo JSON para especificar a definição da tabela externa.
Suponha que você tem um arquivo de dados que inclui o seguinte.
101,Smith,Bob,2014-06-04,New York
102,Smith,Bob,2015-10-08,Los Angeles
103,Smith,Bob,2017-03-13,Dallas
104,Smith,Bob,2017-03-13,Dallas
Veja a seguir um exemplo de definição de tabela externa para esses dados.
{
"TableCount": "1",
"Tables": [
{
"TableName": "employee",
"TablePath": "hr/employee/",
"TableOwner": "hr",
"TableColumns": [
{
"ColumnName": "Id",
"ColumnType": "INT8",
"ColumnNullable": "false",
"ColumnIsPk": "true"
},
{
"ColumnName": "LastName",
"ColumnType": "STRING",
"ColumnLength": "20"
},
{
"ColumnName": "FirstName",
"ColumnType": "STRING",
"ColumnLength": "30"
},
{
"ColumnName": "HireDate",
"ColumnType": "DATETIME"
},
{
"ColumnName": "OfficeLocation",
"ColumnType": "STRING",
"ColumnLength": "20"
}
],
"TableColumnsTotal": "5"
}
]
}
Os elementos neste documento JSON são os seguintes:
TableCount
: o número de tabelas de origem. Neste exemplo, há somente uma tabela.
Tables
: uma matriz que consiste em um mapa JSON por tabela de origem. Neste exemplo, há somente um mapa. Cada mapa consiste nos seguintes elementos:
-
TableName
: o nome da tabela de origem. -
TablePath
: o caminho no bucket do Amazon S3 em que o AWS DMS pode encontrar o arquivo de carga máxima de dados. Se um valorbucketFolder
for especificado, esse valor será pré-associado ao caminho. -
TableOwner
: o nome do esquema desta tabela. -
TableColumns
: uma matriz de um ou mais mapas, cada um dos quais descrevendo uma coluna na tabela de origem:-
ColumnName
: o nome de uma coluna na tabela de origem. -
ColumnType
: o tipo de dados da coluna. Para tipos de dados válidos, consulte Tipos de dados de origem do Amazon S3. -
ColumnLength
: o número de bytes nesta coluna. O comprimento máximo da coluna é limitado a 2147483647 bytes (2.047 MegaBytes), uma vez que uma origem do S3 não é compatível com o modo FULL LOB.ColumnLength
é válido para os seguintes tipos:-
BYTE
-
STRING
-
-
ColumnNullable
: um valor booleano que serátrue
, se esta coluna puder conter valores NULL (padrão=false
). -
ColumnIsPk
: um valor booleano que serátrue
, se esta coluna fizer parte da chave primária (padrão=false
). -
ColumnDateFormat
: o formato de data de entrada para uma coluna com os tipos DATE, TIME e DATETIME e utilizado para analisar uma string de dados em um objeto de data. Os possíveis valores incluem:- YYYY-MM-dd HH:mm:ss - YYYY-MM-dd HH:mm:ss.F - YYYY/MM/dd HH:mm:ss - YYYY/MM/dd HH:mm:ss.F - MM/dd/YYYY HH:mm:ss - MM/dd/YYYY HH:mm:ss.F - YYYYMMdd HH:mm:ss - YYYYMMdd HH:mm:ss.F
-
-
TableColumnsTotal
: o número total de colunas. Esse número deve corresponder ao número de elementos no arrayTableColumns
.
Se você não especificar nada, o AWS DMS assumirá que ColumnLength
é zero.
nota
Nas versões compatíveis do AWS DMS, os dados de origem do S3 também podem conter uma coluna de operação opcional como a primeira coluna antes do valor da coluna TableName
. Essa coluna de operação identifica a operação (INSERT
) utilizada para migrar os dados para um endpoint de destino do S3 durante a carga máxima.
Se presente, o valor dessa coluna é o caractere inicial da palavra-chave de operação INSERT
(I
). Se especificado, essa coluna geralmente indica que a origem do S3 foi criada pelo DMS como um destino do S3 durante uma migração anterior.
Nas versões do DMS anteriores a 3.4.2, essa coluna não estava presente nos dados de origem do S3 criados em uma carga máxima do DMS anterior. Adicionar essa coluna aos dados de destino do S3 permite que o formato de todas as linhas gravadas no destino do S3 seja consistente se forem gravadas durante uma carga máxima ou durante uma carga de CDC. Para obter mais informações sobre as opções de formatação de dados de destino do S3, consulte Indicar operações de banco de dados de origem em dados migrados do S3.
Para obter uma coluna do tipo NUMERIC, especifique a precisão e a escala. Precision é o número total de dígitos em um número, e scale é o número de dígitos à direita do ponto decimal. Você utiliza os elementos ColumnPrecision
e ColumnScale
para isso, como mostrado a seguir.
...
{
"ColumnName": "HourlyRate",
"ColumnType": "NUMERIC",
"ColumnPrecision": "5"
"ColumnScale": "2"
}
...
Para uma coluna do tipo DATETIME com dados que contêm segundos fracionários, especifique a escala. A Escala é o número de dígitos dos segundos fracionários e pode variar de 0 a 9. Você utiliza o elemento ColumnScale
para isso, conforme mostrado a seguir.
...
{
"ColumnName": "HireDate",
"ColumnType": "DATETIME",
"ColumnScale": "3"
}
...
Se você não especificar o contrário, o AWS DMS pressuporá que ColumnScale
é zero e truncará os segundos fracionários.
Utilizar a CDC com o Amazon S3 como origem do AWS DMS
Depois que o AWS DMS executa uma carga máxima de dados, opcionalmente, ele pode replicar alterações de dados no endpoint de destino. Para isso, é possível fazer upload dos arquivos de captura de dados de alteração (arquivos de CDC) no bucket do Amazon S3. O AWS DMS lê esses arquivos de CDC ao fazer upload deles e aplica as alterações no endpoint de destino.
Os arquivos de CDC são nomeados como segue:
CDC00001.csv CDC00002.csv CDC00003.csv ...
nota
Para replicar com êxito os arquivos CDC na pasta de dados de alteração, faça upload em ordem léxica (sequencial). Por exemplo, faça upload do arquiva CDC00002.csv antes do arquiva CDC00003.csv. Caso contrário, CDC00002.csv será ignorado e não será replicado se carregado depois da CDC00003.csv. No entanto, o arquiva CDC00004.csv será replicado com êxito se carregado depois da CDC00003.csv.
Para indicar o local em que o AWS DMS pode localizar os arquivos, especifique o parâmetro cdcPath
. Continuando o exemplo anterior, se você definir cdcPath
como
, o AWS DMS lerá os arquivos de CDC no seguinte caminho.changedata
s3://mybucket
/changedata
Se você definir cdcPath
como
e changedata
bucketFolder
como
, o AWS DMS lerá os arquivos de CDC no caminho a seguir.myFolder
s3://mybucket
/myFolder
/changedata
Os registros em um arquivo de CDC são formatados da seguinte forma:
-
Operação: a operação de alteração a ser executada:
INSERT
ouI
,UPDATE
ouU
ouDELETE
ouD
. Esses valores de caractere e palavras-chave não fazem distinção entre maiúsculas e minúsculas.nota
Nas versões compatíveis do AWS DMS, o AWS DMS pode identificar a operação a ser executada para cada registro de carga de duas maneiras. O AWS DMS pode fazer isso no valor da palavra-chave do registro (por exemplo,
INSERT
) ou no caractere inicial da palavra-chave (por exemplo,I
). Em versões anteriores, o AWS DMS reconhecia a operação de carga apenas no valor da palavra-chave inteira.Em versões anteriores do AWS DMS, o valor da palavra-chave inteira era gravado para registrar em log os dados da CDC. Além disso, as versões anteriores gravavam o valor da operação para qualquer destino do S3 utilizando apenas a inicial da palavra-chave.
Reconhecer os dois formatos permite que o AWS DMS trate a operação, independentemente de como a coluna da operação é gravada para criar os dados de origem do S3. Essa abordagem é compatível com a utilização de dados de destino do S3 como origem para uma migração posterior. Com essa abordagem, você não precisa alterar o formato de nenhum valor inicial de palavra-chave que aparece na coluna da operação de origem do S3 posterior.
-
Nome da tabela: o nome da tabela de origem.
-
Nome do esquema: o nome do esquema de origem.
-
Dados: uma ou mais colunas que representam os dados a serem alterados.
Veja a seguir um exemplo de arquivo de CDC para uma tabela chamada employee
.
INSERT,employee,hr,101,Smith,Bob,2014-06-04,New York
UPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los Angeles
UPDATE,employee,hr,101,Smith,Bob,2017-03-13,Dallas
DELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas
Pré-requisitos ao utilizar o Amazon S3 como origem do AWS DMS
Para utilizar o Amazon S3 como origem do AWS DMS, o bucket do S3 de origem deve estar na mesma região da AWS que a instância de replicação do DMS que migra os dados. Além disso, a conta da AWS que você utiliza para a migração deve ter acesso de leitura ao bucket de origem. No AWS DMS versão 3.4.7 e posteriores, o DMS deve acessar o bucket de origem por meio de um endpoint da VPC ou de uma rota pública. Para ter informações sobre os endpoints da VPC, consulte Configurar endpoints da VPC como endpoints de origem e de destino do AWS.
O perfil do AWS Identity and Access Management (IAM) atribuído à conta de usuário utilizada para criar a tarefa de migração deve ter o seguinte conjunto de permissões.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::mybucket*/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::mybucket*"
]
}
]
}
O perfil do AWS Identity and Access Management (IAM) atribuído à conta de usuário utilizada para criar a tarefa de migração deverá ter o seguinte conjunto de permissões se o versionamento estiver ativado no bucket do Amazon S3.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"S3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::mybucket*/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::mybucket*"
]
}
]
}
Limitações ao utilizar o Amazon S3 como origem do AWS DMS
As limitações a seguir se aplicam ao utilizar o Amazon S3 como origem:
-
Não ative o versionamento para o S3. Se o versionamento do S3 for necessário, utilize políticas de ciclo de vida para excluir ativamente as versões antigas. Caso contrário, é possível encontrar falhas na conexão de teste de endpoint devido ao tempo limite de uma chamada
list-object
do S3. Para criar uma política de ciclo de vida para um bucket do S3, consulte Gerenciar o ciclo de vida do armazenamento. Para excluir a versão de um objeto do S3, consulte Excluir versões de objetos de um bucket com versionamento ativado. -
Um bucket do S3 ativado para VPC (VPC do gateway) é compatível com as versões 3.4.7 e superiores.
O MySQL converte o tipo de dados
time
parastring
. Para ver os valores do tipo de dadostime
no MySQL, defina a coluna na tabela de destino comostring
e defina a configuração do modo de preparação da tabela de destino da tarefa como Truncar.O AWS DMS usa o tipo de dados
BYTE
internamente para dados em ambos os tipos de dadosBYTE
eBYTES
.Os endpoints de origem do S3 não são compatíveis com o recurso de recarga de tabela do DMS.
-
O AWS DMS não é compatível com o modo LOB completo com o Amazon S3 como origem.
As limitações a seguir se aplicam ao utilizar arquivos no formato Parquet no Amazon S3 como origem:
-
Datas nos formatos
MMYYYYDD
ouDDMMYYYY
não são compatíveis com o recurso de particionamento de data de origem do Parquet S3.
Configurações de endpoint do Amazon S3 como origem do AWS DMS
É possível utilizar as configurações do endpoint para configurar o banco de dados de origem do Amazon S3 de forma semelhante à utilização de atributos de conexão adicional. Você especifica as configurações ao criar o endpoint de origem utilizando o console do AWS DMS ou o comando create-endpoint
na AWS CLI, com a sintaxe --s3-settings '{"
do JSON.EndpointSetting"
:
"value"
, ...
}'
A tabela a seguir mostra as configurações de endpoint que é possível utilizar com o Amazon S3 como origem.
Opção | Descrição |
---|---|
BucketFolder |
(Opcional) Um nome da pasta no bucket do S3. Se o atributo de origem for fornecido, os arquivos de dados de origem e os arquivos da CDC serão lidos no caminho
|
BucketName |
O nome do bucket do S3.
|
CdcPath |
A localização dos arquivos da CDC. Esse atributo é necessário quando uma tarefa captura dados de alterações; caso contrário, ele é opcional. Se CdcPath estiver presente, o AWS DMS lerá arquivos de CDC nesse caminho e replicará as alterações de dados no endpoint de destino. Para ter mais informações, consulte Utilizar a CDC com o Amazon S3 como origem do AWS DMS.
|
CsvDelimiter |
O delimitador utilizado para separar colunas nos arquivos de origem. O padrão é uma vírgula. Veja a seguir um exemplo.
|
CsvNullValue |
Uma string definida pelo usuário que o AWS DMS trata como nula ao ler na origem. O padrão é uma string vazia. Se você não definir esse parâmetro, o AWS DMS tratará uma string vazia como um valor nulo. Se você definir esse parâmetro como uma string como “\N”, o AWS DMS tratará essa string como o valor nulo e tratará as strings vazias como um valor de string vazio. |
CsvRowDelimiter |
O delimitador utilizado para separar linhas nos arquivos de origem. O padrão é uma nova linha (
|
DataFormat |
Defina esse valor como
|
IgnoreHeaderRows |
Quando esse valor é definido como 1, o AWS DMS ignora o cabeçalho da primeira linha em um arquivo.csv. Um valor de 1 habilita o recurso, um valor de 0 desabilita o recurso. O padrão é 0.
|
Rfc4180 |
Quando esse valor é definido como O padrão é Valores válidos:
|
Tipos de dados de origem do Amazon S3
A migração de dados que utiliza o Amazon S3 como origem do AWS DMS precisará mapear os dados do Amazon S3 para os tipos de dados do AWS DMS. Para ter mais informações, consulte Definir tabelas externas para o Amazon S3 como origem do AWS DMS.
Para obter informações sobre como visualizar o tipo de dados mapeado no destino, consulte a seção relativa ao endpoint de destino que você está usando.
Para obter mais informações sobre os tipos de dados do AWS DMS, consulte Tipos de dados do AWS Database Migration Service.
Os seguintes tipos de dados do AWS DMS são utilizados com o Amazon S3 como origem:
-
BYTE: requer
ColumnLength
. Para ter mais informações, consulte Definir tabelas externas para o Amazon S3 como origem do AWS DMS. -
DATA
-
TIME
-
DATETIME: para obter mais informações e um exemplo, consulte o exemplo do tipo DATETIME em Definir tabelas externas para o Amazon S3 como origem do AWS DMS.
-
INT1
-
INT2
-
INT4
-
INT8
-
NUMERIC: requer
ColumnPrecision
eColumnScale
. O AWS DMS é compatível com os seguintes valores máximos:ColumnPrecision: 38
ColumnScale: 31
Para obter mais informações e um exemplo, consulte o exemplo do tipo NUMERIC em Definir tabelas externas para o Amazon S3 como origem do AWS DMS.
-
REAL4
-
REAL8
-
STRING: requer
ColumnLength
. Para ter mais informações, consulte Definir tabelas externas para o Amazon S3 como origem do AWS DMS. -
UINT1
-
UINT2
-
UINT4
-
UINT8
-
BLOB
-
CLOB
-
BOOLEAN
Usar arquivos no formato Parquet no Amazon S3 como origem para o AWS DMS
No AWS DMS versão 3.5.3 e posterior, você pode usar arquivos no formato Parquet em um bucket do S3 como origem para replicação de carga máxima ou de CDC.
O DMS só é compatível com arquivos no formato Parquet como origem que o DMS gera ao migrar dados para um endpoint de destino do S3. Os nomes dos arquivos devem estar no formato compatível, ou o DMS não os incluirá na migração.
Para arquivos de dados de origem no formato Parquet, eles devem estar na seguinte pasta e convenção de nomenclatura.
schema/table1/LOAD00001.parquet
schema/table2/LOAD00002.parquet
schema/table2/LOAD00003.parquet
Para arquivos de dados de origem para dados de CDC no formato Parquet, nomeie-os e armazene-os usando a seguinte pasta e convenção de nomenclatura.
schema/table/20230405-094615814.parquet
schema/table/20230405-094615853.parquet
schema/table/20230405-094615922.parquet
Para acessar arquivos no formato Parquet, defina as seguintes configurações de endpoint:
Defina
DataFormat
comoParquet
.Não defina a configuração
cdcPath
. Crie os arquivos no formato Parquet nas pastas schema/table especificadas.
Para ter mais informações sobre as configurações dos endpoints do S3, consulte S3Settings na Referência de API do AWS Database Migration Service.
Tipos de dados compatíveis com arquivos no formato Parquet
O AWS DMS aceita os seguintes tipos de dados de origem e destino ao migrar dados de arquivos no formato Parquet. Garanta que a tabela de destino tenha colunas dos tipos de dados corretos antes de migrar.
Tipo de dados de origem | Tipo de dados de destino |
---|---|
BYTE |
BINARY |
DATE |
DATE32 |
TIME |
TIME32 |
DATETIME |
TIMESTAMP |
INT1 |
INT8 |
INT2 |
INT16 |
INT4 |
INT32 |
INT8 |
INT64 |
NUMERIC |
DECIMAL |
REAL4 |
FLOAT |
REAL8 |
DOUBLE |
STRING |
STRING |
UINT1 |
UINT8 |
UINT2 |
UINT16 |
UINT4 |
UINT32 |
UINT8 |
UINT |
WSTRING |
STRING |
BLOB |
BINARY |
NCLOB |
STRING |
CLOB |
STRING |
BOOLEAN |
BOOL |