mysql, Verlagerung einzelner Datenbanken vs. gesamtes Datenverzeichnis

mysql, Verlagerung einzelner Datenbanken vs. gesamtes Datenverzeichnis

Ich muss MySQL-Kundendatenbanken aus folgenden Gründen auf eine andere Festplatte verschieben:

 1. Separation of user data from system files
 2. Ease of backing up system and user data separately
 3. Ease of upgrading the system

Die folgenden Artikel waren hilfreich:

  [how-to-move-mysql-datadir-to-another-drive][1]
  [move-a-mysql-database-to-another-location][2]

Beim Ausführen auf einem Ubuntu-18-System scheint die Variable innodb_file_per_table standardmäßig festgelegt zu sein:

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_%';
...
| innodb_file_per_table                    | ON 
...

(Gleiche Ergebnisse ohne GLOBAL)

Ich kann nicht findenbeliebigVerweis auf innodb_file_per_table in allen Konfigurationsdateien; die einzige Datei mit viel Inhalt ist

  /etc/mysql/mysql.conf.d/mysqld.cnf

Ich mache mir Sorgen darüber, was noch in den Dateien gespeichert ist

  /var/lib/mysql/ibdata1
                /ib_logfileN

Mir ist aufgefallen, dass allein der Zugriff auf eine Datenbank eine Aktualisierung dieser bewirkt.

Meine Fragen sind:

  1. Wenn ich nur die Kundendatenbanken verschiebe (auf eine separate Festplatte) und die Systemfestplatte verloren geht und von Grund auf neu erstellt werden muss, geht dann etwas verloren?

  2. Ist es besser, alle Datenbanken, einschließlich (mysql, performance_schema und sys), auf eine separate Festplatte zu verschieben?

  3. Ist es besser, das gesamte Datenverzeichnis auf eine separate Festplatte zu verschieben und über die Variable „datadir“ in /etc/mysql/mysql.conf.d/mysqld.cnf darauf zu verweisen?

  4. Was sind die Folgen vonnichtOption 3 verwenden, wenn die Systemfestplatte verloren gegangen ist?

Antwort1

Am besten wäre es, alle MySQL-Tabellen auf eine andere Festplatte zu verschieben. Jeder Versuch, „Kunden“ aufzuteilen, würde die Komplexität erhöhen und Ihre Ziele erschweren. (Wenn dies erforderlich wird, können wir das weiter besprechen.)

Im Wesentlichen bleiben bei einem solchen Verschieben nur die Konfigurationsdateien übrig. Sie haben erwähnt /etc/mysql/mysql.conf.d/mysqld.cnf, dass dort möglicherweise noch andere Konfigurationsdateien vorhanden sind.

An einer anderen Stelle befindet sich ein größeres Verzeichnis, das eine Reihe von Dateien sowie Unterverzeichnisse enthält, die den von Ihnen erstellten „Datenbanken“ entsprechen. Ich würde einfach den gesamten Baum verschieben. Wenn Sie ein Linux-basiertes Betriebssystem verwenden, verwenden Sie einen symbolischen Link vom alten zum neuen Speicherort. Es sind keine expliziten Konfigurationsänderungen erforderlich.

Wenn dann eine der Festplatten abstürzt, können Sie nicht auf die Daten zugreifen. Ich möchte damit sagen, dass Sie durch das Herumspielen mit Dateien und Verzeichnissen nicht unbedingt der „Sicherheit“ näher kommen.

Konzentrieren Sie sich stattdessen auf Backups. Und/oder „Replikation“. Letzteres erfordert eine zusätzlicheServerund stellt eine vollständige Kopie der Daten bereit. Wenn dann einer der Server abstürzt, haben Sie nichts verloren.

LVM ist eine weitere Backup-Technik; sie hat den Vorteil, dass sie eine Festplatte für die Datenbank hat. Das führt aber zu einer Menge Komplexität.

Ich schlage vor, dass Sie noch mehr lesen und unvoreingenommen bleiben. Sie werden viel finden, was genau Ihren Vorstellungen entspricht.

verwandte Informationen