说明
集群
MySQL集群的设计实现了毫秒级响应性能,每秒支持数百万次操作。MySQL集群还支持内存和磁盘数据存储,自动数据分区(分片),带有负载均衡功能,使线性数据库可以有效地扩展
相关词解释
ndbd:数据库存储节点,内存需要偏大
mysqld:mysql服务器负载均衡节点,程序直接访问的服务器
ndbd_mgm ndbd_mgmd:管理节点,管理数据库节点状态等,管理服务器一旦停止,所有节点全部停止工作
负载均衡
实现集群访问节点的均衡访问压力。
主从复制
对数据进行远程复制到从服务器,实现容灾、负载均衡功能,并可自行配置能读写分离功能。
相互之间的关系
集群和主从复制:集群的复制是相互的,在MySQL集群中,所有的数据总是保持同步。在任何数据节点上提交的事务都同步到所有其他的数据节点上了,如果有一个数据节点失败了,其他正常的数据节点照样能保持数据的一致性,但主从复制是单向的,从节点不接受(CUD)
集群和负载均衡:集群的从机是作为standby,不参与访问(从属主节点失效才参与),负载均衡是分担客户所有的访问(4种负载算法)
负载均衡和主从复制:进行主从复制的环境,可以对读写进行分离,形成自己的负载均衡。
Mysql集群安装
1、删除虚拟机131和132中之前安装的mysql主主环境
停止mysql服务,删除mysql安装目录
删除mysql配置文件
到根目录查询所有mysql相关文件
批量删除这些文件
2、管理节点安装(133)
首先在/usr/local/目录下面解压mysql集群包
其次安装以下步骤进行安装
groupadd mysql
useradd mysql -g mysql
mv/usr/local/mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64/usr/local/mysql
cd /usr/local
chown -R mysql:mysql mysql
cd mysql
./scripts/mysql_install_db --user=mysql
3、数据节点安装(132和131)
数据节点的安装和上面的管理节点安装一样,只是多了以下几步
#cp support-files/mysql.server /etc/init.d/mysqld
yum list|grep ncurses
yum -y install ncurses-devel
yum install ncurses-devel
4、mysql管理节点(133)配置
1、现在开始为这台管理节点服务器建立日志文件:# mkdir /var/lib/mysql-cluster# cd /var/lib/mysql-cluster
2、管理节点服务器建立配置文件:# vi config.ini
配置文件详细:http://laowafang.blog.51cto.com/251518/659121
在config.ini中添加如下内容:
#定义默认参数
[ndbd default]
#设置集群中每个表保存的副本数
NoOfReplicas=2
#并发(根据自己服务器配置硬件性能进行配置)
MaxNoOfConcurrentOperations= 100
#设置用于保存数据的内存大小(根据自己服务器配置硬件性能进行配置)
DataMemory=120MB
#设置用于保存哈希索引的内存大小(根据自己服务器配置硬件性能进行配置)
IndexMemory=80MB
#数据节点目录
datadir=/usr/local/mysql/data/
TimeBetweenWatchDogCheck=30000MaxNoOfOrderedIndexes=1024
#设定管理节点相关参数
[ndb_mgmd]
#指定管理节点的数据(日志)文件主目录
datadir=/var/lib/mysql-cluster
LogDestination=FILE:filename=/var/log/mgmd.log
#指定ID号
id =13
#指定管理节点主机
hostname=192.168.109.133
#设定数据节点相关参数
[ndbd]
id =14
hostname=192.168.109.132
[ndbd]
id = 15
hostname=192.168.109.131
#表示允许有2台MySQL服务器从任何IP访问数据库结点,但为了能够更快的更换集群中的服务器,推荐留空,否则更换服务器后必须对这个配置进行更改
[mysqld]
[mysqld]
启动管理节点:./ndb_mgmd -f /var/lib/mysql-cluster/config.ini--reload重新加载管理节点(当config.ini文件修改了以后)
管理节点日志:/var/lib/mysql-cluster
如下图所示,可以看到管理节点133已经成功启动,在等待数据节点和数据库实例131和132连接进来。
5、mysql数据节点(132和131)配置
vi /etc/my.cnf
[mysqld]
default-storage-engine=NDBCLUSTER
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
port=3306
ndbcluster
ndb-connectstring=192.168.109.133
socket=/tmp/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-bin=mysql-bin
server-id=14
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.109.133
机器上启动MySQL存储节点(131和132都要执行):/usr/local/mysql/bin/ndbd
在机器上启动数据库负载均衡节点(131和132一起执行):/etc/rc.d/init.d/mysqld start
数据节点启动成功后,可以在管理节点上执行查看是否启动成功:
在131和132上修改登录密码后进行登录即可
授权登录
客户端连接
如下图所示,可以看到客户端已经正确连接进去了。
Mysql集群环境创建数据库和表,测试环境的正常
1、数据库创建
直接在131上创建数据库wangjing ,那么132中会立即同步
2、创建表
在131上中创建了用户表sys_user,且写入了数据,可以看到132中已经立即同步了。
注意
注意:/etc/rc.d/init.d/mysqld start启动成功后,没有连接上管理节点,且存储节点时不时断掉,是因为管理节点中/var/lib/mysql-cluster/config.ini配置文件内存和数据的配置太大了,超过了了本身机身的内存)。
Mysql数据库引擎
集群模式之前我们都是用户INNODB引擎进行操作的,集群环境下是用的NDBCLUSTER方式操作的。
以下几种为常见的数据库引擎
MyISAM该引擎基于ISAM数据库引擎,除了提供ISAM里所没有的索引和字段管理等大量功能,MyISAM还使用一种表格锁定的机制来优化多个并发的读写操作,但是需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间,否则碎片也会随之增加,最终影响数据访问性能。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的MyISAMPack工具。MyISAM强调了快速读取操作,主要用于高负载的select,这可能也是MySQL深受Web开发的主要原因:在Web开发中进行的大量数据操作都是读取操作,所以大多数虚拟主机提供商和Internet平台提供商(Internet Presence Provider,IPP)只允许使用MyISAM格式。MyISAM类型的表支持三种不同的存储结构:静态型、动态型、压缩型。
InnoDB该存储引擎为MySQL表提供了ACID事务支持、系统崩溃修复能力和多版本并发控制(即MVCC Multi-Version Concurrency Control)的行级锁;该引擎支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空则自动从现有值开始增值,如果有但是比现在的还大,则直接保存这个值;该引擎存储引擎支持外键(foreign key),外键所在的表称为子表而所依赖的表称为父表。该引擎在5.5后的MySQL数据库中为默认存储引擎。
Cluster/NDB该存储引擎用于多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大、安全和性能要求高的场景。
网友评论