GNU/Linux >> Belajar Linux >  >> Linux

Amazon:Bagaimana cara mengubah nama database di Amazon RDS MySQL?

Anda dapat mengganti nama database menggunakan perintah berikut tetapi pastikan untuk mengambil cadangan terlebih dahulu

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;

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


Anda dapat melakukan ini menggunakan mysqldump. Di sini tangkapannya:Anda tidak dapat mengirimkan data karena mungkin ada biaya yang terkait dengan pengiriman data.

Untuk contoh ini, katakanlah Anda ingin mengganti nama mydb ke ourdb

LANGKAH 01 :Buat database baru

mysql> CREATE DATABASE ourdb;

LANGKAH 02 :Dapatkan skema tanpa pemicu

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

LANGKAH 03 :Dapatkan pemicunya

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

LANGKAH 04 :Buat skrip untuk melakukan INSERT ... SELECT di semua tabel

JIKA ADA KENDALA KUNCI ASING

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}

JIKA TIDAK ADA KENDALA KUNCI ASING

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}

Jika tidak ada batasan kunci asing, ini akan berjalan cepat.

LANGKAH 05 :Gabungkan file menjadi satu skrip

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

LANGKAH 06 :Tinjau skrip

vi -R /tmp/ETL.sql

atau

less /tmp/ETL.sql

LANGKAH 07 :Jalankan skrip

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

LANGKAH 08 :Pastikan semua data ada di database target

Anda bisa melakukannya

Jika tidak ada batasan kunci asing, mydb harus kosong dan ourdb harus memiliki semua tabel.

Jika ada batasan kunci asing, pastikan mydb dan ourdb memiliki jumlah tabel yang sama dan jumlah baris yang sama. Pastikan semua pemicu ada dengan menjalankan

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

LANGKAH 09 :Hapus Database Lama Secara Manual

mysql> DROP DATABASE mydb;

Saya tidak memasukkan database dalam skrip, untuk berjaga-jaga. :-)

COBALAH!!!


Linux
  1. Bagaimana Mengubah Susunan Database MySQL?

  2. Cara Membuat Database di MySQL dengan MySQL Workbench

  3. Cara Menginstal MySQL 5.7 di Amazon Linux

  1. Cara mengonfigurasi Database Budak MySQL

  2. Cara mengubah kata sandi root mysql

  3. Bagaimana cara mengubah format waktu menjadi detik di ps -p?

  1. Cara Mencadangkan &Memulihkan Basis Data MySQL

  2. Cara menyalin database MySQL

  3. Cara Mengimpor Database Ekspor di MYSQL MariaDB