我曾经有一个装有 MySQL 的 Linux 系统 (LMDE)。该系统对大多数数据库使用 innodb_file_per_table。(不确定版本,无论 LMDE 中的“最新版本”是什么)
我现在使用带有 MariaDB 的新系统(Manjaro/Arch)。
$ mysql --version
mysql Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1
旧系统有很多大型数据库,我真的不希望使用 mysqldump 来复制它们。我更希望从旧系统复制 /var/lib/mysql 文件夹。
这可能吗?
答案1
是的,这是可能的。(我在写这个问题的时候就想到了这一点)
- 在新的 Arch 系统中安装 MariaDB,验证它是否正常工作。
对 /etc/mysql/my.cnf 进行更改。例如 innodb_file_per_table。
(更多内容超出了这个问题的范围) sudo systemctl stop mysqld
。
(您想在两台服务器上都停止,但就我而言,另一台服务器已经关闭)- 重命名 /var/lib/mysql 文件夹,例如重命名为 /var/lib/_mysql。
- 从旧的 Debian(LMDE)系统复制旧的 /var/lib/mysql 文件夹。
- 将 /var/lib/mysql 中的所有内容的所有权恢复为 mysql:mysql:
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mysqld
。
->Job for mysqld.service failed. See "systemctl status mysqld.service" and "journalctl -xe" for details.
sudo systemctl status mysqld
。-
> 这表明服务正在运行,但有些事情出了问题。这就是 mysql_upgrade 的作用。mysql_upgrade -u root -p
笔记:- 这是旧系统中的mysql root密码!
- 由于数据库名称无效,我不得不从 /var/lib/mysql 中删除一个剩余文件夹。
- 文件 /var/lib/mysql/mysql_upgrade_info 需要可写。
- 该过程可能需要一段时间。
sudo systemctl restart mysqld
。
警告:显然您无法降级到较低的 MySQL 版本。我尝试将我的数据库迁移到 MySQL 5.5(或者更确切地说,相应的 MariaDB),但服务器无法启动。我不得不安装 MySQL 5.6。(我的 Linux 发行版上没有与 MySQL 5.6 对应的 MariaDB)。