Клон базы данных MySQL - PullRequest
       13

Клон базы данных MySQL

45 голосов
/ 05 апреля 2011

У меня есть база данных на сервере с 120 таблицами.

Я хочу клонировать всю базу данных с новым именем базы данных и скопированными данными.

Существует ли эффективный способ сделать это

Ответы [ 6 ]

94 голосов
/ 05 апреля 2011
$ mysqldump yourFirstDatabase -u user -ppassword > yourDatabase.sql
$ mysql yourSecondDatabase -u user -ppassword < yourDatabase.sql
28 голосов
/ 05 апреля 2011
mysqldump -u <user> --password=<password> <DATABASE_NAME> | mysql -u <user> --password=<password> -h <hostname> <DATABASE_NAME_NEW>
11 голосов
/ 21 мая 2015

Как принятый ответ, но без .sql файлов:

mysqldump sourcedb -u <USERNAME> -p<PASS> | mysql destdb -u <USERNAME> -p<PASS>
5 голосов
/ 28 января 2014

Если вы используете phpMyAdmin

  1. Выберите базу данных, которую вы хотите скопировать (нажав на базу данных на главном экране phpMyAdmin).
  2. Войдя в базу данных, выберитеВкладка «Операции».
  3. Прокрутите страницу вниз до раздела «Копировать базу данных в:»
  4. Введите имя новой базы данных.
  5. Выберите «Структура и данные»копировать всеКроме того, вы можете выбрать «Структура только», если вам нужны столбцы, но не данные.
  6. Установите флажок «СОЗДАТЬ БАЗУ ДАННЫХ перед копированием», чтобы создать новую базу данных.
  7. Установите флажок »Добавьте значение AUTO_INCREMENT. "
  8. Нажмите кнопку" Перейти ", чтобы продолжить.
3 голосов
/ 30 октября 2014

Существует инструмент mysqldbcopy из пакета утилит MySQLhttp://dev.mysql.com/doc/mysql-utilities/1.3/en/mysqldbcopy.html

0 голосов
/ 27 декабря 2016
$newdb = (date('Y')-1);
$mysqli->query("DROP DATABASE `".$newdb."`;");
$mysqli->query("CREATE DATABASE `".$newdb."`;");

$query = "
SELECT
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA LIKE 'rds'
";
$result = $mysqli->query($query)->fetch_all(MYSQLI_ASSOC);
foreach($result as $val) {
    echo $val['TABLE_NAME'].PHP_EOL;
    $mysqli->query("CREATE TABLE `".$newdb."`.`".$val['TABLE_NAME']."` LIKE rds.`".$val['TABLE_NAME']."`");
    $mysqli->query("INSERT `".$newdb."`.`".$val['TABLE_NAME']."` SELECT * FROM rds.`".$val['TABLE_NAME']."`");
}
...