我们都知道MySQL是ORACLE开发的开源RDBMS。

大多数CMS网站(例如wordpress,joomla…)都使用MySQL数据库作为后端。

Linux管理员应注意MySQL的备份和还原命令。

下面的示例向我们展示了如何使用mysqldump命令进行备份和还原MySQL数据库。

mysqldump是备份mysql数据库的有效方法之一。

它会创建一个*.sql扩展名为的备份文件,该文件可以轻松还原。



单数据库备份的语法

$ sudo mysqldump -u [username] -p [don't enter the password here] [databasename] > [backupfile.sql]


单数据库还原的语法

$ sudo mysql -u [username] -p [don't enter the password here] [databasename] < [backupfile.sql]


多数据库备份的语法

$ sudo mysqldump -u [username] -p [password] –databases [databasename1] [databasename2] > [backupfile.sql]


所有数据库备份的语法

$ sudo mysqldump -u [username] -p [password] –-alldatabases > [backupfile.sql]


用户名(UserName):数据库用户名
密码(Password):密码数据库
数据库名(DatabaseName):你的数据库的名称
backupfile.sql:备份文件名

 

示例:备份和还原

下面的示例向我们展示了备份和还原单个,多个或所有数据库的方式。
 

1)如何在Linux中备份单个MySQL / MariaDB数据库?

在此示例中,我们将备份testdbto testdb.sql文件。

$ sudo mysqldump -u root -p testdb > testdb.sql

 

2)如何在Linux中还原单个MySQL / MariaDB数据库?

在此示例中,我们testdb将从testdb.sql文件中还原数据库。

$ sudo mysql -u root -p testdb < testdb.sql

 

3)如何在Linux中备份多个MySQL / MariaDB数据库?

在这个例子中,我们要备份testdb1并testdb2以multidatabasebackup.sql文件。

$ sudo mysqldump -u root -p –databases testdb1 testdb2 > multidatabasebackup.sql

 

4)如何在Linux中还原多个MySQL / MariaDB数据库?

在这个例子中,我们要还原的数据库testdb1,并testdb2从multidatabasebackup.sql文件,因为multidatabasebackup.sql文件中有数据库备份两种。

$ sudo mysql -u root -p testdb1 testdb2 < multidatabasebackup.sql

 

5)如何从Linux中的完整数据库备份还原单个MySQL / MariaDB数据库?

在此示例中,我们将仅还原testdb1from multidatabasebackup.sql文件。

$ sudo mysql -u root -p testdb1 < multidatabasebackup.sql

 

6)如何从Linux中的完整数据库备份还原所有MySQL / MariaDB数据库?

在此示例中,我们将从alldatabases.sql文件中还原所有数据库。

$ sudo mysql -u root -p < alldatabases.sql

 

7)如何备份压缩格式的单个MySQL / MariaDB数据库?

在此示例中,我们将对testdbto testdb.sql.gz文件进行压缩备份。当数据库很大时,它将减少服务器上的磁盘空间利用率。

$ sudo mysqldump -u root -p testdb | gzip >testdb.sql.gz

 

8)如何在Linux中还原单个MySQL / MariaDB数据库的压缩格式?

在此示例中,我们testdb将从压缩testdb.sql.gz文件中还原数据库。

$ sudo gunzip < testdb.sql.gz | mysql -u root-p testdb

 

9)用于备份自动化的Shell脚本

下面的示例将自动备份testdb数据库。备份的数据库将以/backup/db/testdab19-09-2013.tar.gz五天的保留期存储到其中。

创建一个mysql_backup.sh在所需目录上命名的文件,并添加以下代码,文件权限应为755,才能执行该文件。就我而言,我已经在/opt/mysql_backup.sh目录下创建了一个文件。

以下是MySQL / MariaDB备份的Shell脚本。

# vi /opt/mysql_backup.sh

#!/bin/bash
date_format=`date +%d-%m-%Y`
mysqldump -u root testdb| gzip -9 > /backup/db/testdb-$date_format.sql.gz
find /backup/db/test* -mtime +5 -exec rm {} ;


设置文件的可执行权限mysql_backup.sh。

# chmod +x /opt/mysql_backup.sh


最后运行脚本以实现此目的。

# sh /opt/mysql_backup.sh

 

Cron作业计划

Cron作业将使我们的生活更加轻松,可以按计划的时间执行程序而不会失败。下面的cron作业计划每天下午6点运行。

0 18 * * * /opt/mysql_backup.sh