【问题标题】:MySQL - Partition DB tables into different EBS volumes in Amazon EC2 instanceMySQL - 将数据库表分区到 Amazon EC2 实例中的不同 EBS 卷中
【发布时间】:2012-03-28 22:09:30
【问题描述】:

我有一个 Amazon EC2 服务器实例,它附加了五个 EBS 卷

  1. ebsvol1
  2. ebsvol2
  3. ebsvol3
  4. ebsvol4
  5. ebsvol5

在配置此服务器时,我需要安装 MySQL 服务器并设置我的数据库。在这里,我需要将几个表挂载到一个 EBS 卷(比如 ebsvol1)和其他表到另一个卷(比如 ebsvol2)。

我是这个亚马逊环境的初学者。请指导我如何进行。

【问题讨论】:

  • 我认为mysql不支持。
  • 为什么要将每个表放在不同的卷上?
  • @Omry :当用户数增加时,少数表上的数据会大幅增长。将表格分散到不同的卷中很有趣。
  • @Omry :将表分散到不同的卷中以提高 IO 性能和其他一切。
  • 扩大规模和性能的正确方法是使用下面有多个卷的 RAID 配置 - 不要根据表进行拆分。

标签: mysql amazon-ec2 amazon-ebs


【解决方案1】:

此答案适用于基于 LINUX 的实例。

this article at Amazon 开始,它解释了如何设置 MySQL 以在 EBS 卷上运行。这不是绝对必要的 - 以下步骤应该适用于标准 MySQL 安装。

您需要为每个 EBS 卷/表组创建一个新的架构。我不相信您可以将表保存在一个模式中,而是将它们分布在多个 EBS 卷上。每个空架构都由 /var/lib/mysql/ 中的一个文件夹表示,该文件夹包含一个名为 db.opt 的文件。

要将架构移动到它自己的 EBS 卷需要以下步骤(使用架构 my_schema):

  • 如果尚未安装 EBS 卷(假设安装为 /ebsvol1);确保卷在 /etc/fstab 中列出,以便在重新启动时自动挂载

  • 更改已装载文件夹的权限以匹配当前架构文件夹

   chmod 700 /ebsvol1
   chown mysql /ebsvol1
   chgrp mysql /ebsvol1
  • db.opt 文件从架构文件夹复制到新卷(如果您已经在架构下创建了表,也需要复制这些表)
   cp /var/lib/mysql/my_schema/db.opt /ebsvol1/
   chmod 660 /ebsvol1/db.opt
   chown mysql /ebsvol1/db.opt
   chgrp mysql /ebsvol1/db.opt
  • 用指向 EBS 卷的符号链接替换原始架构文件夹
   cd /var/lib/mysql
   rm -fr my_schema
   ln -s /ebsvol1 my_schema

如果您的操作系统使用 AppArmor,您可能需要在 MySQL 允许写入的文件夹列表中包含 /ebsvol1。详情请见the article here

现在在 my_schema 下创建的所有表都将存储在 /ebsvol1 上。

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 2010-09-24
    • 2012-12-06
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多