我们有一个包含大约200克数据的RDS实例。在我们的终端出现了一些问题,我们需要更改所有表的排序规则和字符集,以及在休息时加密所有数据。RDS支持加密,但是不能在已经运行的实例上启用它,也不能恢复未加密的快照。
话虽如此,我目前的策略如下:
mysqldump -C -h xxxxxxx.rds.amazonaws.com --routines --triggers --single-transaction --quick --add-drop-database --default-character-set=utf8mb4 --disable-key -u user -pxxxxxx --ssl_ca xxxx mydatabase | mysql -u user -pxxxxx -h xxxxxx.rds.amazonaws.com --ssl_ca xxxx mydatabase
用于数据库:ALTER DATABASE mydatabase CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci
对于每个表:ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
..。等
我的问题是..。有更快的方法吗?我将mysqldump从主数据库直接转储到磁盘上,花费了大约4个小时。我还没有运行所有的ALTER更改(仅在一个小的数据集上),但我假设这些操作将花费大量的时间。如果这有帮助的话,我所有的表都是InnoDB表。我在看,但意识到我不能在RDS中使用它。
任何想法都很感激!
发布于 2015-06-28 07:13:50
pt-online-schema-change --它将花费更长的时间,但它不会中断其他活动,只会短暂地中断。
https://dba.stackexchange.com/questions/105292
复制相似问题