1

美好的一天社区,我的数据库问题如下:

  1. 在我的 RDS AI 中有几个数据库,但我只对迁移一个数据库感兴趣,其中最大的一个(大约 95GB)。

  2. 该数据库有大约 700 个表、3000 个过程和一些触发器和函数(少于 20 个)。使用 DBForge Studio 2020 for MySQL 在 RDS B 中备份大约需要 1.5 小时,还原需要 10 多个小时(我使用 mysqldump 得到了类似的时间结果)。

  3. 两个 RDS 都有 MySQL 引擎 8.0.23、8 CPU 和 32GB RAM (db.m5.2xlarge),唯一的区别是存储,这是迁移的主要原因,第一个有 900GB,第二个有 300GB,这是因为我删除了一些无用的数据库,我有很多额外的空间,我不能降级 RDS 存储,我想省钱,所以,唯一的方法是迁移。

现在我的问题是:有没有比 2 中描述的在 2 个 MySQL RDS 之间恢复数据库更快、更有效的方法?

我对您的建议持开放态度,并很乐意测试您的解决方案并分享结果。先感谢您。

作为 Wilson Hauck 的建议,我正在分享我的 RDS B 的其他信息:

  • 来自查询的 RDS B 表

    COUNT(*) FROM information_schema.tables
    

好吧,在这种情况下,RDS B 没有其他数据库,只有由 Amazon RDS 设置创建的基本系统数据库,这是因为我想首先恢复最重的数据库。

  • RDS B 全局变量(在下面的 pastebin 链接上):

全局变量 RDS B

4

1 回答 1

1

为您的 RDS B 参数组考虑的建议

innodb_io_capacity=500  # from 200 to use more of available IOPS based on leased 300GB
read_rnd_buffer_size=128K  # from 512K to conserve RAM per connection and handler_read_rnd_next count
innodb_lru_scan_depth=100  # from 1024 to conserve 90% of RAM cycles used for function
innodb_flush_neighbors=2  # from 0 to push all rows for EXTENT in 1 sweep
innodb_buffer_pool_size=22G  # from ~ 48G for ~ 70% of available 32G on B server
innodb_change_buffer_max_size=50  # from 25 percent for higher rows added per second
innodb_concurrency_tickets=20000  # for reduce reque frequency 

还有更多提高性能的机会,我们有免费的可下载实用程序脚本来帮助进行性能调整,请参阅配置文件。

于 2021-11-09T17:37:14.223 回答