572 Stimmen

Wie erstellt man ein Backup einer einzelnen Tabelle in einer MySQL-Datenbank?

Standardmäßig, mysqldump nimmt die Sicherung einer gesamten Datenbank vor. Ich muss eine einzelne Tabelle in MySQL sichern. Ist das möglich? Wie kann ich sie wiederherstellen?

9voto

Phoenix Punkte 1432

Sie können den folgenden Code verwenden:

  1. Nur für die Sicherung einer einzelnen Tabellenstruktur

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. Für eine einzelne Tabellenstruktur mit Daten

-

mysqldump <database name> <tablename> > <filename.sql>

Ich hoffe, es hilft.

8voto

Daniel Adenew Punkte 7235

Sie können auf einfache Weise ausgewählte Tabellen dumpen, indem Sie MYSQLWorkbench tool einzeln oder eine Gruppe von Tabellen in einem Dump und importieren Sie sie wie folgt: Sie können auch hinzufügen Host-Informationen wenn Sie es in Ihrer lokalen Umgebung ausführen, indem Sie -h IP.ADRESSE.NUMMER after-u benutzername

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql

0 Stimmen

Leider hat Mysql Workbench einige Escape-Probleme, die dazu führen können, dass ungültige Daten exportiert werden, was nutzlos ist...

6voto

Linda Martin Punkte 61

Sie können diesen Code verwenden:

Dieses Beispiel erstellt eine Sicherung der sugarcrm-Datenbank und gibt die Ausgabe in sugarcrm.sql aus

# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql

# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Die Datei sugarcrm.sql enthält die Befehle drop table, create table und insert für alle Tabellen in der Datenbank sugarcrm. Es folgt eine Teilausgabe von sugarcrm.sql, die die Dump-Informationen der Tabelle accounts_contacts zeigt:

--

-- Tabellenstruktur für Tabelle accounts_contacts

DROP TABLE IF EXISTS `accounts_contacts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts_contacts` (
`id` varchar(36) NOT NULL,
`contact_id` varchar(36) default NULL,
`account_id` varchar(36) default NULL,
`date_modified` datetime default NULL,
`deleted` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idx_account_contact` (`account_id`,`contact_id`),
KEY `idx_contid_del_accid` (`contact_id`,`deleted`,`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

--

3voto

JaY KuMaR Punkte 329

Verwenden Sie einfach mysqldump -u root database table oder bei Verwendung mit Passwort mysqldump -u root -p pass database table

2voto

MrPHP Punkte 884

Ich bin auf diese Frage gestoßen und wollte die Antworten der anderen mit unserem funktionierenden Beispiel ergänzen:

Dadurch wird das Schema in einer eigenen Datei gesichert, dann jede Datenbanktabelle in einer eigenen Datei.

Dank des Datumsformats können Sie das Programm so oft ausführen, wie es der Speicherplatz auf Ihrer Festplatte zulässt.

DATE=`date '+%Y-%m-%d-%H'`
BACKUP_DIR=backups/
DATABASE_NAME=database_name
mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1  --routines --triggers --single-transaction --no-data --databases ${DATABASE_NAME} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}--schema.sql.gz
for table in $(mysql  --user=fake --password=secure --host=10.0.0.1 -AN -e "SHOW TABLES FROM ${DATABASE_NAME};");
    do
    echo ""
    echo ""
    echo "mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --databases ${DATABASE_NAME} --tables ${table} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}-${table}.sql.gz"
    mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --databases ${DATABASE_NAME} --tables ${table} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}-${table}.sql.gz
done

Wir lassen dies als Bash-Skript stündlich laufen und haben tatsächlich stündliche Überprüfungen und sichern nur einige Tabellen während des Tages und dann alle Tabellen in der Nacht.

um etwas Platz auf den Laufwerken zu erhalten, führt das Skript dies auch aus, um Sicherungen zu entfernen, die älter als X Tage sind.

# HOW MANY DAYS SHOULD WE KEEP
DAYS_TO_KEEP=25
DAYSAGO=$(date --date="${DAYS_TO_KEEP} days ago" +"%Y-%m-%d-%H")
echo $DAYSAGO
rm -Rf ${BACKUP_DIR}${DAYSAGO}-*
echo "rm -Rf ${BACKUP_DIR}${DAYSAGO}-*"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X