MySQL和MariaDB包含mysqldump实用程序,以简化创建数据库或数据库系统的备份的过程。使用mysqldump
创建逻辑备份。仅当您的数据库进程可访问且正在运行时,才可以使用此工具。
如果由于某种原因无法访问数据库,则可以创建一个备份导入,它是包含数据的文件系统结构的副本。
您将需要有效的MySQL或MariaDB安装,以及一个数据库用户来运行备份。
您将需要对系统的root访问权限,或者具有sudo
特权的用户帐户。
该mysqldump
命令的一般语法为:
mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
mysqldump
在开始备份过程之前提示输入密码。-$(date +%F)
在文件名中添加时间戳。用例示例包括:
创建整个数据库管理系统(DBMS)的备份:
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
备份特定的数据库。替换db1
为要备份的数据库的名称:
mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
从任何数据库备份一个表。在以下示例中,table1
从数据库导出db1
:
mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
以下是mysqldump
上面使用的命令选项的细分:
--single-transaction
:在从服务器中转储数据之前,发出BEGIN SQL语句。--quick
:强制逐行转储表。这为具有较少RAM和/或大型数据库的系统(在其中将表存储在内存中可能会带来问题)提供了更高的安全性。--lock-tables=false
:请勿为备份会话锁定表。可以添加条目/etc/crontab
以定期计划数据库备份。
创建一个文件来保存将执行备份的MySQL根用户的登录凭据。注意,此文件存储在其主目录中的系统用户可以与任何MySQL用户无关。
/home/example_user/.mylogin.cnf
[client]
user = root
password = MySQL root user's password
限制凭据文件的权限:
chmod 600 /home/example_user/.mylogin.cnf
创建cron作业文件。下面是一个示例cron作业,每天凌晨1点备份整个数据库管理系统:
/etc/cron.daily/mysqldump
0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql
恢复命令的一般语法为:
mysql -u [username] -p [databaseName] < [filename].sql
还原整个DBMS备份。系统将提示您输入MySQL根用户的密码:
这将覆盖MySQL数据库系统中的所有当前数据。
mysql -u root -p
还原单个数据库转储。一个空的或旧的目标数据库必须已经存在才能将数据导入其中,并且您正在运行命令的MySQL用户必须对该数据库具有写权限:
mysql -u [username] -p db1
还原单个表,您必须已准备好要接收数据的目标数据库:
mysql -u dbadmin -p db1