mysql 集群+主从同步
SQL节点: 给上层应用层提供sql访问。
管理节点(MGM): 管理整个集群。 启动,关闭集群。 通过ndb_mgmd命令启动集群
存储/数据节点: 保存cluster中的数据。 数据节点,可以提供副本。实现数据冗余。
NDB引擎:是一种 “内存中”的存储引擎 , 它具有可用性高和数据一致性好的特点。
缺陷
- 基于内存,数据库的规模受集群总内存的大小限制
- 基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证。
- 多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响,因此速度也比较慢
2.2 优点
- 多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。
- 扩展性很好,增加节点即可实现数据库集群的扩展。
- 冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断。
Mysql cluster的下载地址:http://dev.mysql.com/downloads/cluster/
在我们做的实验中mysql cluster集群各机器角色如下分配:
mysql管理结点:xuegod63.cn IP:192.168.31.130
mysql 数据结点:xuegod63.cn IP:192.168.31.130
mysql 数据结点:xuegod64.cn IP:192.168.31.131
msyql SQL结点:xuegod63.cn IP:192.168.31.130
msyql SQL结点:xuegod64.cn IP:192.168.31.131
将MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar上传到130,131主机
实战:MySQL集群搭建
1.mysql旧版本清除
yum -y remove mysql
rpm -qa | grep mysql*
对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
2.mysql cluster版本安装准备
[root@ygy130 ~]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar
[root@yu131 yy]# tar -xvf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar
3.创建文件夹
(分如下3个类来创建对应的文件夹)
数据结点存放数据,: [root@ygy130 ~]# mkdir /var/lib/mysql
管理节点: [root@ygy130 ~]# mkdir /var/lib/mysql-cluster SQL节点:可不用 文件夹授权
进程DIR: [root@ygy130 ~]# mkdir /var/run/mysqld
[root@yu131 yy]# mkdir /var/run/mysqld
4.安装mysql集群软件包
[root@ygy130 ~]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm
[root@ygy130 ~]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm
[root@yu131 yy]# rpm -ivh MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm
[root@yu131 yy]# rpm -ivh MySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm
注意:当安装完毕MySQL-Cluster-server-gpl包后,将出现如下提示信息,提醒我们整个cluster安装后的初次超级账户密码存在/root/.mysql_secret这个文件当中。
5.赋权限
[root@ygy130 ~]# chown mysql:mysql -R /var/lib/mysql
[root@ygy130 ~]# chown mysql:mysql -R /var/lib/mysql-cluster/
[root@ygy130 ~]# chown mysql:mysql -R /usr/mysql-cluster/
[root@ygy130 ~]# chown mysql:mysql -R /var/run/mysqld/
[root@ygy130 ~]# chown mysql:mysql -R /usr/mysql-cluster/
[root@yu131 yy]# chown mysql:mysql -R /var/run/mysqld
搭建mysql集群
[root@ygy130 ~]# vim /var/lib/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2 #数据写入数量。2表示两份
DataMemory=200M
IndexMemory=100M #索引给100M
[ndb_mgmd]
id=1
datadir=/var/lib/mysql-cluster # 管理结点的日志
HostName=192.168.31.130 #管理结点的IP地址。本机IP
###### data node options:
[ndbd]
HostName=192.168.31.130
DataDir=/var/lib/mysql #mysql数据存储路径
id=2
[ndbd]
HostName=192.168.31.131
DataDir=/var/lib/mysql
id=3
# SQL node options: #关于SQL结点
[mysqld]
HostName=192.168.31.130
id=4
[mysqld]
HostName=192.168.31.131
id=5
~
数据节点+SQL节点配置文档 + 主从同步
[root@ygy130 ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql #mysql数据存储路径 数据节点(配置要加)
ndbcluster #启动ndb引擎
ndb-connectstring=192.168.31.130 # 管理节点IP地址
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.31.130 #管理节点IP地址
[mysqld]
log-bin=mysql-bin-master #配置主从同步
server-id = 10
[root@yu131 yy]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
ndbcluster
ndb-connectstring=192.168.31.130
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.31.130
[mysqld]
log-bin=mysql-bin-slave
server-id = 11
~
MySQL Cluster启动
[root@ygy130 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini
[root@ygy130 ~]# ndbd --initial 第一次启动加--initial
[root@yu131 yy]# ndbd --initial
启动SQL结点服务
[root@yu131 yy]# mysqld_safe --defaults-file=/etc/my.cnf &
[root@ygy130 ~]# mysqld_safe --defaults-file=/etc/my.cnf &
设置密码及相关mysql设置
[root@ygy130 ~]# cat /home/yy/.mysql_secret
[root@ygy130 ~]# mysql_secure_installation
[root@yu131 yy]# cat /root/.mysql_secret
[root@yu131 yy]# mysql_secure_installation
查看mysql 集群状态:
[root@ygy130 ~]# ndb_mgm
130
mysql> grant replication slave on *.* to slave@192.168.31.131 identified by "123456";
mysql> flush privileges;
131
mysql>change master to master_host='192.168.31.130',master_user='slave',master_password='123456';
mysql> start slave;
mysql> show slave status\G 查看状态
130
mysql> create database yy;
mysql> use yy
mysql> create table tt(id int);
mysql> insert into tt values(11);
131
mysql> use yy
mysql> select * from tt;
关闭服务
[root@ygy130 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> shutdown
ndb_mgm> exit
[root@ygy130 ~]# ps -axu | grep ndbd #查看不到,说明数据节点已经被关
[root@ygy130 ~]# kill -9 pid号
[root@yu131 yy]# ps -axu | grep ndbd #查看不到,说明数据节点已经被关
[root@yu131 yy]# kill -9 pid号
启动服务
[root@ygy130 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini
[root@ygy130 ~]# ndbd
[root@yu131 yy]# ndbd
[root@yu131 yy]# mysqld_safe --defaults-file=/etc/my.cnf &
[root@ygy130 ~]# mysqld_safe --defaults-file=/etc/my.cnf &
备注:集群做了数据库的同步,没有做数据库表的同步,具体还是没有理解这样做的意义,如果集群不能主从同步,那么之前画的那个图就不准确。
因此这里自定义加的数据库表的同步:采用主从同步的方式。
后期做成M-s s-M,这样无论修改哪一边的数据,都能同步了。
mysql 集群+主从同步的更多相关文章
- mysql 集群 数据同步
mysql集群配置在网站负载均衡中是必不可少的: 首先说下我个人准备的负载均衡方式: 1.通过nginx方向代理来将服务器压力分散到各个服务器上: 2.每个服务器中代码逻辑一样: 3.通过使用redi ...
- 关于mysql集群主从服务器搭建
在高并发流量下,数据库往往是服务端的瓶颈,由于数据库数据需要确保落地,同时保证数据同步,数据即时性,有效性的问题,导致数据库不能像平常后端程序一样负载均衡. 那么在大并发下,该如何缓解数据库的压力呢? ...
- LINUX学习-Mysql集群-主从服务器备份
一.Mysql主从集群备份. 1.准备两台主机 主服务器:192.168.88.20和从服务器:192.168.88.30 2.分别安装mysql yum -y -install mysql mysq ...
- 高可用性、负载均衡的mysql集群解决方案
高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么 ...
- MySql集群FAQ----mysql主从配置与集群区别、集群中需要多少台计算机呢?为什么? 等
抽取一部分显示在这里,如下, What's the difference in using Clustervs using replication? 在复制系统中,一个MySQL主服务器会更新一个或多 ...
- Mysql集群搭建(多实例、主从)
1 MySQL多实例 一 .MySQL多实例介绍 1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通 ...
- 浅谈mysql集群
一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...
- MySQL集群(二)之主主复制
前面介绍了主从复制,这一篇我将介绍的是主主复制,其实听名字就可以知道,主主复制其实就是两台服务器互为主节点与从节点.接下来我将详细的给大家介绍,怎么去配置主主复制! 一.主从复制中的问题 1.1.从节 ...
- MySQL集群PXC的搭建
MySQL集群PXC的搭建 最近公司某客户要求我们的数据库搭建PXC集群以保证他们的系统高性能和搞稳定性 以后花费了一些时间去搭建和测试,也踩过一些坑,准备分享出来 系统:centos6.6PXC:5 ...
随机推荐
- SQL 怎么实现模糊查询?
执行数据库查询时,有完整查询和模糊查询之分. 一般模糊语句格式如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件; 其中,关于条件,SQL提供了四种匹配模式: 一.%:表示零 ...
- Resharp使用简记
一图流: 拾贝: .字符串引号中直接回车键自动添加连接字符串 Ctrl+B:转到定义 Ctr+F11:展示类结构 Ctr+Alt+j:包围代码块 Ctr+\:注释和取消注释 Alt+Ins:重构 Ct ...
- ubuntu networking 与 network-manager
刚遇到的坑,因为操作不当导致网络中断,于是手动配置了/etc/network/interfaces , 修复了系统之后发现ubuntu-desktop中的有线链接不见了,百度了一下说是networki ...
- HTML5 canvas制作童年的回忆大风车
今天看到一篇CSS3写的大风车http://www.cnblogs.com/yaojaa/archive/2013/01/30/2882521.html,感觉CSS3太神奇了,这在以前用CSS是想都不 ...
- jspSmartUpload上传下载使用例子
--------------------------------------------------------------------- ServletUpload.java 上传 package ...
- python学习笔记07:自定义类型
class person: def __init__(self,name,age,weight): self.name = name self.age = age self.weight = weig ...
- 【Linux】- Ubutnu UFW防火墙的简单设置
ufw是一个主机端的iptables类防火墙配置工具,比较容易上手.一般桌面应用使用ufw已经可以满足要求了. 安装方法 sudo apt-get install ufw 使用方法 1.启用: sud ...
- NeoLoad系列- 快速上手教程
1.新建工程 2.点击录制脚本按钮 3.在弹出的开始录制对话框中,填写虚拟用户信息. Record in下拉框,用来填写用户路径,一般有三个容器组成: Init, Actions, and End.当 ...
- linux核心版本号的说明
日志不会很长,因为每天都在学习,我认为的重点,我自己做的记录,我很高兴能分享给大家: Linux的核心版本编号有点类似如下癿样子: 2.6.18-92.el5 主版本.次版本.释出版本-修改版本 因为 ...
- LINUX硬件查看命令
1.查看系统PCI设备 lspci lspci -v 显示更详细的PCI设备信息 2.查看CPU信息 more / proc /cpuinfo 3.查看系统内存信息 more /proc /mem ...