GNU/Linux >> Tutoriels Linux >  >> Linux

Amazon :Comment changer le nom de la base de données dans Amazon RDS MySQL ?

vous pouvez renommer la base de données à l'aide de la commande suivante, mais assurez-vous d'abord d'effectuer une sauvegarde

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;

références :http://www.rndblog.com/how-to-rename-a-database-in-mysql/https://stackoverflow.com/questions/12190000/rename-mysql-database


Vous pouvez le retirer en utilisant mysqldump. Voici le hic :vous ne pouvez pas expédier les données car il peut y avoir un coût associé à l'expédition des données.

Pour cet exemple, disons que vous voulez renommer mydb à ourdb

ÉTAPE 01 :Créer la nouvelle base de données

mysql> CREATE DATABASE ourdb;

ÉTAPE 02 :Obtenir le schéma sans les déclencheurs

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

ÉTAPE 03 :Obtenir les déclencheurs

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

ÉTAPE 04 :Générer le script pour faire INSERT ... SELECT sur tous les tableaux

S'IL EXISTE DES CONTRAINTES DE CLÉ ÉTRANGÈRE

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}

S'IL N'Y A AUCUNE CONTRAINTE DE CLÉ ÉTRANGÈRE

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}

S'il n'y a pas de contraintes de clé étrangère, cela devrait aller vite.

ÉTAPE 05 :Combinez les fichiers en un seul script

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

ÉTAPE 06 :Révisez le script

vi -R /tmp/ETL.sql

ou

less /tmp/ETL.sql

ÉTAPE 07 :Exécuter le script

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

ÉTAPE 08 :Assurez-vous que toutes les données sont dans la base de données cible

Vous pouvez le faire

S'il n'y avait pas de contraintes de clé étrangère, mydb devrait être vide et ourdb devrait avoir toutes les tables.

S'il y avait des contraintes de clé étrangère, assurez-vous que mydb et ourdb ont le même nombre de tables et le même nombre de lignes. Assurez-vous que tous les déclencheurs sont présents en exécutant

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

ÉTAPE 09 :Supprimez manuellement l'ancienne base de données

mysql> DROP DATABASE mydb;

Je n'ai pas inclus la suppression de la base de données dans le script, juste au cas où. :-)

ESSAYEZ-LE !!!


Linux
  1. Comment changer le classement de la base de données MySQL ?

  2. Comment copier une base de données MySQL

  3. Comment créer une base de données dans MySQL avec MySQL Workbench

  4. Comment installer MySQL 5.7 sur Amazon Linux

  5. Comment configurer une base de données esclave MySQL

Comment renommer le nom de la base de données MySQL sous Linux

Comment changer le nom du site Web dans WordPress

Comment changer le mot de passe de la base de données MySQL depuis SolidCP ?

Comment changer le mot de passe de la base de données MySQL depuis WebsitePanel 2.1 ?

Comment créer une base de données dans MySQL

Comment renommer un nom de base de données MySQL