前提条件
在开始之前,确保你有一个有sudo权限的用户和一个MySQL数据库服务器。
查找数据目录
使用root密码登录到MySQL服务器。$ sudo mysql -u root -p
下面的SQL显示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
启动数据库服务器。$ sudo systemctl start mysql
还原数据库
停止MySQL服务。$ sudo systemctl stop mysql
重命名当前的MySQL数据目录,此步骤保留当前状态的备份副本。$ sudo mv /var/lib/mysql /var/lib/mysql_old
创建新的MySQL数据目录。$ sudo mkdir /var/lib/mysql
恢复MySQL备份。$ sudo cp -R /var/mysql_backups/2020_07_13_backup/. /var/lib/mysql
将/var/lib/mysql的所有权更改为mysql用户。$ sudo chown -R mysql:mysql /var/lib/mysql
启动数据库服务器。$ sudo systemctl start mysql
测试备份
通过以root身份登录到MySQL服务器来测试备份。$ sudo mysql -u root -p
验证数据库架构是否正确。mysql> SHOW DATABASES;
将显示数据库,例如:+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
小结
在本指南中,你已经创建了MySQL数据库的物理备份,此方法非常适合大型数据库,并且在重新安装数据库服务器时恢复更容易。