GNU/Linux >> Linux Esercitazione >  >> Linux

Amazon:come modificare il nome del database in Amazon RDS MySQL?

puoi rinominare il database usando il seguente comando ma assicurati di eseguire prima il backup

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;

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


Puoi farlo usando mysqldump. Ecco il trucco:non puoi spedire i dati perché potrebbe esserci un costo associato alla spedizione dei dati.

Per questo esempio, diciamo che vuoi rinominare mydb a ourdb

PASSAGGIO 01:Crea il nuovo database

mysql> CREATE DATABASE ourdb;

PASSAGGIO 02:Ottieni lo schema senza i trigger

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

PASSAGGIO 03:Ottieni i trigger

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

PASSAGGIO 04:Genera lo script per eseguire INSERT ... SELECT su tutte le tabelle

SE CI SONO VINCOLI DI CHIAVE ESTERA

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}

SE NON CI SONO VINCOLI DI CHIAVE ESTERA

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}

Se non ci sono vincoli di chiave esterna, questo dovrebbe andare veloce.

PASSAGGIO 05:Combina i file in un singolo script

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

PASSAGGIO 06:rivedi lo script

vi -R /tmp/ETL.sql

o

less /tmp/ETL.sql

PASSAGGIO 07:esegui lo script

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

PASSAGGIO 08:assicurati che tutti i dati siano nel database di destinazione

Puoi farlo

Se non ci fossero vincoli di chiave esterna, mydb dovrebbe essere vuoto e ourdb dovrebbe avere tutte le tabelle.

Se c'erano vincoli di chiave esterna, assicurati mydb e ourdb hanno lo stesso numero di tabelle e lo stesso numero di righe. Assicurati che tutti i trigger siano presenti eseguendo

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

PASSAGGIO 09:eliminare manualmente il vecchio database

mysql> DROP DATABASE mydb;

Non ho incluso l'eliminazione del database nello script, per ogni evenienza. :-)

PROVA !!!


Linux
  1. Come modificare le regole di confronto del database MySQL?

  2. Come copiare un database MySQL

  3. Come creare un database in MySQL con MySQL Workbench

  4. Come importare il database di esportazione in MySQL MariaDB

  5. Come cambiare la password di root mysql

Come rinominare il nome del database MySQL in Linux

Come modificare il nome del sito Web in WordPress

Come modificare la password del database MySQL da SolidCP?

Come modificare la password del database MySQL da WebsitePanel 2.1?

Come creare un database in MySQL

Come rinominare un nome di database MySQL