Копировать/дублировать базу данных без использования mysqldump

Вы можете продублировать mysql-server таблицу без данных, запустив:

CREATE TABLE x LIKE y;

(см. документы mysql-if MySQL CREATE TABLE)

Вы можете написать сценарий, который mysql-if берет выходные данные SHOW TABLES из mysql-query одной базы данных и копирует mysql-server схему в другую. Вы должны mysqlsh иметь возможность ссылаться mysql-server на имена схем+таблиц, например:

CREATE TABLE x LIKE other_db.y;

Что mysqlclient касается данных, вы также mysqld можете сделать это в MySQL, но mysql это не обязательно быстро. После mysqldump того, как вы создали ссылки, вы mysql-table можете запустить следующее, чтобы my-sql скопировать данные:

INSERT INTO x SELECT * FROM other_db.y;

Если вы mysqld используете MyISAM, вам лучше mysqldump скопировать файлы таблицы; это mysqldump будет намного быстрее. Вы mysqld сможете сделать то же самое, если mysql-table используете INNODB с per table table spaces.

Если mysqlclient вы в конечном итоге сделаете mysqldump INSERT INTO SELECT, не забудьте временно turn off indexes с mysqld ALTER TABLE x DISABLE KEYS!

EDIT Maatkit также содержит несколько mysql-query скриптов, которые могут быть mysqlsh полезны для синхронизации mysql-table данных. Это может быть не mysql-if быстрее, но вы, вероятно, могли mysql-server бы запускать их сценарии mysql-query синхронизации с оперативными mysql-server данными без особой блокировки.

mysql

2022-09-23T17:58:51+00:00