-
Notifications
You must be signed in to change notification settings - Fork 3
wwwbjqcom/dcmha
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
功能: 1、前端使用haproxy/cetus做路由端,后端切换使业务层无感知 2、通过zk同步配置文件,在路由端启动一个client实时监听路由变化 3、master宕机切换可实现未同步数据追加及回滚,回滚的数据记录到本地目录已备人为判断是否需要 4、因网络波动造成的心跳丢失会连续尝试数据库服务连接,如正常将不会发生切换并发出告警信息通知管理员 5、服务端、路由端都可以集群化避免单点故障 6、haproxy/cetus通过配置不同的集群组名称辨别,配置文件中通过read、write实现读写的端口分离 7、检测slave是否在线,如不在线将从读列表中去除,后期将加入延迟检测,超过阈值剔除 操作实现: 1、手动对集群进行维护时需先对该集群设置白名单(white),操作完成后直接设置白名单任务(task)让server获取新master并监听 2、如master监听丢失但重试连接mysql成功,server不会发生切换操作,会在watch-down节点写写入该集群信息,以供报警作用 3、添加空集群直接使用add参数即可,自动选举master并同步 4、宕机恢复的master如需恢复到集群中提供业务支持,执行my_mha中的setha以增加信息到路由端,如不恢复到集群中在下次master 宕机切换时也可以自动作为活跃主机添加 5、当前mysql有多个同步线程,需添加附加任务,在addition节点下先插入对应数据 不支持项: 1、不支持多通道复制,只能以附加业务的方式指定 2、不支持mysql的多点写入 3、未平台化,操作基本使用my_mha.py脚本实现 注意事项: 1、第一次启动需先启动server初始化zookeeper信息,再启动每个mysql端的心跳线程,最后执行my_mha相关项 2、无论是手动修改、自动切换、初始化添加都会对路由信息进行同步,所以在初始化集群原始信息时务必先增加路由信息到zookeeper中,并把路由节点上的router.py启动 3、mysqlrouter配置文件使用默认配置、集群名称命名的配置文件作为组合启动(groupname.conf) 可以在单个节点上启动多个mysqlrouter,只需启动一个router.py,会自动判断组名并重启 4、路由节点可以为多个以避免单节点故障,格式为host:port,host:port..... 介绍: zookeeper: white_path : 手动维护集群时如不需要切换需设置的项,利用my_mha().setwhite设置 lock_path : 在server多节点运行的模式下用于控制master宕机任务只能一个节点进行维护,创建节点名与任务名相同 task_path : 记录所有任务数据,宕机任务以集群名称创建,其余手动设置的任务以task建立序列 meta_host : 该节点下记录所有IP的元数据,格式['group':a,'port':123] meta_group : 记录所有集群组信息,格式为(host,host....) meta_router: 记录每个集群路由所在地,以集群组名称命名内容格式为(host:port,host:port),port为router.py配置的端口 online_path: 记录所有在线的节点 master_path: 记录每个组当前的master所在,以集群组名称命名 haproxy_path:记录路由配置文件,以机群组名称命名,记录格式{'read':[host:port,host:port...],'write':'host:port'},单节点写入多节点读取 watch_down : 记录两种情况,一种是因网络波动或客户端原因导致心跳丢失但mysql却正常的情况,以集群名称创建一个空节点,另一种为同步路由配置文件 失败的情况,以集群名称加send后缀命名 addition : 节点下有replication、region两个节点 replication/groupanme/regionname:如果集群组有附加的主从同步任务将在groupname创建对应节点,需要同步到那些位置的regionname会创建对应节点 regionname下记录当前指向的IP信息,格式如{'host':'192.168.1.1','port':3316,'ssl':1/0} region/regionname: region节点下记录所有分区同步接口元数据,每个regionname下记录元数据,元数据可以为多个供高可用随机选择,记录格式如下 {'192-168-1-1':{'prot':3316,'ssl':1/0},'192-168-1-2':{}........} slave_down : slave宕机节点信息 部署流程: 1、安装依赖 yum -y install epel-release gcc gcc-c++;yum -y install python-pip python-devel mysql-devel MySQL-python;pip install pymysql psutil kazoo 2、部署zookeeper集群 3、启动server端初始化数据 4、在所有mysql节点部署dcmha_client分之创建心跳 5、部署mysqlrouter并开启router.py打开端口 6、执行my_mha中的各项 haproxy配置示例: global maxconn 4096 daemon pidfile /tmp/hkmsg.pid defaults mode tcp timeout connect 20s timeout client 1m timeout server 1m listen write bind :3598 mode tcp balance roundrobin server hkmsg 192.168.1.1:3306 check listen read bind :3599 mode tcp balance roundrobin server hkmsg1 192.168.1.1:3306 check server hkmsg2 192.168.1.2:3306 check
About
No description, website, or topics provided.