tencentDB for mysql属于云服务哪一层次

tencentDB for mysql属于云服务哪一层次,第1张

属于亚马逊的云数据库服务。

云数据库 MySQL(TencentDB for MySQL)是腾讯云基于开源数据库 MySQL 专业打造的高性能分布式数据存储服务,让用户能够在云中更轻松地设置、 *** 作和扩展关系数据库。

云数据库 MySQL 主要特点如下:

云存储服务,是腾讯云平台提供的面向互联网应用的数据存储服务。

完全兼容 MySQL 协议,适用于面向表结构的场景;适用 MySQL 的地方都可以使用云数据库。

提供高性能、高可靠、易用、便捷的 MySQL 集群服务。

整合了备份、扩容、迁移等功能,同时提供新一代数据库工具DMC,用户可以方便的进行数据库的管理。

MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。

数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写 *** 作失败,则更新失败)。

无共享的对等节点使得某台服务器上的更新 *** 作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。

通过多个MySQL服务器分配负载,从而最大程序地达到高性能,通过在不同位置存储数据保证高可用性和冗余。

Asynchronous Replication Automatic failover

其原理是在一条异步复制通道上配置多个可用复制源,当某个复制源不可用时(宕机、复制链路中断),且 slave 的 IO 线程尝试重连无效,自动根据权重选择新的源继续同步。

准备一个 MGR 集群和单实例,模拟复制链路切换,当 primary 故障,slave 自动切换到其他节点。dbdeployer deploy replication --topology=group 8022 --single-primarydbdeployer deploy single 8022

2 在从机上建立指向 MGR 主节点的复制通道,

change master to master_user='msandbox',master_password='msandbox', master_host='127001',master_auto_position=1,source_connection_auto_failover=1,master_port=23223,master_retry_count=6,master_connect_retry=10 for channel 'mgr-single';

在 master_retry_count 和 master_connect_retry 的设置上要考虑尝试重连多久才切换复制源。

3 在从机上配置 asynchronous connection auto failover

配置 asynchronous connection auto failover 的两个函数:

asynchronous_connection_failover_add_source(channel-name,host,port,network-namespace,weight)

asynchronous_connection_failover_delete_source(channel-name,host,port,network-namespace)

权重值大的被优先级选择,可以配合MGR的选举权重配置 asynchronous_connection_failover 的权重。当 MGR 节点切换,异步复制也能切换到新的主节点。

SELECT asynchronous_connection_failover_add_source('mgr-single','127001',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127001',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127001',23225,null,50);start slave for channel 'mgr-single';

4 检查异步复制通道是否启用 failover。

mysql> SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schemareplication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+| mgr-single   |  1                              |+--------------+---------------------------------+1 row in set (001 sec

5 把 MGR 的 primary 节点 kill 掉,这个从节点会在尝试几轮重连失败后自动切换到次权重的复制源,其日志中会输出切换信息。

注意:当主节点故障,一旦复制链路成功 failover 后,在新的复制链路没有故障时,如果原主节点恢复,是不会回切的。如果当前复制链路发生故障,会再次选择权重高的进行切换

"可以采用开源的MyCat解决方案,优点是免费,缺点是出现问题可能要自己解决或者去社区寻找解决方案;

也可以采用北京万里开源软件有限公司的集群解决方案,后端使用开源的MySQL存储数据,优点是有任何问题他们都可以帮忙解决,而且不用担心系统后续的扩展、集群高可用等情况,他们的工程师还开发过MySQL核心代码,找他们可以睡个安稳觉,缺点是不免费,他们还有自己的国产数据库GreatDB,100%兼容MySQL。

对于初创企业,可以考虑选择免费的开源解决方案,毕竟遇到的问题可能有限,如果要想长期稳定发展,还是选择万里开源这样的公司比较靠谱一些。"

一、灾 难恢复

我们知道,数据库的日常维护,最重要的就是备份和恢复。有同事(也有DBA)告诉我说,cluster的维护成本很高。就我看来,Mysql发布这个版本的集群方案,是经过严格测试的。官方宣称99999%的可用性,毫秒级实时性非常诱人。引用官方的一张图:

在所有的管理节点,绝大部分的API节点(Mysqld节点和Memcache节点),超过半数的数据节点都崩溃的情况下,cluster仍然可以保障你的业务正常运行。节点的事务如果出现冲突,cluster会自动修复,如果其中任意一台数据节点出现故障无法启动,那么,我们马上可以换上新的,使用ndbd --initial初始化节点,alter online table重新同步写入数据就行。

二、日常备份和恢复

cluster的备份命令非常容易,在管理节点上执行:

mgmd>start backup

语法:

START BACKUP [backup_id] [wait_option] [snapshot_option]

官方文档我就不抄了。控制台会显示当前备份的简要信息,如:哪个节点开始备份等。你也可以指定具体哪个节点开始备份。cluster的备份数据存放在每个数据节点的数据目录下,从1开始,每次备份产生一个备份目录,形如:BACKUP-备份id。在不指定节点的情况下,每个节点会依次备份。cluster的备份是在线的,不闭塞的,这样我们在备份时完全不用担心会造成数据库堵塞。恢复数据同样简单,我们在每个数据节点(注意:是每个数据节点,不是其中某一个)发出如下指令:

shell>/opt/soft/mysql/bin/ndb_resotre -c "管理服务器IP:1186" -n 节点id -b 备份id -r 就行,如果不想记binlog日志,可以加上--no-binlog参数,全部参数列表请参考官方文档。

在上文,我强调要在每个数据节点执行 *** 作,但是,这只是为保险起见,事实上,在最少情况下,只需要在相同节点组的任意一个节点各 *** 作一次就行。例如,如上图典型的4数据节点集群,node1和2属于node group1,node3和4属于node group2,在恢复时,我们只需要在node1和node3上各执行一次恢复指令就行了。其个中原因,大家可以再看图多思考就会明白。

三、在线扩展节点

Mysql cluster宣称可以在业务量大大增长时,在线添加节点以适应业务需求。方法如下:

(注:以下192168010是管理节点IP)

1添加一个[ndbd]并在configini里加入

2停掉mgmd : 10 stop 再重启 ndb_mgmd -f configini --reload (这里10是管理节点的id)

3在已存在的数据节点上rolling restart :

mgmd>原数据节点ID1 restart

mgmd>原数据节点ID2 restart

可以在ndbinfonodes表检查确认所有的数据节点使用了新的配置

4rolling restart所有的sql和api节点 (如果有配置/etc/initd/mysqlserver restart也一样)

mysqladmin -uroot -ppassword shutdown

mysqld_safe --ndbcluster --ndb-connectstring=192168010 &

5在新节点上执行初始化启动

ndbd -c 192168010 --initial

6建新节点组3,4是新节点的ID

mgmd>CREATE NODEGROUP 3,4

7再分配集群数据,对每个表执行一次

ALTER ONLINE TABLE tbl REORGANIZE PARTITION

如果数据量很大,这个过程比较慢,请耐心等待。(如果要数落cluster的不足,我认为在线添加数据节点算是一个)

四、Replication

今天,Mysql的replication异步复制技术已经相当成熟,使用也非常频繁。cluster同样对replication提供了支持。配置非常简单,仅需在cluster中任意一台myql节点上启用binlog,作为master,然后在从库上不启用ndb引擎,其他配置和mysqld之间的replication完全一样。这里需要注意的一点是,你的binlog_format需要设置为STATEMENT,一定不要设置为MIXED,否则你的触发器将会令你的同步出错。这可能是cluster的一个bug,我没有深究。

以上就是关于tencentDB for mysql属于云服务哪一层次全部的内容,包括:tencentDB for mysql属于云服务哪一层次、mysql集群架构 怎么看、mysql集群的几种方案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10134804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存