tno*_*saj 6 mysql replication percona mysql-5.5 xtradb-cluster
由于我们的初创公司发展顺利,我们现在遇到了一些您一直认为永远不会影响您的问题。
我们已经扩展了很多应用程序堆栈:我们将临时信息的高读/写表卸载到一个单独的 Percona 服务器,其中表以“Engine=MEMORY”运行,并将其他部分迁移到 cassandra 集群。
现在我们剩下一个“精益”数据库,其中我们的读/写负载为 88%/12%。在这一点上,我有几个问题想得到一些反馈:
1. 读奴隶
通过我们的读/写设置,一些(例如 2-3 个)读从站应该将我们的写主站上的读负载减少到最低限度。read-slave 解决方案的可扩展性如何:如果我们的负载增加一倍/三倍,我们的负载是添加额外的 read slaves 将继续为读取提供足够的容量?我阅读了这篇文章:每个主人的奴隶数量有什么限制?然而,不是出于可扩展性背景,这可能看起来很愚蠢,但这是一个可冻结的解决方案吗?有很多人在推动分片而不是读从解决方案,但是,我现在真的认为我们的读/写负载不需要重写我们应用程序的大部分......有什么想法吗?
2. 多数据中心和复制
此外,我们正在考虑为附近的数据中心提供服务,以减少网络延迟(我们处理不喜欢延迟的移动应用程序)。计划是使用很多提到的半同步。复制(见:这是个好主意,MySQL数据库分成两个服务器,并为MySQL复制的高延迟互连是否受影响?)的主-主复制,其中每个数据中心都有一个主,和多个读的奴隶。同样,天真地,我很想知道在扩展时这是否在“最佳实践”的范围内。
3. 硬件和配置
过去几周我一直忙于对我们的实时系统进行基准测试,我得出的结论是,无论我们为第 1 点和第 2 点选择哪种解决方案,我们当前使用的服务器都不会运行很长时间,是否可以我对我们的设置有一些想法:
CPU: Intel(R) Xeon(R) CPU E31275 @ 3.40GHz mit 8 cores (hyperthreading)
RAM: 16GB
Raid 10 with a strip size of 64 KB and controller cache enabled
Software: Percona 5.5
Database size: 83.7GB
Top 5 Tables:
21302MB table1
7656MB table2
5477MB table3
4352MB table4
3663MB table5
Run Code Online (Sandbox Code Playgroud)
my.cnf 设置:
max_heap_table_size=64M
tmp_table_size=64M
default_storage_engine = InnoDB
innodb_buffer_pool_size = 10G
innodb_file_per_table = 1
innodb_old_blocks_time=1000
innodb_buffer_pool_instances=10
innodb_log_file_size=256M
innodb_flush_method=O_DIRECT
innodb_read_io_threads=10
innodb_write_io_threads=10
join_buffer_size = 67108864 #64M
expand_fast_index_creation=ON
Run Code Online (Sandbox Code Playgroud)
迁移到 Percona XtraDB Cluster 解决方案会解决我们的一些问题,例如复制稳定性吗?
我知道这些是很多非常理论化的问题,我感谢任何花时间阅读和评论我的想法的人。作为欧洲的一家小型创业公司,我们真的没有风险投资只是“上云”,我们更愿意对自己有更多的控制权。当我们正在寻找顾问等时,我认为 stackexchange 是激发一些想法的正确场所。
在这种情况下,您实际上有两个选择
我目前正在评估它,我认为它非常适合 MultiMaster 写入。它可以使用 mysqldump(默认)、rsync 和 xtrabackup(首选)来初始化新的集群节点。你拥有完全的自由和权力。这可能是有史以来最陈词滥调的陈词滥调,但凭借强大的力量,他们也必须始终承担巨大的责任(视频的 19:16 - 19:25)。
你最终要对
mysql.user
不会复制针对的任何 DML 。Amazon RDS 使 MySQL 数据库云服务变得轻而易举。您必须花一些时间使用 7 个服务器模型之一来部署服务器。默认情况下,所有 InnoDB 日志文件都是 128M。以下是每个服务器模型独有的唯一选项:
MODEL max_connections innodb_buffer_pool_size
--------- --------------- -----------------------
t1.micro 34 326107136 ( 311M)
m1-small 125 1179648000 ( 1125M, 1.097G)
m1-large 623 5882511360 ( 5610M, 5.479G)
m1-xlarge 1263 11922309120 (11370M, 11.103G)
m2-xlarge 1441 13605273600 (12975M, 12.671G)
m2-2xlarge 2900 27367833600 (26100M, 25.488G)
m2-4xlarge 5816 54892953600 (52350M, 51.123G)
Run Code Online (Sandbox Code Playgroud)
您没有获得SUPER 特权,也无法直接访问 my.cnf。鉴于此,为了更改 my.cnf 启动选项,您必须首先创建一个基于 MySQL 的 DB 参数选项列表,并使用RDS CLI(命令行界面)更改所需的选项。然后,您必须执行此操作以导入新选项:
MySettings
)./rds-modify-db-parameter-group MySettings --parameters "name=whateveroption,value=whatevervalue,method=immediate"
MySettings
至于扩展到数据中心,您可以选择创建只读副本。由于默认的存储引擎是 InnoDB,所以制作只读副本变得无缝,因为数据可以同步到 Slaves 而不会中断 Master。
更高的服务器型号意味着您可以拥有更多的内存和更多的 IOP。不要忘记我提到的陈词滥调,因为谈到 Amazon RDS,强大的力量带来巨大的金钱。
归档时间: |
|
查看次数: |
5007 次 |
最近记录: |