

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á.

# Migre um cluster do Amazon Redshift para uma região da AWS na China
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china"></a>

*Jing Yan, Amazon Web Services*

## Resumo
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-summary"></a>

Esse padrão fornece uma step-by-step abordagem para migrar um cluster do Amazon Redshift de outra região da AWS para uma região da AWS na China.

Este padrão usa comandos SQL para recriar todos os objetos do banco de dados, além do comando UNLOAD para mover esses dados do Amazon Redshift para um bucket do Amazon Simple Storage Service (Amazon S3) na região de origem. Em seguida, os dados são migrados para um bucket do S3 na região da AWS na China. O comando COPY é usado para carregar dados do bucket do S3 e transferi-los para o cluster de destino do Amazon Redshift.

Atualmente, o Amazon Redshift não é compatível com os recursos entre regiões, como cópia de snapshots para regiões da AWS na China. Este padrão fornece uma maneira de contornar essa limitação. Você também pode reverter as etapas deste padrão para migrar dados de uma região da AWS na China para outra região da AWS.

## Pré-requisitos e limitações
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-prereqs"></a>

*Pré-requisitos *
+ Contas ativas da AWS em uma região da China e em uma região da AWS fora da China
+ Clusters existentes do Amazon Redshift em uma região da China e em uma região da AWS fora da China

*Limitações*
+ Essa é uma migração off-line, o que significa que o cluster de origem do Amazon Redshift não pode realizar operações de gravação durante a migração.

## Arquitetura
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-architecture"></a>

**Pilha de tecnologia de origem**
+ Migre um cluster do Amazon Redshift para uma região da AWS na China

**Pilha de tecnologias de destino**
+ Migre um cluster do Amazon Redshift para uma região da AWS na China

**Arquitetura de destino**

![\[Migração dos dados do cluster do Amazon Redshift armazenados em um bucket do S3 em uma região da AWS para um bucket em uma região da China.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/f7d241d9-b700-406b-95a0-3e47e7f0fa60/images/b6016e3d-76db-4176-8f99-f804da94d3f2.png)


## Ferramentas
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-tools"></a>

**Ferramentas**
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html): o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos que oferece escalabilidade líder do setor, disponibilidade de dados, segurança e performance. Você pode usar o Amazon S3 para armazenar dados do Amazon Redshift e copiar dados de um bucket do S3 para o Amazon Redshift.
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html): o Amazon Redshift é um serviço de data warehouse em escala de petabytes totalmente gerenciado na nuvem. 
+ [psql](https://www.postgresql.org/docs/8.4/app-psql.html): o psql é um frontend baseado em terminal para o PostgreSQL. 

## Épicos
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-epics"></a>

### Prepare-se para a migração na região de origem
<a name="prepare-for-migration-in-the-source-region"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie e configure uma EC2 instância na região de origem. | Faça login no AWS Management Console e abra o console Amazon Elastic Compute Cloud (Amazon EC2). Na barra de navegação na parte superior da tela, a região atual é exibida. Essa região não pode ser uma região da AWS na China. No painel do EC2 console da Amazon, escolha “Launch instance” e crie e configure uma EC2 instância. Importante: garanta que seus grupos de EC2 segurança para regras de entrada permitam acesso irrestrito à porta TCP 22 de sua máquina de origem. Para obter instruções sobre como iniciar e configurar uma EC2 instância, consulte a seção “Recursos relacionados”. | DBA, Desenvolvedor | 
| Instale a ferramenta psql. | Baixe e instale o PostgreSQL. O Amazon Redshift não fornece a ferramenta psql; ele é instalado com PostgreSQL. Para obter mais informações sobre como usar o psql e instalar as ferramentas do PostgreSQL, consulte a seção “Recursos relacionados”. | DBA | 
| Registre os detalhes do cluster do Amazon Redshift.  | Abra o console do Amazon Redshift e escolha “Clusters” no painel de navegação. Em seguida, escolha o nome do cluster do Amazon Redshift na lista. Na guia “Propriedades”, na seção “Configurações do banco de dados”, registre o “Nome do banco de dados” e a “Porta”. Abra a seção “Detalhes da conexão” e registre o “Endpoint”, que está no formato “endpoint:<port>/<databasename>”. Importante: garanta que seus grupos de segurança do Amazon Redshift para regras de entrada permitam acesso irrestrito à porta TCP 5439 de sua instância. EC2  | DBA | 
| Conecte o psql ao cluster do Amazon Redshift.  | Em um prompt de comando, especifique as informações de conexão executando o comando “psql -h <endpoint> -U <userid> -d <databasename> -p <port>”. No prompt de senha do psql, insira a senha do usuário “<userid>”. Assim você está conectado ao cluster do Amazon Redshift e pode inserir os comandos interativamente. | DBA | 
| Criar um bucket do S3.  | Abra o console do Amazon S3 e crie um bucket do S3 para armazenar os arquivos exportados do Amazon Redshift. Para obter instruções sobre como criar um bucket do S3, consulte a seção “Recursos relacionados”. | DBA, AWS geral | 
| Crie uma política do IAM que forneça suporte ao descarregamento de dados. | Abra o console do AWS Identity and Access Management (IAM) e escolha “Políticas”. Escolha “Criar política” e selecione a guia “JSON”. Copie e cole a política do IAM para descarregar dados da seção “Informações adicionais”. Importante: substitua “s3\$1bucket\$1name” pelo nome do seu bucket do S3. Escolha “Analisar política” e insira um nome e uma descrição para a política. Escolha “Criar política”. | DBA | 
| Crie um perfil do IAM para permitir a operação UNLOAD no Amazon Redshift. | Abra o console do IAM e selecione “Perfis”. Escolha “Criar perfil” e selecione “Serviço da AWS” em “Selecionar tipo de entidade confiável”. Escolha “Redshift” para o serviço, selecione “Redshift – Personalizável” e, em seguida, clique em “Próximo”. Escolha a política “Descarregar” que você criou anteriormente e selecione “Próximo”. Insira um “Nome do perfil” e selecione “Criar perfil”. | DBA | 
| Associe um perfil do IAM ao cluster do Amazon Redshift.  | Abra o console do Amazon Redshift e escolha “Gerenciar perfis IAM”. Escolha “Perfis disponíveis” no menu suspenso e selecione o perfil que você criou anteriormente. Selecione “Aplicar alterações”. Quando o “Status” do perfil do IAM na seção “Gerenciar perfis do IAM” aparecer como “Em sincronização”, você poderá executar o comando UNLOAD. | DBA | 
| Pare as operações de gravação no cluster do Amazon Redshift. | Você deve se lembrar de interromper todas as operações de gravação no cluster de origem do Amazon Redshift até que a migração seja concluída. | DBA | 

### Prepare para a migração na região de destino
<a name="prepare-for-migration-in-the-target-region"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie e configure uma EC2 instância na região de destino. | Faça login no Console de Gerenciamento da AWS de uma região na China, seja Pequim ou Ningxia. No EC2 console da Amazon, escolha “Launch instance” e crie e configure uma EC2 instância. Importante: certifique-se de que seus grupos EC2 de segurança da Amazon para regras de entrada permitam acesso irrestrito à porta TCP 22 de sua máquina de origem. Para obter mais instruções sobre como iniciar e configurar uma EC2 instância, consulte a seção “Recursos relacionados”. | DBA | 
| Registre os detalhes do cluster do Amazon Redshift.  | Abra o console do Amazon Redshift e escolha “Clusters” no painel de navegação. Em seguida, escolha o nome do cluster do Amazon Redshift na lista. Na guia “Propriedades”, na seção “Configurações do banco de dados”, registre o “Nome do banco de dados” e a “Porta”. Abra a seção “Detalhes da conexão” e registre o “Endpoint”, que está no formato “endpoint:<port>/<databasename>”. Importante: certifique-se de que seus grupos de segurança do Amazon Redshift para regras de entrada permitam acesso irrestrito à porta TCP 5439 da sua instância. EC2  | DBA | 
| Conecte o psql ao cluster do Amazon Redshift.  | Em um prompt de comando, especifique as informações de conexão executando o comando “psql -h <endpoint> -U <userid> -d <databasename> -p <port>”. No prompt de senha do psql, insira a senha do usuário “<userid>”. Assim você está conectado ao cluster do Amazon Redshift e pode inserir os comandos interativamente. | DBA | 
| Criar um bucket do S3.  | Abra o console do Amazon S3 e crie um bucket do S3 para armazenar os arquivos exportados do Amazon Redshift. Para obter ajuda com esta e outras histórias, consulte a seção “Recursos relacionados”. | DBA | 
| Crie uma política do IAM que seja compatível com cópia de dados. | Abra o console do IAM e selecione “Políticas”. Escolha “Criar política” e selecione a guia “JSON”. Copie e cole a política do IAM para copiar dados da seção “Informações adicionais”. Importante: substitua “s3\$1bucket\$1name” pelo nome do seu bucket do S3. Escolha “Analisar política” e insira um nome e uma descrição para a política. Escolha “Criar política”. | DBA | 
| Crie um perfil do IAM para permitir a operação COPY no Amazon Redshift. | Abra o console do IAM e selecione “Perfis”. Escolha “Criar perfil” e selecione “Serviço da AWS” em “Selecionar tipo de entidade confiável”. Escolha “Redshift” para o serviço, selecione “Redshift – Personalizável” e, em seguida, clique em “Próximo”. Escolha a política “Copiar” que você criou anteriormente e selecione “Próximo”. Insira um “Nome do perfil” e selecione “Criar perfil”. | DBA | 
| Associe um perfil do IAM ao cluster do Amazon Redshift.  | Abra o console do Amazon Redshift e escolha “Gerenciar perfis IAM”. Escolha “Perfis disponíveis” no menu suspenso e selecione o perfil que você criou anteriormente. Selecione “Aplicar alterações”. Quando o “Status” do perfil do IAM na seção “Gerenciar perfis do IAM” aparecer como “Em sincronização”, você poderá executar o comando COPY. | DBA | 

### Verifique os dados de origem e as informações do objeto antes de iniciar a migração
<a name="verify-source-data-and-object-information-before-beginning-the-migration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verifique as linhas nas tabelas de origem do Amazon Redshift. | Use os scripts apresentados na seção “Informações adicionais” para verificar e registrar o número de linhas nas tabelas de origem do Amazon Redshift. Lembre-se de dividir os dados uniformemente para os scripts UNLOAD e COPY. Isso melhorará a eficiência do descarregamento e carregamento dos dados, pois a quantidade de dados abrangida por cada script será equilibrada. | DBA | 
| Verifique o número de objetos de banco de dados no cluster de origem do Amazon Redshift. | Use os scripts na seção “Informações adicionais” para verificar e registrar o número de bancos de dados, usuários, esquemas, tabelas, visualizações e funções definidas pelo usuário (UDFs) em seu cluster de origem do Amazon Redshift. | DBA | 
| Verifique os resultados da instrução SQL antes da migração. | Algumas instruções SQL para validação de dados devem ser classificadas de acordo com as situações reais de negócios e dados. Isso serve para verificar os dados importados a fim de garantir que sejam consistentes e exibidos corretamente. | DBA | 

### Migrar dados e objetos para a região de destino
<a name="migrate-data-and-objects-to-the-target-region"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Gere scripts DDL do Amazon Redshift.  | Gere scripts de linguagem de definição de dados (DDL, na sigla em inglês) usando os links da seção “Instruções SQL para consultar o Amazon Redshift” na seção “Informações adicionais”. Esses scripts de DDL devem incluir as consultas “criar usuário”, “criar esquema”, “privilégios sobre o esquema para usuário”, “criar tabela/visualização”, “privilégios sobre objetos para usuário” e “criar função”. | DBA | 
| Crie objetos no cluster do Amazon Redshift para a região de destino. | Execute os scripts DDL usando a AWS Command Line Interface (AWS CLI) na região da AWS na China. Crie objetos no cluster do Amazon Redshift para a região de destino. | DBA | 
| Descarregue os dados de origem do cluster do Amazon Redshift no bucket do S3. | Execute o comando UNLOAD para descarregar dados do cluster do Amazon Redshift na região de origem para o bucket do S3. | DBA, Desenvolvedor  | 
| Transfira os dados do bucket do S3 da região de origem para o bucket do S3 da região de destino. | Transfira os dados de origem do bucket da região S3 para o bucket da região S3 de destino. Como não é possível usar o comando “\$1 aws s3 sync”, garanta que você empregue o processo descrito no artigo “Transferring Amazon S3 data from AWS Regions to AWS Regions in China”, disponibilizado na seção “Recursos relacionados”. | Desenvolvedor | 
|  Carregue dados no cluster de destino do Amazon Redshift.  | Na ferramenta psql da sua região de destino, execute o comando COPY para carregar dados do bucket do S3 para o cluster de destino do Amazon Redshift. | DBA | 

### Verifique os dados nas regiões de origem e de destino após a migração
<a name="verify-the-data-in-the-source-and-target-regions-after-the-migration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verifique e compare o número de linhas nas tabelas de origem e de destino. | Verifique e compare o número de linhas nas tabelas de origem e de destino. | DBA | 
| Verifique e compare o número de linhas nas tabelas de origem e de destino. | Verifique e compare o número de linhas nas tabelas de origem e de destino. | DBA | 
| Verifique e compare os resultados do script SQL nas regiões de origem e de destino. | Execute os scripts SQL preparados antes da migração. Verifique e compare os dados para garantir que os resultados do SQL estejam corretos. | DBA | 
| Redefina as senhas de todos os usuários no cluster de destino do Amazon Redshift.  | Depois que a migração for concluída e todos os dados forem verificados, você deverá redefinir todas as senhas de usuário do cluster do Amazon Redshift na região da AWS na China. | DBA | 

## Recursos relacionados
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-resources"></a>
+ [Transferência de dados do Amazon S3 de regiões da AWS para regiões da AWS na China](https://aws.amazon.com/cn/blogs/storage/transferring-amazon-s3-data-from-aws-regions-to-aws-regions-in-china/)
+ [Criar um bucket do S3](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)
+ [Redefinição de uma senha de usuário do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html)
+ [Documentação do JDBC](https://www.postgresql.org/docs/8.4/static/app-psql.html)

## Mais informações
<a name="migrate-an-amazon-redshift-cluster-to-an-aws-region-in-china-additional"></a>

*Política do IAM para descarregar dados*

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::s3_bucket_name"]
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::s3_bucket_name/*"]
    }
  ]
}
```

*Política do IAM para copiar dados*

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::s3_bucket_name"]
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::s3_bucket_name/*"]
    }
  ]
}
```

*Instruções SQL para consultar o Amazon Redshift*

```
##Database

select * from pg_database where datdba>1;

##User

select * from pg_user where usesysid>1;

##Schema

SELECT n.nspname AS "Name",

  pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"

FROM pg_catalog.pg_namespace n

WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'

ORDER BY 1;

##Table

select count(*) from pg_tables where schemaname not in ('pg_catalog','information_schema');

select schemaname,count(*) from pg_tables where schemaname not in ('pg_catalog','information_schema') group by schemaname order by 1;

##View

SELECT 

    n.nspname AS schemaname,c.relname AS viewname,pg_catalog.pg_get_userbyid(c.relowner) as "Owner"

FROM 

    pg_catalog.pg_class AS c

INNER JOIN

    pg_catalog.pg_namespace AS n

    ON c.relnamespace = n.oid

WHERE relkind = 'v' and n.nspname not in ('information_schema','pg_catalog');

##UDF

SELECT 

   n.nspname AS schemaname,

   p.proname AS proname,

   pg_catalog.pg_get_userbyid(p.proowner) as "Owner"

FROM pg_proc p

LEFT JOIN pg_namespace n on n.oid = p.pronamespace

WHERE p.proowner != 1;
```

*Scripts SQL para gerar instruções DDL*
+ [Script Get\$1schema\$1priv\$1by\$1user](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_get_schema_priv_by_user.sql)
+ [Script Generate\$1tbl\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_tbl_ddl.sql)
+ [Generate\$1view\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_view_ddl.sql)
+ [Generate\$1user\$1grant\$1revoke\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_user_grant_revoke_ddl.sql)
+ [Generate\$1udf\$1ddl](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_udf_ddl.sql)