AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1308941
Accepted
nightwatch
nightwatch
Asked: 2021-01-19 01:48:03 +0800 CST2021-01-19 01:48:03 +0800 CST 2021-01-19 01:48:03 +0800 CST

将 Ubuntu 20.04 LAMP 从 MySQL 迁移到 MariaDB

  • 772

状态
我目前在 Ubuntu 20.04 上运行 LAMP 服务器,它有一个 MySQL 服务器,其中包含多个 Drupal 和 Wordpress 数据库,以及一个 PHPMYADMIN 数据库。

请求
是否有一些超级聪明的 MySQL 数据库专家愿意发布关于如何将工作数据库从 LAMP (MySQL-Server) 迁移到 LAMP (MariaDB-Server) 的“权威指南”,包含从

1.)“步骤 1”=导出所需的工作数据库,
2.)完全删除 MySQL 服务器,# 如果有必要,我知道 Mariadb 是一个插件
3.)安装到 MariaDB 服务器,
4.)和“最后一步" = 导入所需的工作数据库?

我在网上搜索了几天,可以在网上找到“零碎”的教程。我认为 MariaDB 获得了市场份额,这样的教程对 Ubuntu 18.04 / 20.04 用户来说很有价值。如果这样的指南已经存在,请转发:-)

server
  • 1 1 个回答
  • 3722 Views

1 个回答

  • Voted
  1. Best Answer
    user1091774
    2021-01-19T02:04:09+08:002021-01-19T02:04:09+08:00

    由于每台服务器都不同,因此很难针对每种情况编写“权威指南”。必须考虑版本以及数据库引擎等。也就是说,基本情况如下所示:

    1 - 导出所有数据库(过程和触发器完好无损)

    首先——也是最重要的事情——是您首先导出所有数据库。不过,有些你不需要继续前进,所以让我们只导出你关心的那些:

    mysqldump -u {user} -p --events --routines --triggers wordpress > wordpress-export.sql
    mysqldump -u {user} -p --events --routines --triggers drupal > drupal-export.sql
    mysqldump -u {user} -p --events --routines --triggers phpmyadmin > phpmyadmin-export.sql
    

    请务必更改{user}为数据库中具有最高权限的用户帐户,否则可能导出不完整。确保还将数据库的名称更改为它们的正确名称,并将导出名称更改为唯一的名称。

    我不建议在--all-databases此处使用该标志,因为这将包含三个特定于 MySQL 的表,不应针对您即将创建的 MariaDB 安装进行安装。

    2 — 准备数据库帐户列表

    构建新数据库时,确保所有重要的用户帐户都存在非常重要。我们可以查询数据库以查看用户帐户名称是什么,更重要的是,我们可以查询数据库以构建CREATE我们稍后在本指南第 5 步中需要的语句。

    登录到您的 MySQL 安装并运行此查询:

    SELECT CONCAT('CREATE USER ''', `User`, '''@''', `Host`, ''' IDENTIFIED BY ''CorrectHorseBatteryStaple'';') as `username`
      FROM mysql.user
     WHERE `User` NOT LIKE 'mysql.%' and `User` NOT LIKE 'slave%'
       and `User` NOT IN ('root', 'debian-sys-maint')
     ORDER BY `username`;
    

    这将输出如下内容:

    CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'CorrectHorseBatteryStaple';
    CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'CorrectHorseBatteryStaple';
    CREATE USER 'admin'@'%' IDENTIFIED BY 'CorrectHorseBatteryStaple';
    

    将此列表保存到某个文件中,因为您很快就会需要它。

    3 — 从服务器中彻底消除 MySQL

    如果您 100% 确定您拥有 MySQL 数据库所需的一切,那么现在是时候从服务器中清除它了。

    1. 确保 MySQL 没有运行:
      sudo systemctl stop mysql
    2. 完全删除 MySQL:
    sudo apt purge mysql-server \ 
                   mysql-client \ 
                   mysql-common \ 
                   mysql-server-core-* \ 
                   mysql-client-core-*
    
    1. 消除 MySQL 配置、数据和日志目录:
    sudo rm -Rf /etc/mysql /var/lib/mysql /var/log/mysql
    
    1. 确保一切都是洁净的apt:
    sudo apt autoremove
    sudo apt autoclean
    

    4 — 安装 MariaDB 服务器

    接下来是 MariaDB 安装。我不会逐步介绍您可能想要安装的所有不同配置选项,但会指出一些可能会使您的生活更轻松的几个。首先,让我们安装它:

    sudo apt install mariadb-server
    sudo mysql_secure_installation
    

    虽然 MariaDB已安装在您的服务器上,但您将使用的大多数工具都将针对 MySQL。这就是为什么第二个命令mysql_secure_installation不是更恰当命名的原因。

    当你跑步时,mysql_secure_installation你会被问到这些问题:

    1. Enter current password for root (enter for none):⇠ 敲Enter键
    2. Set root password? [Y/n]⇠ 选择Y
    3. Enter password⇠ 输入一个好的,然后在要求确认时再次输入。

    现在,由于您无法在root没有的情况下登录sudo,您可能希望创建具有您可能需要的所有管理员权限的帐户。

    1. 登录 MariaDB:
      sudo mysql -u root -p
    2. 输入您之前定义的密码。
    3. 创建您的帐户:
      CREATE USER 'admin'@'localhost' IDENTIFIED BY 'CorrectHorseBatteryStaple';
      注意:请务必更改admin为您希望为您的帐户命名的任何名称,以及CorrectHorseBatteryStaple您将记住的鲜为人知的密码。
    4. 授予所有权限以执行...一切:
      GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
    5. 刷新特权:
      FLUSH PRIVILEGES;⇠非常重要

    5 - 重新创建用户帐户

    使用您之前准备的列表,重新创建 WordPress、Drupal 和(可能)phpMyAdmin 所需的各种用户帐户。

    CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'CorrectHorseBatteryStaple';
    CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'CorrectHorseBatteryStaple';
    

    注意:请务必将用户名和密码设置为您真正想要的。

    6 — 重新创建你的数据库

    对于您需要的每个数据库,在 MariaDB 中运行它:

    CREATE DATABASE wordpress CHARACTER SET = utf8 COLLATE = utf8_general_ci;
    

    当然,更改wordpress为您要创建的数据库的实际名称。

    7 — 将所有数据库导入新数据库

    mysql -u {user} -p wordpress < wordpress-export.sql
    

    对每个导出的数据库执行此操作,将数据库名称和 SQL 文件替换为正确的名称和 SQL 文件。如果您犯了错误并将文件导入错误的数据库,请不要担心,您可以像这样“修复”它:

    1. 连接到 MariaDB:
      mysql -u admin -p
    2. 输入您的密码
    3. 删除您意外导入的数据库:
      DROP DATABASE whoopsie;
    4. 重新创建数据库:
      CREATE DATABASE whoopsie CHARACTER SET = utf8 COLLATE = utf8_general_ci;
    5. 重新导入正确的文件。

    现在我们可以为之前创建的帐户设置权限:

    GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
    

    同样,为每个帐户执行此操作,确保他们可以访问正确的数据库。完成后,刷新权限以确保它们处于活动状态:

    FLUSH PRIVILEGES;
    

    现在,在这个阶段,您可以仔细检查所有网站的数据库名称、帐户名称和密码是否正确。如果一切正常,请重新启动您的 Web 服务器并进行测试。

    更重要的注意事项:

    我会推荐一件事,预先测试。我已经看到很多 MySQL⇢MariaDB 迁移横盘整理,然后人们以疯狂的速度打电话给我来解决问题。测试,测试,测试。MySQL 中的某些东西在 MariaDB 中不能透明地工作。您不希望在迁移过程中发现表需要更改排序规则或导入文件损坏。

    如果您有使用虚拟机的经验,那么这些是测试迁移的理想选择。

    • 7

相关问题

  • 使用 dpkg 手动安装软件包是否会阻止未来的升级路径?

  • 如何从命令行刻录双层 dvd iso

  • 如果在服务器机器上运行 Ubuntu 桌面版,性能损失是多少?

  • 将桌面版剥离为服务器版的最简单方法是什么?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve