整理下Mysql集群的的一些资料,想做个专题,分析多主和多从的模式

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

有些需要参照别人,一起研究啊,前几天跟一个大牛聊天,说是使用了200多台的多主MYSQL集群,羡慕,嘿嘿。

(多主一从,一主多从,多主多从,一主一从)

MYsqL集群想做个多主或多从的专题研究,总结在这里。

 二台Mysql服务器,他们的IP地址分别为:
A:192.168.0.97
B:192.168.0.98
数据库都是 test_3306
首先我给两台服务器的my.ini 贴出来
A:my.ini

server-id=2
master-host=192.168.0.98
master-user=mydb
master-password=123
master-port=3306
master-connect-retry=1
replicate-do-db=tbqu
log-bin=
log-slave-updates
binlog-ignore-db=mysql
slave-skip-errors=all

B:my.ini

server-id=1
master-host=192.168.0.97
master-user=mydb
master-password=123
master-port=3306
master-connect-retry=1
replicate-do-db=tbqu
log-bin=
log-slave-updates
binlog-ignore-db=mysql
slave-skip-errors=all

在这里,配置文件和主从配置方法基本上一样
log-slave-updates 这个参数一定要加上,否则不会给更新的记录些到二进制文件里
slave-skip-errors 是跳过错误,继续执行复制操作

多主互备和主从复制有一些区别,因为多主中 都可以对服务器有写权限,所以设计到自增长重复问题
出现的问题(多主自增长ID重复)
1:首先我们通过A,B的test表结构
2:掉A,在B上对数据表test(存在自增长ID)执行插入操作,返回插入ID为1
3:后停掉B,在A上对数据表test(存在自增长ID)执行插入操作,返回的插入ID也是1
4:然后 我们同时启动A,B,就会出现主键ID重复
解决方法:
我们只要保证两台服务器上插入的自增长数据不同就可以了
如:A查奇数ID,B插偶数ID,当然如果服务器多的话,你可以定义算法,只要不同就可以了
在这里我们在A,B上加入参数,以实现奇偶插入
A:my.ini上加入参数
auto_increment_offset = 1
auto_increment_increment = 2
这样A的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了
B:my.ini上加入参数
auto_increment_offset = 2
auto_increment_increment = 2
这样B的auto_increment字段产生的数值是:2, 4, 6, 8, …等偶数ID了
可以看出,你的auto_increment字段在不同的服务器之间绝对不会重复,所以Master-Master结构就没有任何问题了。当然,你还可以使用3台,4台,或者N台服务器,只要保证auto_increment_increment = N 再设置一下auto_increment_offset为适当的初始值就可以了,那样,我们的MySQL可以同时有几十台主服务器,而不会出现自增长ID重复。
在这里我们说的是2台MYSQL服务器,你也可以扩展到多台,实现方法类似
A -> B -> C-> D ->A
这样一个环形的备份结构就形成了,最后可要记住 自增长ID(主键)要设计好哦,否则会出错的。
————————————————————————————————————————–
假定有三台Mysql服务器,他们的IP地址分别为:
192.168.1.8
192.168.1.88
192.168.1.188
在192.168.1.8的安装目录下找到my.ini文件,在该文件的最后加上:
server-id=1
log-bin
#asyntest1是我用来试验的数据库名称,到时候要换成你的数据库名字
binlog-do-db=asyntest1
#下面这句话很重要,只有加上它,从前一台机器上同步过来的数据才能同步到下一台机器
log-slave-updates
master-host=192.168.1.188
master-user=root
#在此处填入192.168.1.188的root密码
master-password=XXXXX
#asyntest1是我用来试验的数据库名称,到时候要换成你的数据库名字
replicate-do-db=asyntest1
master-connect-retry=10
#出现错误后忽略,如果不加这个,出现任何错误,同步进程会终止
slave-skip-errors=all
在192.168.1.88的安装目录下找到my.ini文件,在该文件的最后加上:
server-id=2
log-bin
#asyntest1是我用来试验的数据库名称,到时候要换成你的数据库名字
binlog-do-db=asyntest1
#下面这句话很重要,只有加上它,从前一台机器上同步过来的数据才能同步到下一台机器
log-slave-updates
master-host=192.168.1.8
master-user=root
#在此处填入192.168.1.8的root密码
master-password=XXXXX
#asyntest1是我用来试验的数据库名称,到时候要换成你的数据库名字
replicate-do-db=asyntest1
master-connect-retry=10
#出现错误后忽略,如果不加这个,出现任何错误,同步进程会终止
slave-skip-errors=all
在192.168.1.188的安装目录下找到my.ini文件,在该文件的最后加上:
server-id=3
log-bin
#asyntest1是我用来试验的数据库名称,到时候要换成你的数据库名字
binlog-do-db=asyntest1
#下面这句话很重要,只有加上它,从前一台机器上同步过来的数据才能同步到下一台机器
log-slave-updates
master-host=192.168.1.88
master-user=root
#在此处填入192.168.1.88的root密码
master-password=XXXXX
#asyntest1是我用来试验的数据库名称,到时候要换成你的数据库名字
replicate-do-db=asyntest1
master-connect-retry=10
#出现错误后忽略,如果不加这个,出现任何错误,同步进程会终止
slave-skip-errors=all
在192.168.1.8, 192.168.1.88, 192.168.1.188上建立完全一样的数据库asyntest1,重启这三台数据库,然后在任何一台机器上进行的更新操作,都会同步到另外的两台机器上,这是一种环形同步,在192.168.1.8有任何修改,会首先同步到192.168.1.88的机器上,88的机器再将同步的数据同步到 192.168.1.188的机器上。同样,如果在192.168.1.88上有任何更新,首先会同步到192.168.1.188的机器上,然后再同步到192.168.1.8的机器上;而在192.168.1.188的机器上有任何更新,首先会同步到192.168.1.8的机器上,然后在同步到 192.168.1.88的机器上。利用这种原理,可以解决任意多台机器的互相同步问题。
如果出现问题,首先请在每一台服务器上用命令行通过telnet命令检查其他机器3306端口的连通情况。另外,请检查各机器的防火墙设置和杀毒软件的配置。可将这些软件暂停后进行试验。










本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/459174,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
关系型数据库 MySQL 索引
mysql 分析5语句的优化--索引添加删除
mysql 分析5语句的优化--索引添加删除
11 0
|
3月前
|
关系型数据库 MySQL Serverless
高顿教育:大数据抽数分析业务引入polardb mysql serverless
高顿教育通过使用polardb serverless形态进行数据汇总,然后统一进行数据同步到数仓,业务有明显高低峰期,灵活的弹性伸缩能力,大大降低了客户使用成本。
|
3月前
|
关系型数据库 MySQL 索引
【MySQL 解析】Hash索引和B+树索引对比分析
【1月更文挑战第11天】【MySQL 解析】Hash索引和B+树索引对比分析
|
3月前
|
SQL 关系型数据库 MySQL
mysql事务原理分析
mysql事务原理分析
28 0
|
3月前
|
存储 关系型数据库 MySQL
Mysql集群
Mysql集群
71 0
|
20天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
93 0
|
27天前
|
SQL 存储 运维
MySQL高可用性:主从复制和集群
MySQL高可用性:主从复制和集群
32 0
|
9天前
|
SQL 缓存 关系型数据库
mysql性能优化-慢查询分析、优化索引和配置
mysql性能优化-慢查询分析、优化索引和配置
75 0
|
15天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
17天前
|
SQL 关系型数据库 MySQL
【MySQL】慢SQL分析流程
【4月更文挑战第1天】【MySQL】慢SQL分析流程