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
Remarques :Ce tutoriel ne couvre que les options les plus courantes utilisées avec
Sauvegarde locale
Sauvegarde - Cette section explique comment effectuer une sauvegarde locale dans un fichier en exportant une ou plusieurs bases de données.
Autorisations -
- 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
# 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
# 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.