GNU/Linux >> Znalost Linux >  >> Linux

Amazon:Jak změnit název databáze v Amazon RDS MySQL?

databázi můžete přejmenovat pomocí následujícího příkazu, ale ujistěte se, že nejprve provedete zálohu

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;

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


Můžete to vytáhnout pomocí mysqldump. Háček:Data nemůžete odeslat, protože s odesláním dat mohou být spojeny náklady.

V tomto příkladu řekněme, že chcete přejmenovat mydb do ourdb

KROK 01:Vytvořte novou databázi

mysql> CREATE DATABASE ourdb;

KROK 02:Získejte schéma bez spouštěčů

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

KROK 03:Získejte spouštěče

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

KROK 04:Vygenerujte skript pro provedení INSERT ... SELECT napříč všemi tabulkami

POKUD EXISTUJÍ ZAHRANIČNÍ KLÍČOVÁ OMEZENÍ

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}

POKUD NEEXISTUJE ŽÁDNÁ ZAHRANIČNÍ KLÍČOVÁ OMEZENÍ

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}

Pokud neexistují žádná omezení cizího klíče, mělo by to jít rychle.

KROK 05:Zkombinujte soubory do jednoho skriptu

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

KROK 06:Zkontrolujte skript

vi -R /tmp/ETL.sql

nebo

less /tmp/ETL.sql

KROK 07:Spusťte skript

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

KROK 08:Ujistěte se, že jsou všechna data v cílové databázi

Můžete to udělat

Pokud by neexistovala žádná omezení cizích klíčů, mydb by měl být prázdný a ourdb by měl mít všechny tabulky.

Pokud existovala omezení cizího klíče, ujistěte se, že mydb a ourdb mít stejný počet tabulek a stejný počet řádků. Spuštěním

se ujistěte, že jsou přítomny všechny spouštěče
SELECT COUNT(1) trigger_count,table_schema
FROM information_schema.triggers
GROUP By table_schema;

KROK 09:Ruční odstranění staré databáze

mysql> DROP DATABASE mydb;

Pro jistotu jsem do skriptu nezahrnul vypuštění databáze. :-)

ZKUSTE TO!!!


Linux
  1. Jak změnit řazení databáze MySQL?

  2. Jak zkopírovat databázi MySQL

  3. Jak nainstalovat MySQL 5.7 na Amazon Linux

  1. Jak vytvořit databázi v MySQL pomocí MySQL Workbench

  2. Jak importovat exportní databázi v MYSQL MariaDB

  3. Jak změnit heslo root mysql

  1. Jak zálohovat a obnovit databázi MySQL

  2. Jak nakonfigurovat databázi MySQL Slave

  3. Jak změnit formát času na sekundy v ps -p?