Mysql
 sql >> Base de données >  >> RDS >> Mysql

Exporter la base de données MySQL ou MariaDB

La sauvegarde régulière de la base de données est l'une des étapes cruciales après la mise en ligne du projet. La fréquence de sauvegarde peut être une fois par jour ou par semaine. La sauvegarde quotidienne est préférée pour les applications dans lesquelles les changements de base de données sont plus fréquents. Dans le cas de bases de données à haute disponibilité, une configuration de cluster appropriée doit être envisagée au lieu d'une mise à l'échelle verticale. Ce tutoriel explique l'utilisation de mysqldump commande pour effectuer la sauvegarde de la base de données. La même commande peut être automatisée pour effectuer des sauvegardes planifiées.

Remarques  :Ce tutoriel ne couvre que les options les plus courantes utilisées avec mysqldump commande. Vous pouvez également vous référer à la documentation officielle pour explorer toutes les options possibles. Les mêmes commandes peuvent être utilisées pour effectuer la sauvegarde des serveurs de base de données MySQL et MariaDB.

Sauvegarde locale

Sauvegarde - Cette section explique comment effectuer une sauvegarde locale dans un fichier en exportant une ou plusieurs bases de données.

Autorisations - mysqldump nécessite les privilèges énumérés ci-dessous pour exporter la base de données. Les privilèges appropriés doivent être attribués au compte utilisateur utilisé pour exporter la base de données.

  • SELECT - pour vider les tables
  • SHOW VIEW - pour vider les vues
  • TRIGGER - pour vider les déclencheurs
  • VERROUILLER LES TABLES - au cas où l'option --single-transaction n'est pas utilisée

Commande - Ci-dessous est mentionné l'utilisation de mysqldump commande pour effectuer une sauvegarde locale pour les systèmes Windows et Linux, y compris Ubuntu. Les triples points signifient que plusieurs valeurs peuvent être fournies.

# Regular command - Usage - Windows, Linux
mysqldump [options] db_name [tbl_name ...] > <file path>
mysqldump [options] --databases db_name ... > <file path>
mysqldump [options] --all-databases > <file path>

Les exemples d'utilisation de la commande régulière sont mentionnés ci-dessous. Ces exemples de commandes utilisent l'utilisateur enterprise effectuer des sauvegardes de la base de données entreprise . Il n'est pas nécessaire de spécifier l'utilisateur et le mot de passe si le compte utilisateur utilise auth_socket algorithme pour se connecter au serveur MySQL. L'utilisateur du système peut accéder directement à la base de données. Vous pouvez consulter Comment utiliser un mot de passe natif avec MySQL 5.7 et Comment installer MySQL 8 sur Ubuntu pour en savoir plus sur les algorithmes de mot de passe.

Remarques :Il n'est pas nécessaire d'utiliser l'option -p, dans le cas où aucun mot de passe n'est attribué à l'utilisateur.

Vous trouverez ci-dessous des exemples de sauvegarde d'une seule base de données avec nom d'utilisateur, hôte et port. Le mot de passe ne doit pas être fourni avec ces commandes pour des raisons de sécurité. Vous pouvez spécifier le mot de passe pour mysqldump dans le fichier de configuration qui est considéré comme une option sécurisée pour cron emplois. Une autre option consiste à utiliser la commande cat pour utiliser un mot de passe crypté (similaire à la façon dont Plesk utilise) comme indiqué dans les exemples. Le système demandera un mot de passe au cas où il ne serait pas fourni dans la commande. Ces commandes peuvent être utilisées pour exporter la base de données entière ou une ou plusieurs tables.

# All tables - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise > enterprise.sql

# All tables - with username, with password - insecure
mysqldump -u enterprise -p'mypwd' enterprise > enterprise.sql

# All tables - with username, with password - Plesk way
mysqldump -u enterprise -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql

# All tables - with host, with port, with username, without password - prompts for password
mysqldump -h localhost -p 3306 -u enterprise -p enterprise > enterprise.sql

# Single table(user) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise [user] > enterprise.sql

# Multiple tables(user, profile) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise user profile > enterprise.sql

Vous trouverez ci-dessous des exemples de sauvegarde de plusieurs bases de données avec nom d'utilisateur, hôte et port.

# Multiple databases - with username, without password - prompts for password
mysqldump -u enterprise -p --databases enterprise vblog mshop > mydbs.sql

# Multiple databases - with username, with password
mysqldump -u enterprise -p'mypwd' --databases enterprise vblog mshop > mydbs.sql

Ci-dessous est mentionné l'exemple pour sauvegarder toutes les bases de données avec nom d'utilisateur, hôte et port.

# All databases - with username, without password - prompts for password
mysqldump -u enterprise -p --all-databases > mydbs.sql

# All databases - with username, with password
mysqldump -u enterprise -p'mypwd' --all-databases > mydbs.sql

Les utilisateurs de PowerShell sous Windows auront besoin d'une commande différente comme mentionné ci-dessous.

# PowerShell on Windows
shell> mysqldump [options] db_name [tbl_name ...] --result-file=<file path>
shell> mysqldump [options] --databases db_name ... --result-file=<file path>
shell> mysqldump [options] --all-databases --result-file=<file path>

# Example
shell> mysqldump -u enterprise -p enterprise --result-file=mydump.sql

Les commandes mentionnées ci-dessus exporteront la base de données et les tables sélectionnées vers l'emplacement de fichier spécifié dans la commande.

Sauvegarde de la base de données

Cette section explique comment transférer la sauvegarde de la base de données vers une autre base de données utilisée à des fins de sauvegarde à l'aide de Shell Pipes. Nous pouvons soit exporter la base de données vers le fichier local, puis utiliser ce fichier pour importer vers une autre base de données, soit exporter directement vers une autre base de données à l'aide de shell pipes.

La commande mentionnée ci-dessous peut être utilisée pour exporter la base de données directement vers une autre base de données. Assurez-vous également que vous avez accès aux deux serveurs avant d'exécuter la commande.

# Export database to another database - Same server
mysqldump -u enterprise -p enterprise | mysql enterprise_backup

# Export database to another database - Different server
mysqldump -u enterprise -p enterprise | mysql -h host.example.com -p 3306 enterprise

C'est ainsi que nous pouvons exporter ou sauvegarder une base de données.