使用 AWS OpsWorks 覆盖 RDS 中的 my.conf 模板
Posted
技术标签:
【中文标题】使用 AWS OpsWorks 覆盖 RDS 中的 my.conf 模板【英文标题】:Overriding my.conf template in RDS using AWS OpsWorks 【发布时间】:2016-06-20 06:08:21 【问题描述】:我正在尝试将我的 RDS 实例默认字符集更改为 utf8mb4
,以便支持表情符号。我有一个repo with all my recipes,我过去曾用它来自定义我的部署。我关注了来自 AWS 的 this guide,但是当我部署应用程序时,更改不会反映在数据库中。我还确保在我的自定义食谱存储库的mysql
目录的根目录中创建一个metadata.rb
文件。
我还使用新的属性组设置了一个新的 RDS 实例,其中适当的字符集和排序规则设置为 utf8mb4
。该数据库也被设置为我在 OpsWorks 中的应用程序中的数据源。
在 Rails 中,我还将编码和排序规则设置为 utf8mb4
...
default: &default
adapter: mysql2
encoding: utf8mb4
collation: utf8mb4_general_ci
...
如果我 ssh 进入我的应用程序服务器,然后连接到 MySql,这就是我在查询全局变量时看到的...
mysql> SHOW GLOBAL VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
但是当我对非全局变量做同样的事情时,我看到了:
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.6.23.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.00 sec)
我还应该提到,在我使用迁移将适当的表和列设置为 utf8mb4
后,这在本地可以正常工作。
此时,我无法弄清楚为什么我无法正确应用字符集。希望比我聪明的人能帮我解决这个问题!
谢谢
【问题讨论】:
【参考方案1】:在深入挖掘之后,我意识到我在更新自定义食谱时错过了一个关键步骤。我没有意识到简单地进行部署不会检索新配方。在我运行命令以“更新自定义食谱”然后进行部署后,它起作用了。
希望这对将来的某人有所帮助。
【讨论】:
以上是关于使用 AWS OpsWorks 覆盖 RDS 中的 my.conf 模板的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Cloudformation 向 OpsWorks 堆栈注册 RDS 实例?
使用 customResource 将 RDS 层注册到 opsworks 堆栈
通过 Cloudformation 模板创建 RDS Opsworks 层