关于数据库备份,通常分为逻辑备份和物理备份两种。逻辑备份只生成一个备份文件,而物理备份包括所有数据库的文件和目录信息。以MySQL为例,MySQL的逻辑备份可以通过mysqldump工具实现,这篇帮助介绍MySQL物理备份的创建和还原方法。
创建备份
首先用MySQL的root密码登录数据库。
$ sudo mysql -u root -p
用下面这条命令获取MySQL的所在目录。
mysql> select @@datadir;
+-----------------+
| @@datadir |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
也可以直接执行下面这个命令,获取MySQL的所在目录。
$ sudo mysqld --verbose --help | grep ^datadir
datadir /var/lib/mysql/
创建物理备份之前,先停止MySQL数据库。
$ sudo systemctl stop mysql
创建存储MySQL物理备份的目录,以当前日期命名。
$ sudo mkdir -p /var/mysql_backups/2020_07_13_backup
用cp命令拷贝全部数据库文件到该目录中。
$ sudo cp -R /var/lib/mysql/. /var/mysql_backups/2020_07_13_backup
最后启动MySQL数据库。
$ sudo systemctl start mysql
以上是创建物理备份的过程,下面介绍用物理备份还原数据库。
还原备份
还是先停止MySQL数据库。
$ sudo systemctl stop mysql
重命名当前MySQL的所在目录,并创建一个新目录。
$ sudo mv /var/lib/mysql /var/lib/mysql_old
$ sudo mkdir /var/lib/mysql
把物理备份拷贝到新创建的目录中。
$ sudo cp -R /var/mysql_backups/2020_07_13_backup/. /var/lib/mysql
调整文件和目录的所有者权限。
$ sudo chown -R mysql:mysql /var/lib/mysql
启动MySQL数据库。
$ sudo systemctl start mysql
最后用root密码登录数据库,测试是否还原成功。
$ sudo mysql -u root -p
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
以上就是创建MySQL物理备份的操作方法。相比逻辑备份,物理备份更加适用于大型数据库,重装和恢复起来也比较方便。