GNU/Linux >> Tutoriales Linux >  >> Linux

Amazon:¿Cómo cambiar el nombre de la base de datos en Amazon RDS MySQL?

puede cambiar el nombre de la base de datos usando el siguiente comando, pero asegúrese de hacer una copia de seguridad primero

CREATE database new_db_name;
RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name;
DROP database db_name;

referencias:http://www.rndblog.com/how-to-rename-a-database-in-mysql/https://stackoverflow.com/questions/12190000/rename-mysql-database


Puede lograr esto usando mysqldump. Aquí el problema:no puede enviar los datos porque puede haber un costo asociado con el envío de los datos.

Para este ejemplo, supongamos que desea cambiar el nombre de mydb a ourdb

PASO 01:Crear la nueva base de datos

mysql> CREATE DATABASE ourdb;

PASO 02:Obtenga el esquema sin los activadores

mysqldump -hrdshost -uuser -ppassword -d -t -R --skip-triggers mydb > /tmp/schema.sql

PASO 03:Obtener los factores desencadenantes

mysqldump -hrdshost -uuser -ppassword --skip-routines --triggers mydb > /tmp/triggers.sql

PASO 04:Generar script para hacer INSERT ... SELECT en todas las tablas

SI HAY RESTRICCIONES DE CLAVE EXTRANJERA

ETL_DATA_SCRIPT=/tmp/DataTransfer.sql
echo -n > ${ETL_DATA_SCRIPT}
echo "SET @[email protected]@CHARACTER_SET_CLIENT;" >> ${ETL_DATA_SCRIPT}
echo "SET @[email protected]@CHARACTER_SET_RESULTS;" >> ${ETL_DATA_SCRIPT}
echo "SET @[email protected]@COLLATION_CONNECTION;" >> ${ETL_DATA_SCRIPT}
echo "SET NAMES utf8;" >> ${ETL_DATA_SCRIPT}
echo "SET @[email protected]@TIME_ZONE;" >> ${ETL_DATA_SCRIPT}
echo "SET TIME_ZONE='+00:00';" >> ${ETL_DATA_SCRIPT}
echo "SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;" >> ${ETL_DATA_SCRIPT}
echo "SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;" >> ${ETL_DATA_SCRIPT}
echo "SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';" >> ${ETL_DATA_SCRIPT}
echo "SET @[email protected]@SQL_NOTES, SQL_NOTES=0;" >> ${ETL_DATA_SCRIPT}
echo "SET group_concat_max_len = 104857600;" >> ${ETL_DATA_SCRIPT}
SQL="SELECT CONCAT('INSERT INTO ourdb.',table_name,' SELECt * FROM mydb.',table_name,';')"
SQL="${SQL} FROM information_schema.tables WHERE table_schema='mydb'"
mysql -hrdshost -uuser -ppassword -ANe"${SQL}" >> ${ETL_DATA_SCRIPT}

SI NO HAY RESTRICCIONES DE CLAVE EXTRANJERA

ETL_DATA_SCRIPT=/tmp/DataTransfer.sql
SQL="SELECT CONCAT('ALTER TABLE mydb.',table_name,' RENAME ourdb.',table_name,';')"
SQL="${SQL} FROM information_schema.tables WHERE table_schema='mydb'"
mysql -hrdshost -uuser -ppassword -ANe"${SQL}" > ${ETL_DATA_SCRIPT}

Si no hay restricciones de clave externa, esto debería ir rápido.

PASO 05:Combine los archivos en un solo script

ETL_SCRIPT=/tmp/ETL.sql
cat /tmp/schema.sql        > ${ETL_SCRIPT}
cat /tmp/DataTransfer.sql >> ${ETL_SCRIPT}
cat /tmp/triggers.sql     >> ${ETL_SCRIPT}

PASO 06:Revisar el guión

vi -R /tmp/ETL.sql

o

less /tmp/ETL.sql

PASO 07:Ejecutar el script

mysql -hrdshost -uuser -ppassword -Dourdb < ${ETL_SCRIPT}

PASO 08:Asegúrese de que todos los datos estén en la base de datos de destino

Puedes hacer eso

Si no hubiera restricciones de clave externa, mydb debería estar vacío y ourdb debería tener todas las tablas.

Si hubiera restricciones de clave externa, asegúrese de que mydb y ourdb tienen el mismo número de tablas y el mismo número de filas. Asegúrese de que todos los disparadores estén presentes ejecutando

SELECT COUNT(1) trigger_count,table_schema
FROM information_schema.triggers
GROUP By table_schema;

PASO 09:Suelte la base de datos anterior manualmente

mysql> DROP DATABASE mydb;

No incluí la eliminación de la base de datos en el script, por si acaso. :-)

PROBARLO!!!


Linux
  1. Cómo copiar una base de datos MySQL

  2. Cómo crear una base de datos en MySQL con MySQL Workbench

  3. Cómo instalar MySQL 5.7 en Amazon Linux

  4. Cómo configurar una base de datos esclava de MySQL

  5. Cómo cambiar la contraseña de root mysql

Cómo cambiar el nombre de la base de datos MySQL en Linux

Cómo cambiar el nombre del sitio web en WordPress

¿Cómo cambiar la contraseña de la base de datos MySQL desde SolidCP?

¿Cómo cambiar la contraseña de la base de datos MySQL desde WebsitePanel 2.1?

Cómo crear una base de datos en MySQL

Cómo cambiar el nombre de una base de datos MySQL