En este instructivo, se muestran dos maneras de clonar una base de datos MySQL que se ejecuta en Compute Engine. En uno de los métodos, se usan instantáneas de disco persistente. El otro método usa la importación y exportación nativas de MySQL y transfiere el archivo de exportación con Cloud Storage. Cloud Storage es el servicio de almacenamiento de objetos de Google Cloud. Ofrece una manera sencilla, duradera, más segura y con alta disponibilidad de almacenar archivos.
La clonación es el proceso mediante el cual se copia una base de datos a otro servidor. La copia es independiente de la base de datos de origen y se conserva como una instantánea de un momento determinado. Puedes usar una base de datos clonada para varios fines, sin cargar el servidor de producción ni poner en riesgo la integridad de los datos de producción. Algunos de estos fines son los siguientes:
- Realizar consultas estadísticas
- Llevar a cabo una prueba de carga o de integración de tus aplicaciones
- Extraer datos para propagar almacenes de datos
- Ejecutar experimentos en los datos
Cada método de clonación que se describe en este instructivo tiene ventajas y desventajas. El método ideal para ti depende de tu situación. En la siguiente tabla, se destacan algunos problemas clave.
Problema | Método 1: instantáneas de disco | Método 2: exportar y, luego, importar con Cloud Storage |
---|---|---|
Se requiere espacio de disco adicional en las instancias de MySQL | No se necesita espacio de disco adicional | Espacio adicional necesario para almacenar el archivo de exportación durante la creación y el restablecimiento |
Carga adicional en instancias de MySQL de origen durante la clonación | Sin carga adicional | Carga adicional en CPU y E/S cuando se crea y se sube el archivo de exportación |
Duración de la clonación | Relativamente rápida para bases de datos grandes | Relativamente lenta para bases de datos grandes |
Se puede clonar desde instancias de MySQL externas a Google Cloud | No | Sí |
Complejidad | Una secuencia de comandos compleja para conectar discos clonados | Un conjunto de comandos relativamente sencillo para la clonación |
Aprovechamiento de sistemas de copia de seguridad existentes | Sí, si el sistema de copia de seguridad usa instantáneas de disco de Google Cloud | Sí, si el sistema de copia de seguridad exporta archivos a Cloud Storage |
Nivel de detalle de la clonación | Puede clonar solo discos completos | Puede clonar solo la base de datos especificada |
Coherencia de los datos | Coherente en el punto de la instantánea | Coherente en el punto de exportación |
Puede usar Cloud SQL como origen | No | Sí, si se usa la misma versión |
Puede usar Cloud SQL como destino | No | Sí |
En este instructivo, se supone que conoces la línea de comandos de Linux y la administración de la base de datos MySQL.
Objetivos
- Aprender cómo ejecutar una base de datos MySQL en Google Cloud
- Aprender a crear una base de datos de demostración en un disco secundario
- Aprender cómo clonar una base de datos MySQL con las instantáneas de disco de Compute Engine.
- Aprender cómo clonar una base de datos MySQL mediante la transferencia de un archivo de exportación con Cloud Storage.
- Aprender cómo clonar una base de datos MySQL en Cloud SQL mediante la transferencia de un archivo de exportación con Cloud Storage.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Habilita la API de Compute Engine. Habilita la API
Configura el entorno
Para completar este instructivo, debes configurar el entorno de computación con lo siguiente:
- Una instancia de MySQL en Compute Engine (llamada
mysql-prod
) para representar tu servidor de base de datos de producción. - Un disco adicional (llamado
mysql-prod-data
) que esté conectado al servidor de producción para almacenar la base de datos de producción - Una copia de la base de datos
Employees
importada enmysql-prod
para simular la base de datos de producción que deseas clonar - Una instancia de MySQL en Compute Engine (denominada
mysql-test
) para representar el servidor de base de datos de prueba. Clonarás tu base de datos en este servidor.
En el siguiente diagrama, se ilustra esta arquitectura.
Crea la instancia de VM de producción
Para simular un entorno de producción, configura una instancia de VM de Compute Engine que ejecute MySQL en Debian Linux.
En la instancia de VM de este instructivo, se usan dos discos: uno de 50 GB para el SO y las cuentas de usuario, y otro de 100 GB para el almacenamiento de la base de datos.
En Compute Engine, el uso de discos independientes no ofrece beneficios en cuanto al rendimiento. El rendimiento del disco se determina por la capacidad de almacenamiento total de todos los discos conectados a una instancia y por la cantidad total de CPU virtuales en la instancia de VM. Por lo tanto, la base de datos y el archivo de registro pueden estar en el mismo disco.
Abre Cloud Shell
Establece tu zona preferida:
ZONE=us-east1-b REGION=us-east1 gcloud config set compute/zone "${ZONE}"
Crea una instancia de Compute Engine:
gcloud compute instances create mysql-prod \ --machine-type=n1-standard-2 \ --scopes=cloud-platform \ --boot-disk-size=50GB \ --boot-disk-device-name=mysql-prod \ --create-disk="mode=rw,size=100,type=pd-standard,name=mysql-prod-data,device-name=mysql-prod-data"
Con este comando, se le otorga a la instancia acceso completo a las API de Google Cloud, se crea un disco secundario de 100 GB y se conecta el disco a la instancia. Ignora la advertencia de rendimiento del disco porque no necesitas un rendimiento alto para este instructivo.
Configura el disco adicional
El segundo disco conectado a la instancia de producción es para almacenar la base de datos de producción. Este disco está en blanco, por lo que debes particionarlo, formatearlo y activarlo.
En la consola de Google Cloud, ve a la página Instancias de VM.
Asegúrate de que aparezca una marca de verificación verde check junto al nombre de la instancia
mysql-prod
, lo cual indica que la instancia está lista.Haz clic en el botón SSH junto a la instancia
mysql-prod
. El navegador abrirá una conexión de terminal a la instancia.En la ventana de la terminal, muestra una lista de discos conectados a tu instancia:
lsblk
El resultado es el siguiente:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 100G 0 disk
El disco con el nombre
sdb
(100 GB) es tu disco de datos.Formatea el disco
sdb
y crea una sola partición con un sistema de archivos ext4:sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard \ /dev/sdb
Crea el directorio de datos de MySQL para que sea el punto de activación del disco de datos:
sudo mkdir -p /var/lib/mysql
Para activar el disco de forma automática en el punto de activación que creaste, agrega una entrada al archivo
/etc/fstab
:echo "UUID=`sudo blkid -s UUID -o value /dev/sdb` /var/lib/mysql ext4 discard,defaults,nofail 0 2" \ | sudo tee -a /etc/fstab
Activa el disco:
sudo mount -av
Quita todos los archivos del disco de datos para que MySQL pueda usarlos como directorio de datos:
sudo rm -rf /var/lib/mysql/*
Instala el servidor MySQL
Debes descargar y, luego, instalar MySQL Community Edition. El directorio de datos de MySQL se crea en el disco adicional.
En la sesión SSH conectada a
mysql-prod
, descarga y, luego, instala el paquete de configuración de MySQL:wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
Cuando se te solicite, selecciona la opción Servidor MySQL y clúster y, luego, mysql-5.7.
En la lista, selecciona la opción Aceptar para completar la configuración del paquete.
Actualiza la caché del repositorio y, luego, instala los paquetes de mysql-community:
sudo apt-get update sudo apt-get install -y mysql-community-server mysql-community-client
Cuando se te advierta que el directorio de datos ya existe, selecciona Aceptar.
Cuando se te pida que proporciones una contraseña raíz, crea una contraseña y, luego, ingrésala. Anota la contraseña o guárdala temporalmente en un lugar seguro.
Descargar y, luego, instalar la base de datos de muestra
En la sesión SSH conectada a la instancia
mysql-prod
, instala git:sudo apt-get install -y git
Clona el repositorio de GitHub que contiene las secuencias de comandos de la base de datos
Employees
:git clone https://github.com/datacharmer/test_db.git
Cambia al directorio para la secuencia de comandos de la base de datos
Employees
:cd test_db
Ejecuta la secuencia de comandos de creación de la base de datos
Employees
:mysql -u root -p -q < employees.sql
Cuando se te solicite, ingresa la contraseña raíz que creaste antes.
Para verificar si la base de datos de muestra funciona, puedes ejecutar una consulta que recuente la cantidad de filas en la tabla
employees
:mysql -u root -p -e "select count(*) from employees.employees;"
Cuando se te solicite, ingresa la contraseña raíz que creaste antes.
Este es el resultado:
+----------+ | count(*) | +----------+ | 300024 | +----------+
Crea la instancia de VM de prueba
En esta sección, crearás una instancia de VM de MySQL llamada mysql-test
como destino para la base de datos clonada. La configuración de esta instancia es idéntica a la instancia de producción. Sin embargo, no crearás un segundo disco de datos, en cambio, conectarás el disco de datos más adelante en este instructivo.
Abre Cloud Shell
Crea la instancia de MySQL de prueba:
gcloud compute instances create mysql-test \ --machine-type=n1-standard-2 \ --scopes=cloud-platform \ --boot-disk-size=50GB \ --boot-disk-device-name=mysql-test
Puedes ignorar la advertencia de rendimiento del disco porque no necesitas un rendimiento alto para este instructivo.
Instala el servidor MySQL en la instancia de VM de prueba
También debes descargar y, luego, instalar MySQL Community Edition en la instancia de VM mysql-test
.
En la sesión SSH conectada a
mysql-test
, descarga y, luego, instala el paquete de configuración de MySQL:wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
Cuando se te solicite, selecciona la opción Servidor MySQL y clúster y, luego, mysql-5.7.
En la lista, selecciona la opción Aceptar para completar la configuración del paquete.
Actualiza la caché del repositorio y, luego, instala los paquetes de mysql-community:
sudo apt-get update sudo apt-get install -y mysql-community-server mysql-community-client
Cuando se te pida que proporciones una contraseña raíz, crea una contraseña y, luego, ingrésala. Anota la contraseña o guárdala temporalmente en un lugar seguro.
Clona la base de datos con instantáneas de disco de Compute Engine
Una forma de clonar una base de datos MySQL que se ejecuta en Compute Engine es almacenarla en un disco de datos independiente y usar instantáneas de disco persistente para crear una clonación de ese disco.
Las instantáneas de disco persistente te permiten obtener una copia de un momento determinado de los datos en el disco. La programación de instantáneas de disco es una forma de crear copias de seguridad automáticas de los datos.
En esta sección del instructivo, harás lo siguiente:
- Tomarás una instantánea del disco de datos del servidor de producción.
- Crearás un disco nuevo a partir de la instantánea.
- Activarás el disco nuevo en el servidor de prueba.
- Reinicia el servidor MySQL en la instancia de prueba para que el servidor use el disco nuevo como un disco de datos.
En el siguiente diagrama, se muestra cómo se clona una base de datos mediante instantáneas de disco.
Crea la instantánea de disco
Abre Cloud Shell
Crea una instantánea de tu disco de datos en la misma zona que la instancia de VM:
gcloud compute disks snapshot mysql-prod-data \ --snapshot-names=mysql-prod-data-snapshot \ --zone="${ZONE}"
Luego de unos minutos, se creará la instantánea.
Conecta la instantánea de disco a la instancia de prueba
Debes crear un disco de datos nuevo a partir de la instantánea que creaste y, luego, conectarlo a la instancia mysql-test
.
Abre Cloud Shell
Crea un disco persistente nuevo con la instantánea del disco de producción para el contenido:
gcloud beta compute disks create mysql-test-data \ --size=100GB \ --source-snapshot=mysql-prod-data-snapshot \ --zone="${ZONE}"
Conecta el disco nuevo a la instancia
mysql-test
con permisos de lectura y escritura:gcloud compute instances attach-disk mysql-test \ --disk=mysql-test-data --mode=rw
Activa el disco de datos nuevo en Linux
Para usar el disco de datos clonado como el directorio de datos de MySQL, debes detener la instancia de MySQL y activar el disco.
En la sesión SSH conectada a
mysql-test
, detén el servicio MySQL:sudo service mysql stop
En la ventana de la terminal, muestra una lista de discos conectados a tu instancia:
lsblk
El resultado es el siguiente:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 100G 0 disk
El disco
sdb
(100 GB) es tu disco de datos.Activa el disco de datos de MySQL en el directorio de datos de MySQL:
sudo mount -o discard,defaults /dev/sdb /var/lib/mysql
Activar este disco oculta los archivos de configuración y los espacios de tabla de MySQL, y los reemplaza por el contenido del disco.
Con este comando, el disco se activará de forma temporal y no se volverá a activar durante el arranque del sistema. Si deseas activar el disco en el arranque del sistema, crea una entrada
fstab
. Para obtener más información, consulta la sección anterior de este instructivo: Configura el disco adicional.
Inicia MySQL en la instancia de prueba
En la sesión SSH conectada a
mysql-test
, inicia el servicio de MySQL:sudo service mysql start
Para verificar si la base de datos clonada funciona, ejecuta una consulta que cuente la cantidad de filas en la tabla
employees
:mysql -u root -p -e "select count(*) from employees.employees;"
Cuando se te solicite, ingresa la contraseña raíz del servidor de base de datos
mysql-prod
. La contraseña raíz de la instancia de producción es obligatoria porque todo el directorio de datos de MySQL es una clonación del directorio de datos de la instanciamysql-prod
, por lo que se copian todas las bases de datos, los usuarios de base de datos y sus contraseñas.+----------+ | count(*) | +----------+ | 300024 | +----------+
La cantidad de filas es la misma que en la instancia
mysql-prod
.
Ahora que aprendiste a clonar una base de datos mediante instantáneas de disco persistente, puedes intentar hacerlo con la exportación y la importación. Para completar el segundo enfoque de este instructivo, debes desactivar el disco clonado.
Desactiva el disco clonado
Para desactivar el disco clonado que creaste mediante las instantáneas de disco, realiza los siguientes pasos:
En la sesión SSH conectada a tu instancia
mysql-test
, detén el servicio de MySQL:sudo service mysql stop
Desactiva el disco de datos clonado del directorio de datos de MySQL:
sudo umount /var/lib/mysql
Reinicia el servicio de MySQL:
sudo service mysql start
Clona con el método exportación/importación
Un segundo método para clonar una base de datos MySQL que se ejecuta en Compute Engine es usar la exportación nativa de MySQL (mediante mysqldump
) y la importación. Con este enfoque, transfieres el archivo de exportación mediante Cloud Storage.
En esta sección del instructivo, se usan los recursos que creaste en la sección Clona la base de datos mediante instantáneas de disco de Compute Engine de este instructivo. Si no completaste esa sección, debes hacerlo antes de continuar.
En esta sección del instructivo, harás lo siguiente:
- Crear un bucket de Cloud Storage
- Exportar la base de datos en la instancia de producción y escribirla en Cloud Storage
- Importar el archivo de exportación a la instancia de prueba y leerlo desde Cloud Storage
En el siguiente diagrama, se muestra cómo se clona una base de datos mediante la transferencia de una exportación con Cloud Storage.
Debido a que los sistemas fuera de Google Cloud pueden tener acceso a Cloud Storage, puedes usar este enfoque para clonar bases de datos desde instancias de MySQL externas.
Crea un bucket de Cloud Storage
Debes crear un bucket de Cloud Storage que almacene los archivos de exportación mientras los transfieres de la instancia mysql-prod
a la instancia mysql-test
.
Abre Cloud Shell
Crea un bucket de Cloud Storage en la misma región que las instancias de VM:
gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
Exporta la base de datos
En el entorno de producción, es posible que ya realices copias de seguridad mediante archivos de exportación mysqldump
. Puedes usar estas copias de seguridad como base para clonar tu base de datos.
En este instructivo, crearás un archivo de exportación nuevo mediante mysqldump
, que no afectará ninguna programación de copia de seguridad completa o incremental existente.
En la sesión SSH, conectada a la instancia
mysql-prod
, exporta la base de datosEmployees
y transmítela a un objeto de Cloud Storage en el bucket que creaste antes:mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose --hex_blob \ --databases employees |\ gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-dump.sql"
Cuando se te solicite, ingresa la contraseña raíz del servidor de base de datos
mysql-prod
.Usa el grupo de caracteres
utf8mb4
en la exportación para evitar cualquier problema de codificación de caracteres.La opción
--add-drop-database
se usa para que las declaracionesDROP DATABASE
yCREATE DATABASE
se incluyan en la exportación.
Importa el archivo exportado
En la sesión SSH conectada a la instancia
mysql-test
, transmite el archivo exportado desde tu bucket de Cloud Storage a la aplicación de línea de comandos demysql
:gcloud storage cat "gs://$(gcloud config get-value project)-bucket/employees-dump.sql" |\ mysql --user=root -p --default-character-set=utf8mb4
Cuando se te solicite, ingresa la contraseña raíz del servidor de base de datos
mysql-test
.Usa el grupo de caracteres
utf8mb4
en la importación para evitar cualquier problema de codificación de caracteres.Para verificar si la base de datos clonada funciona, ejecuta una consulta que cuente la cantidad de filas en la tabla
employees
:mysql -u root -p -e "select count(*) from employees.employees;"
Cuando se te solicite, ingresa la contraseña raíz del servidor de base de datos
mysql-test
.+----------+ | count(*) | +----------+ | 300024 | +----------+
La cantidad de filas es la misma que en la instancia
mysql-prod
.
Usa Cloud SQL como destino de clonación
Si la base de datos de destino está alojada en Cloud SQL y la base de datos de origen se encuentra en Compute Engine, el único mecanismo admitido para realizar la clonación es exportar la base de datos a Cloud Storage y, luego, importarla a Cloud SQL.
Como se explica en la documentación de Cloud SQL, Cloud SQL solo puede importar el archivo exportado cuando no contiene activadores, procedimientos almacenados, vistas ni funciones.
Si tu base de datos se basa en cualquiera de estos elementos, debes excluirlos de la exportación mediante los argumentos de línea de comandos --skip-triggers
y --ignore-table [VIEW_NAME]
y, luego, volver a crearlos de forma manual después de la importación.
Crea una instancia de Cloud SQL para MySQL
Abre Cloud Shell
Crea una instancia de Cloud SQL para MySQL que ejecute la misma versión de la base de datos que tu instancia
mysql-prod
:gcloud sql instances create mysql-cloudsql \ --tier=db-n1-standard-2 --region=${REGION} --database-version MYSQL_5_7
Luego de unos minutos, se creará la base de datos de Cloud SQL.
Restablece la contraseña del usuario raíz a un valor conocido:
gcloud sql users set-password root \ --host=% --instance=mysql-cloudsql --prompt-for-password
Cuando se te pida que proporciones una contraseña raíz, crea una contraseña y, luego, ingrésala. Anota la contraseña o guárdala temporalmente en un lugar seguro.
Exporta la base de datos
Con el fin de exportar la base de datos en un formato adecuado para la importación a Cloud SQL, debes excluir cualquier vista en la base de datos.
En la sesión SSH conectada a la instancia
mysql-prod
, configura una variable de entorno que contenga un conjunto de argumentos de línea de comandos para el comandomysqldump
a fin de que ignore las vistas en la base de datosEmployees
:DATABASE_NAME=employees IGNORE_TABLES_ARGS="`mysql -u root -p -s -s -e \" SELECT CONCAT('--ignore-table ${DATABASE_NAME}.',TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA = '${DATABASE_NAME}'; \"`"
Cuando se te solicite, ingresa la contraseña raíz del servidor de base de datos
mysql-prod
.Ve los contenidos de las variables para comprobar que se hayan configurado correctamente:
echo "${IGNORE_TABLES_ARGS}"
--ignore-table employees.current_dept_emp --ignore-table employees.dept_emp_latest_date
Exporta la base de datos
Employees
, sin incluir los activadores ni las vistas, y transmítela directamente a un objeto de Cloud Storage en el bucket que creaste antes:mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose \ --hex-blob --skip-triggers --set-gtid-purged=OFF \ $IGNORE_TABLES_ARGS \ --databases employees |\ gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"
Cuando se te solicite, ingresa la contraseña raíz del servidor de base de datos
mysql-prod
.
Actualiza permisos de objetos
Los permisos correctos deben configurarse en el bucket de Cloud Storage y en el objeto de exportación para que la cuenta de servicio de Cloud SQL pueda leerlos.
Estos permisos se configuran de forma automática cuando usas la consola de Google Cloud para importar el objeto o pueden configurarse mediante comandos de gcloud
.
Abra Cloud Shell.
Configura una variable de entorno que contenga la dirección de la cuenta de servicio de la instancia de Cloud SQL:
CLOUDSQL_SA="$(gcloud sql instances describe mysql-cloudsql --format='get(serviceAccountEmailAddress)')"
Agrega la cuenta de servicio a la política de IAM del bucket como lector y escritor:
gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \ --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
Importa la base de datos exportada
Abre Cloud Shell
Importa el archivo exportado a tu instancia de Cloud SQL:
gcloud sql import sql mysql-cloudsql \ "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"
Cuando se te solicite, ingresa
y
.Para verificar si la base de datos clonada funciona, ejecuta una consulta que cuente la cantidad de filas en la tabla
employees
:echo "select count(*) from employees.employees;" |\ gcloud sql connect mysql-cloudsql --user=root
Cuando se te solicite, ingresa la contraseña raíz del servidor de base de datos
mysql-cloudsql
.Este es el resultado:
Connecting to database with SQL user [root].Enter password: count(*) 300024
La cantidad de filas es la misma que en la instancia
mysql-prod
.
Información adicional para sistemas de producción
Usa instantáneas de disco
Para las copias de seguridad físicas (como las instantáneas de disco), la documentación de MySQL recomienda detener las escrituras en la base de datos antes de tomar una instantánea. Para ello, usa el comando FLUSH TABLES WITH READ LOCK
. Cuando se completa la instantánea, puedes usar UNLOCK TABLES
para reiniciar las escrituras.
Para las bases de datos que usan tablas InnoDB, recomendamos que tomes la instantánea directamente sin ejecutar primero el comando FLUSH TABLES WITH READ LOCK
. Esto permite que la base de datos permanezca en ejecución sin efectos negativos, pero es posible que el estado de la instantánea sea incoherente. Sin embargo, si esto ocurre, el motor de InnoDB puede volver a compilar las tablas para que su estado sea coherente al momento de iniciar la clonación.
Para las bases de datos que usan tablas MyISAM, la ejecución del comando FLUSH TABLES WITH READ LOCK
bloquea todas las escrituras en las tablas, lo que hace que tu base de datos sea de solo lectura hasta que ejecutes el comando UNLOCK TABLES
.
Si tomas una instantánea sin primero vaciar y bloquear las tablas, existe el riesgo de que la base de datos recién clonada contenga datos incoherentes o se dañe.
Por lo tanto, para obtener una instantánea coherente en las bases de datos con tablas MyISAM, te recomendamos ejecutar FLUSH TABLES WITH READ LOCK
en una réplica de lectura y tomar una instantánea de esa réplica para que el rendimiento de la base de datos principal no se vea afectado.
Usa el comando mysqldump
Para crear un archivo de exportación que sea coherente con la base de datos de origen, el comando mysqldump
bloquea todas las tablas durante la operación de exportación. Esto significa que las escrituras en la base de datos se bloquean mientras se exporta la base de datos.
Por lo tanto, te recomendamos que ejecutes el comando mysqldump
en una réplica de lectura de la base de datos principal para que esta no se bloquee.
Limpia
Para evitar que se apliquen cargos a la cuenta de Google Cloud por los recursos que se usaron en este instructivo, puedes borrar el proyecto de Google Cloud que creaste para este instructivo.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
¿Qué sigue?
Obtén información sobre cómo supervisar tus consultas lentas en MySQL con Cloud Monitoring.
Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.