我想将 MySQL/MariaDB 数据库从我用于开发的本地服务器迁移到在“生产”中实际使用它的服务器。
我是新手,所以请多多包涵。我寻求帮助是因为我甚至不知道在哪里/在哪里寻找我需要的东西。
总的来说,这个数据库以及整个“项目”都非常简单,基本上用于教育目的。该数据库只有一个表,只有用户(不是 root)才能访问它。迁移到远程服务器后,我计划通过 phpMyAdmin 访问它(主要用于监控),这将只允许 localhost(服务器的本地主机)访问,因此我将通过将 ssh 流量重定向到我的本地主机来实现这一点。
我的本地机器和服务器都在 /var/lib/mysql 下运行 MariaDB。我的问题是:这是否像将本地数据库目录安全地复制到服务器上的相应目录一样简单?如果不是,我该怎么做?
注意:我只需要复制一个表或数据库。
注意:我正在运行不同的版本。
谢谢你的耐心。
答案1
如果两台机器上的 MariaDB 版本相同,则复制整个目录将会有效。
至于“安全复制”,这scp
是相当安全的。 rsync
可能有内置方法。或者组合应该有效。
这是不是通过摆弄文件,只移动一个表或一个数据库是不切实际的。相反,您必须使用某种形式的“转储”(mysqldump
,等等)来复制所需的表:
source$ mysqldump ... | scp (from stdin to host "dest", file "dump.sql")
dest$ mysql < dump.sql
如果它很大,你可以将拉链和解压件扔进管道。
完整复制应在mysqld
非运行状态下进行。当然,“转储”方法要求程序处于运行状态。
转储方法实际上避免了版本不同导致的所有问题。
答案2
这不仅仅是只需 rsync 即可。
除非您有充分的理由,否则不要触碰中的二进制文件/var/lib
。MySQL 努力保持二进制兼容性和必要的更新尽可能有弹性,因此使用相同的版本或升级当然是可能的。
但如果你能读懂 SQL,那么现在正是开始验证你到底在移动什么,因此请使用一种使该步骤变得简单的方法。创建一个逻辑备份mysqldump
在源机器中使用,审查该文件包含剩余内容或错误内容,以及恢复在目标机器上。