首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果没有安装,我可以直接将安装的mysql从ubuntu复制到centos7吗?

如果没有安装,我可以直接将安装的mysql从ubuntu复制到centos7吗?
EN

Database Administration用户
提问于 2021-05-19 02:01:27
回答 1查看 184关注 0票数 0

我试图将已安装的MySQL从Ubuntu复制到Centos7,因为我不再希望在Centos7上安装。这看起来是可行的,但我不确定是否有任何潜在的问题,我不知道。

以前有人试过这个手术吗?

尝试这种复制方式的目的是编写一个一键安装sh脚本,其中包括一些服务器软件,如JDK、MySQL、nginx、elasticsearch和一些Java代码。处理现有的MySQL显然是完成MySQL安装脚本的最简单方法,因为我需要以传统的方式安装MySQL并创建帐户和DB。

将MySQL从Ubuntu直接复制到Centos7的步骤如下:

  1. 在MySQL上创建用户/组Centos7
  2. 将MySQL安装目录从ubuntu复制到centos7上的同一个目录,例如/usr/local/mysql
  3. my.cnf文件从Ubuntu复制到Centos7上的/etc
  4. mysql.server复制到/etc/init.d/mysql
  5. mysql.serverchown授予/usr/local/mysql的所有者mysql:mysql的权限
  6. 手动启动/停止MySQL服务,看起来很好

顺便说一句,我的Centos7机器是新安装的,这意味着我没有在它上安装任何其他软件,我的Centos7无法上网,所以我不能通过aptyum方式安装MySQL。我需要先从网站下载安装包,然后我可以通过MySQL通过rpmtar的传统方式安装。

我想说的是,无论是aptyumrpm还是tar方式,在我的一次单击安装脚本中编写这些步骤都很复杂,所以我选择直接复制,但我对此有些担心,因为我不知道是否存在一些潜在的问题。

EN

回答 1

Database Administration用户

发布于 2021-05-19 02:49:30

答案很简单:不。一个更现实的答案并不容易。如果你想以“错误的方式”做这件事,你会这样做:

  1. 在Ubuntu上安装与在MySQL上运行的完全相同的版本的CentOS
  2. /var/lib/mysql目录的全部内容从CentOS复制到Ubuntu
  3. 修改所有配置文件,以确保它们使用的是Ubuntu的目录路径,而不是CentOS使用的路径
  4. 交叉你的手指
  5. 启动MySQL,希望一切都能神奇地运作

这是一个灾难的配方,因为它几乎总是导致更多的工作,而不是做“更好的方式”。下面是如何将MySQL数据从一台服务器迁移到另一台服务器:

注意:以下所有命令都在Ubuntu和MySQL上工作。

  1. 在目标服务器上安装MySQL : sudo apt更新sudo apt安装mysql-server
  2. 配置MySQL: sudo mysql_secure_installation您将通过MySQL的初步设置,包括为root帐户设置密码的选项。请注意,即使您已经为root MySQL用户设置了密码,但在连接到MySQL shell时,帐户并不配置为使用密码进行身份验证。稍后再谈这个。
  3. 创建您的MySQL管理帐户: mysql>创建用户'huangxy'@'localhost‘通过’superSecretPassword!123‘标识为mysql_native_password;如果要远程连接到MySQL,则需要用%替换localhost。注意:不要在所有的管理活动中使用root。如果您有一个特定于您的帐户,即使它可以完全访问整个系统,也会更好。只有在绝对必要时,例如在配置复制或修复损坏的数据库时,才应该使用root
  4. 让您的帐户完全访问: mysql>授予所有的*.*到'huangxy'@'localhost‘与格兰特选项;
  5. 确保写入权限: mysql>刷新权限;
  6. 出口MySQL: mysql>出口;

这样,现在您可以在您的MySQL服务器上创建CentOS数据库(S)的备份。为此,您需要两个连接:一个连接到MySQL,另一个连接到可以使用mysqldump的shell。

  1. 锁定MySQL,防止任何更新:使用读锁的mysql>刷新表;mysql>设置全局read_only = ON;这样做是为了确保不会干扰数据库导出。
  2. 将数据库转储到磁盘上: mysqldump -u root -p --例程--触发器--所有数据库> full_backup.sql --如果CentOS上的MySQL版本为8.0.2或更高,您也可以通过权限迁移您的用户: mysqldump -u root mysql用户--no-create-info > user_backup.sql Note:如果您使用的MySQL版本低于8.0.2,则不能使用此命令迁移用户。相反,需要在新服务器上手动创建它们。这是因为多年来mysql.user表经历了许多模式更改。
  3. 如果用户仍然需要对前一个系统的访问,那么现在可以解锁数据库: mysql> SET全局read_only = OFF;mysql>解锁表;请务必通知人们,旧系统中的任何数据更改都不会反映在新系统中。
  4. 将数据库转储复制到新服务器
  5. 导入数据库: sudo < full_backup.sql备注:您不需要在这里指定-u或输入密码,因为这意味着在Ubuntu上具有sudo访问权限的人具有完全权限,因此没有必要为mysql设置另一个密码。
  6. 如果适用,导入用户帐户: sudo < user_backup.sql备注:因为--no-create-info选项是在将user数据写入磁盘时使用的,因此没有不必要地删除表的风险。如果有任何架构差异,将报告一个错误,您需要手动解决这些问题。
  7. 连接到MySQL并检查数据库是否完好无损。
  8. 重新启动MySQL只是为了清除缓冲区:只要导入过程没有问题,成功的重启就会让你知道你很好。

下一步.

关于MySQL用于其设置的各种配置文件,没有人说过什么,这是因为我不可能对该做什么提供一个适当全面的大纲。我对您的服务器硬件、数据库或系统的使用情况一无所知。我能推荐的是:

  1. 调整硬件的基本InnoDB设置
  2. 监视系统并根据需要进行增量更改

我不建议将.cnf文件从CentOS复制/粘贴到Ubuntu,因为这不太理想。

虽然这个答案很长,而且看起来很复杂,但在我的经验中,它通常是从一个服务器和/或操作系统转移到另一个服务器和/或操作系统的最可靠的方法。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/291814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档