ApsaraDB RDS for SQL Server ofrece una migración a la nube a nivel de instancia del conjunto completo de datos de una o más bases de datos en un servidor SQL Server autogestionado. Para migrar, respalde todas las bases de datos de su SQL Server autogestionado, cargue los archivos de copia de seguridad en una sola carpeta dentro de un bucket de OSS y ejecute el script de migración a la nube.
Para migrar una única base de datos, consulte Migrate data from a full backup y Migrate data from an incremental backup.
Requisitos previos
El origen debe ser una base de datos SQL Server autogestionada.
-
The destination ApsaraDB RDS for SQL Server instance debe cumplir con los siguientes requisitos:
El espacio de almacenamiento disponible en la instancia debe ser mayor que el tamaño de los archivos de datos que se van a migrar. Si el espacio de almacenamiento disponible es insuficiente, upgrade the instance specifications.
Para SQL Server 2008 R2, debe crear una database en la instancia de destino con el mismo nombre que la base de datos de origen. Este requisito no aplica para otras versiones.
-
Si inicia sesión como usuario de RAM, se deben cumplir los siguientes requisitos:
El usuario de RAM tiene asignados los permisos AliyunOSSFullAccess y AliyunRDSFullAccess. Para obtener más información sobre cómo otorgar permisos a un usuario de RAM, consulte Manage OSS permissions by using RAM y Manage ApsaraDB RDS permissions by using RAM.
-
Su cuenta de Alibaba Cloud (cuenta principal) autorizó a la cuenta de servicio oficial de ApsaraDB RDS a acceder a sus recursos de OSS.
-
Cree manualmente create a permission policy en su cuenta de Alibaba Cloud (cuenta principal) y luego asigne la política al usuario de RAM.
Limitaciones
Esta solución solo admite la migración completa; actualmente no es compatible con la migración incremental.
Facturación
Si utiliza el método descrito en este tema para migrar datos, solo se le cobrará por el uso de los buckets de OSS.
|
Escenario |
Regla de facturación |
|
Cargar archivos de copia de seguridad en un bucket de OSS |
Sin costo. |
|
Almacenar archivos de copia de seguridad en un bucket de OSS |
Se le cobran cargos de almacenamiento. Para obtener más información, visite la página Pricing de OSS. |
|
Migrar archivos de copia de seguridad de un bucket de OSS a su instancia de RDS |
|
Requisitos previos
1. Instale Python 3
Vaya al sitio web oficial de Python para descargar e instalar el paquete adecuado para su sistema operativo. Seleccione la versión 3.12 o posterior.
Windows: durante la instalación, seleccione la casilla de verificación
Add python.exe to PATHpara evitar configurar manualmente la variable de entorno.macOS/Linux: instale mediante el instalador oficial o un administrador de paquetes como Homebrew, apt o dnf. Consulte el sitio web oficial para obtener instrucciones.
2. Compruebe la instalación y versión de Python
El nombre del ejecutable puede variar según su sistema operativo y el método de instalación (por ejemplo, python, python3 o py). Pruebe los comandos en orden y revise la salida para confirmar la instalación.
3. Instale las dependencias del SDK
pip install alibabacloud_rds20140815
pip install alibabacloud-oss-v2
pip install alibabacloud_tea_openapi
pip install alibabacloud_tea_util
1. Respalde las bases de datos SQL Server autogestionadas
Para garantizar la consistencia de los datos, no escriba datos nuevos durante la copia de seguridad completa. Programe esta operación con anticipación para no afectar sus servicios.
Si no utiliza el script de copia de seguridad, debe nombrar los archivos de copia de seguridad con el formato
database_name_backup_type_backup_time.bak, por ejemplo,Testdb_FULL_20180518153544.bak. De lo contrario, la copia de seguridad fallará.
Descargue el script de copia de seguridad.
Haga doble clic en el script de copia de seguridad para abrirlo en Microsoft SQL Server Management Studio (SSMS). Para obtener instrucciones sobre cómo conectarse con SSMS, consulte la documentación oficial.
-
Modifique los siguientes parámetros según sea necesario.
Parámetro
Descripción
@backup_databases_list
Las bases de datos que se van a respaldar. Utilice un punto y coma (;) o una coma (,) para separar varios nombres de bases de datos.
@backup_type
El tipo de copia de seguridad. Valores válidos:
FULL: copia de seguridad completa.
DIFF: copia de seguridad diferencial.
LOG: copia de seguridad de registros.
ImportantePara este procedimiento, debe establecer este parámetro en FULL.
@backup_folder
El directorio local donde se almacenarán los archivos de copia de seguridad. Este directorio se crea automáticamente si no existe.
@is_run
Especifica si se ejecuta la copia de seguridad. Valores válidos:
1: ejecuta la copia de seguridad.
0: solo realiza una comprobación.
-
Ejecute el script de copia de seguridad para respaldar las bases de datos en el directorio especificado.
Una vez finalizada la copia de seguridad, se generan archivos de copia de seguridad
.baken el directorioC:\backup, por ejemplo,dtstestdata_FULL_20200408154821.bakytestdb_FULL_20200408154821.bak. Estos archivos indican que el script de copia de seguridad se ejecutó correctamente.
2. Cargue los archivos de copia de seguridad en OSS
-
Antes de cargar los archivos de copia de seguridad en OSS, debe crear un bucket en OSS.
-
Si ya existe un bucket en OSS, asegúrese de que cumpla con los siguientes requisitos:
La storage class del bucket es Standard. Las clases de almacenamiento IA, Archive, Cold Archive y Deep Cold Archive no son compatibles.
Server-side encryption no está habilitado para el bucket.
-
Si no existe ningún bucket en OSS, cree uno primero. (Asegúrese de que OSS esté activated.)
Inicie sesión en la consola de OSS, haga clic en Buckets y luego haga clic en Create bucket.
-
Configure los siguientes parámetros clave y conserve los valores predeterminados para el resto.
ImportanteEl bucket se usa únicamente para esta migración de datos , por lo que solo necesita configurar los parámetros clave. Una vez concluida la migración, elimine el bucket oportunamente para evitar fugas de datos y cargos adicionales.
No habilite server-side encryption al crear el bucket.
Parámetro
Descripción
Ejemplo
Bucket Name
El nombre del bucket. El nombre debe ser único a nivel global y no se puede cambiar después de crear el bucket.
Reglas de nomenclatura:
El nombre solo puede contener letras minúsculas, dígitos y guiones (-).
El nombre debe comenzar y terminar con una letra minúscula o un dígito.
El nombre debe tener entre 3 y 63 caracteres de longitud.
migratetest
Region
La región donde reside el bucket. Si carga datos en el bucket desde una instancia de ECS a través de la red interna y restaura los datos en la instancia de ApsaraDB RDS también por la red interna, asegúrese de que la instancia de ECS, el bucket y la instancia de ApsaraDB RDS residan en la misma región.
China (Hangzhou)
Storage Type
Seleccione Standard. La operación de migración descrita en este tema no admite buckets de otras clases de almacenamiento.
Standard
-
-
Cargue el archivo de copia de seguridad en OSS.
Cuando termine de respaldar la base de datos autogestionada, cargue el archivo de copia de seguridad en un bucket de OSS que resida en la misma región que su instancia de ApsaraDB RDS. Si el bucket y la instancia de ApsaraDB RDS están en la misma región, pueden comunicarse a través de la red interna. En este caso, no se generan cargos por tráfico de Internet y los datos se cargan más rápido. Puede usar uno de los siguientes métodos:
3. Ejecute el script de migración
Descargue el script de migración de SQL Server.
-
Después de extraer el paquete, ejecute el siguiente comando para ver los parámetros del script.
python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -hEl comando devuelve la siguiente salida:
RDSSQLCreateMigrateTasksBatchly.py -k <access_key_id> -s <access_key_secret> -i <rds_instance_id> -e <oss_endpoint> -b <oss_bucket> -d <directory>A continuación se describen los parámetros.
Parámetro
Descripción
access_key_id
El AccessKey ID de su cuenta de Alibaba Cloud.
access_key_secret
El AccessKey Secret de su cuenta de Alibaba Cloud.
rds_instance_id
El ID de la instancia de RDS de destino.
oss_endpoint
El endpoint de la región de OSS donde se encuentra su bucket.
oss_bucket
El nombre del bucket que contiene los archivos de copia de seguridad.
directory
El directorio del bucket de OSS para los archivos de copia de seguridad. Para el directorio raíz, introduzca
/. -
Ejecute el script de migración para completar la migración.
Este tema proporciona un ejemplo de migración completa de todos los archivos de copia de seguridad que cumplen con condiciones específicas desde el directorio
Migrationdatade un bucket de OSS llamadotestdatabuckethacia una instancia de ApsaraDB RDS for SQL Server con el ID de instancia rm-2zesz5774ud8s****.python ~/Downloads/RDSSQLCreateMigrateTasksBatchly.py -k yourAccessKeyID -s yourAccessKeySecret -i rm-2zesz5774ud8s**** -e oss-cn-beijing.aliyuncs.com -b testdatabucket -d Migrationdata
4. Consulte el progreso de la tarea de migración
Siga las instrucciones correspondientes a la versión de SQL Server de su instancia de ApsaraDB RDS.
SQL Server 2012 y posteriores
En el panel de navegación izquierdo de su instancia de ApsaraDB RDS, vaya a la página Backup and Restoration. En la pestaña Cloud Migration Records of Backup Data, puede consultar los registros de migración a la nube, incluido el estado de la tarea, la hora de inicio y la hora de finalización. De forma predeterminada, se muestran los registros de la última semana. Ajuste el rango de tiempo según sea necesario.
Si Task Status es Failed, revise Task Description o haga clic en View File Details junto a la tarea de migración objetivo para determinar por qué falló. Después de corregir el problema, vuelva a ejecutar la tarea de migración.
SQL Server 2008 R2
En el panel de navegación izquierdo de su instancia de ApsaraDB RDS, vaya a la página Data Migration To Cloud. Luego, busque la tarea de migración objetivo para consultar su progreso.
Si Task Status es Failed, revise Task Description o haga clic en View File Details junto a la tarea de migración objetivo para determinar por qué falló. Después de corregir el problema, vuelva a ejecutar la tarea de migración.
Errores comunes
Mensaje de error | Causa | Solución |
| El AccessKey ID utilizado en la llamada a OpenAPI es incorrecto. | Proporcione el AccessKey ID and AccessKey Secret correcto. |
| El AccessKey Secret utilizado en la llamada a OpenAPI es incorrecto. | |
| Esta solución solo es compatible con ApsaraDB RDS for SQL Server. No se admiten otros motores de base de datos. | Utilice una instancia de ApsaraDB RDS for SQL Server como destino de la migración. |
| El ID de instancia de RDS especificado no existe. | Compruebe que el ID de instancia de RDS proporcionado sea correcto. |
| La conexión falló debido a un endpoint incorrecto. | Compruebe que el endpoint proporcionado sea correcto. |
| El bucket de OSS especificado no existe. | Compruebe que el nombre del bucket de OSS proporcionado sea correcto. |
| La carpeta especificada no existe en el bucket de OSS o no contiene archivos de copia de seguridad de base de datos válidos. | Compruebe que la carpeta exista en el bucket de OSS y contenga archivos de copia de seguridad de base de datos válidos. |
| El nombre del archivo de copia de seguridad no cumple con la convención de nomenclatura obligatoria. | Si no utiliza el script de copia de seguridad, debe nombrar el archivo con el formato |
| El usuario de RAM tiene permisos insuficientes. | Debe grant the RAM user permissions to access OSS and RDS. Esto requiere las políticas AliyunOSSFullAccess y AliyunRDSFullAccess. |
| La llamada a OpenAPI devolvió un error. | Analice la causa raíz a partir del error code and error message devuelto. |
Códigos de error de OpenAPI
Código de estado HTTP | Error | Mensaje | Descripción |
403 | InvalidDBName | The specified database name is not allowed. | El nombre de la base de datos no es válido. No puede utilizar nombres de bases de datos del sistema. |
403 | IncorrectDBInstanceState | The current instance state does not allow this operation. | La instancia de RDS se encuentra en un estado no válido. Por ejemplo, la instancia está en estado Creating. |
400 | IncorrectDBInstanceType | The current instance type does not support this operation. | El motor de la instancia no es compatible. Esta función solo está disponible para ApsaraDB RDS for SQL Server. |
400 | IncorrectDBInstanceLockMode | The current instance lock mode does not support this operation. | La base de datos se encuentra en un estado de bloqueo no válido. |
400 | InvalidDBName.NotFound | One or more of the specified database names do not exist, or their status does not allow the operation. | La base de datos no existe.
|
400 | IncorrectDBType | The database type does not support this operation. | |
400 | IncorrectDBState | The current database state does not allow this operation. | La base de datos se encuentra en un estado no válido; por ejemplo, se está creando o hay una migración en curso. |
400 | UploadLimitExceeded | The daily migration quota for the database has been exceeded. | Se permite un máximo de 20 migraciones diarias por base de datos en cada instancia. |
400 | ConcurrentTaskExceeded | The daily migration quota for the instance has been exceeded. | Una instancia tiene un límite máximo de 500 migraciones al día. |
400 | IncorrectFileExtension | The file extension is not supported. | La extensión del archivo de copia de seguridad no es válida. |
400 | InvalidOssUrl | The specified OSS URL is invalid. | La URL de descarga de OSS proporcionada no está disponible. |
400 | BakFileSizeExceeded | The backup file exceeds the allowed size limit. | El tamaño del archivo de copia de seguridad no puede superar los 3 TB. |
400 | FileSizeExceeded | The file is too large for the destination instance. | Restaurar el archivo de copia de seguridad superaría la capacidad de almacenamiento de la instancia de destino. |
Operaciones de API relacionadas
|
API |
Descripción |
|
Restaura archivos de copia de seguridad de OSS en una instancia de ApsaraDB RDS for SQL Server y crea una tarea de migración de datos. |
|
|
Abre la base de datos de una tarea de migración de datos de copia de seguridad en una instancia de ApsaraDB RDS for SQL Server. |
|
|
Consulta la lista de tareas de migración de datos de copia de seguridad en una instancia de ApsaraDB RDS for SQL Server. |
|
|
Consulta los detalles de los archivos de copia de seguridad de una tarea de migración de datos en una instancia de ApsaraDB RDS for SQL Server. |
, seleccione el archivo de copia de seguridad que desea cargar y luego haga clic en Open. El archivo local se carga en OSS.