MySQL集环境搭建
1 MySQL集简介
1.1 什么是MySQL集
MySQL集是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。
数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。
无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。
通过多个MySQL服务器分配负载,从而最大程序地达到高性能,通过在不同位置存储数据保证高可用性和冗余。
了解更多:
sql/why-mysql/white-papers/guide-to-optimizing-performance-of-the-mysql-cluster/
1.2 集 MySQL中名称概念
1) Sql 结点(SQL node—下图对应为 mysqld):分布式数据库。包括自身数据和查询中心结点数据
2) 数据结点(Data node – ndbd):集共享数据(内存中)
3) 管理服务器(Management Server – ndb_mgmd):集管理 SQL node,Data node
详情见下图:
1.3  环境配置
1) 至少2台Linux服务器,后面的例子是3台Linux服务器
A:192.168.2.128        Management Server
B:192.168.2.129        Data node、SQL node
C:192.168.2.24        Data node、SQL node
如果只有2台的话,那么其中一台机器就要多一个角:Management Server
2) MySQL集版本安装程序,分32位和64位版本,最新版本请在sql/downloads/里面下载
2 安装
不管是Management Server,还是Data node、SQL node,都需要先安装MySQL集版本,然后根据不用的配置来决定当前服务器有哪几个角。
安装之前准备好mysql用户和mysql用户组,相关命令:
groupadd mysql
useradd mysql -g mysql
确定相关机器的防火墙已关闭(或者设置防火墙这几台机器之间的网络连接是畅通无阻的),相关命令:
chkconfig iptables off
service iptables stop
2.1 安装MySQL集版本
1) 把mysql-cluster-advanced-7.3.2-linux-glibc2.(这是32位安装版,64位安装版:mysql-cluster-advanced-7.3.2-linux-glibc2.5-x86_)上传到/usr/local
2) 解压:tar zxvf mysql-cluster-advanced-7.3.2-linux-glibc2.
3) 重命名:mv mysql-cluster-advanced-7.3.2-linux-glibc2.5-i686 mysql
4) 授权:chown -R mysql:mysql mysql
5) 切换到mysql用户:su – mysql
6) 切换目录到mysql:/usr/local/mysql
7) 安装mysql:scripts/mysql_install_db --user=mysql
2.2 配置Management Server
1) 使用root账号创建目录:mkdir /var/lib/mysql-cluster
2) 新建文件config.ini然后上传到mysql-cluster里面:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
Hostname=192.168.2.128
datadir=/var/lib/mysql-cluster
[ndbd]
Hostname=192.168.2.129
datadir=/usr/local/mysql/data/
[ndbd]
Hostname=192.168.2.24
datadir=/usr/local/mysql/data/
[MYSQLD]
Hostname=192.168.2.24
[MYSQLD]
Hostname=192.168.2.129
[MYSQLD]
3) 授权:chown -R mysql:mysql /var/lib/mysql-cluster
4) 切换到mysql用户:su – mysql
5) 启动管理服务:/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
6) 查看服务是否正常启动:netstat –lntpu
打印:
tcp  0  0 0.0.0.0:1186  0.0.0.0:*  LISTEN  2437/ndb_mgmd
看到1186端口开放了说明启动是正常的
2.3 配置Data Node
1) 新建文件myf然后上传到/etc里面:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#basedir        = /usr/local/mysql/
datadir        = /usr/local/mysql/data
#user            = mysql
#port            = 3306
#socket          = /tmp/mysql.sock
ndbcluster
ndb-connectstring=192.168.2.128
[mysql_cluster]
ndb-connectstring=192.168.2.128
*网上有些资料是直接改/usr/local/mysql/myf,我试了一下,无法启动,估计程序默认是读取/etc/myf
2) 切换到mysql用户:su – mysql
3) 启动数据节点服务:/usr/local/mysql/bin/ndbd –initial
第一次启动需要加参数:–initial,以后就不用加了,直接运行:/usr/local/mysql/bin/ndbd
4) 查看服务是否正常启动:netstat –lntpu
打印:
tcp  0  0 192.168.2.24:56806  0.0.0.0:*  LISTEN  4949/ndbd
tcp  0  0 192.168.2.24:44894  0.0.0.0:*  LISTEN  4949/ndbd
tcp  0  0 192.168.2.24:50531  0.0.0.0:*  LISTEN  4949/ndbd
看到ndbd了说明启动是正常的
2.4 配置SQL Node
1) 新建文件myf然后上传到/etc里面,和上面的Data Node里面的配置一样,如果上面的步骤已经做了,略去此步骤。
2) 切换到mysql用户:su – mysql
3) 设置管理员密码:安装mysql时start service失败
/usr/local/mysql/bin/mysqladmin -u root password '123'
/usr/local/mysql/bin/mysqladmin -u root -h LINUX129 password '123'
上面的命令行里面的123是新密码,LINUX129是机器名,这2条命令来自于安装mysql执行:scripts/mysql_install_db --user=mysql 后的打印日志
4) 复制mysqld到系统服务里面去:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
如果权限不够,可以先使用root用户授权:
chown -R mysql:mysql /etc/init.d/mysqld
5) 启动SQL节点服务:service mysqld start
或者/etc/init.d/mysqld start
或者/usr/local/mysql/bin/mysqld_safe --user=mysql &
6) 查看服务是否正常启动:netstat –lntpu
打印:
tcp  0  0 :::3306  :::*  LISTEN  2590/mysqld
看到3306端口开放了说明启动是正常的
3 常用命令或问题
1) ndb_mgmd管理命令:/usr/local/mysql/bin/ndb_mgm
执行之后就是管理控制台了,里面可以继续输入命令。
查看集里面的全部节点的状态:show
2) 停止集服务器的命令:/usr/local/mysql/bin/ndb_mgm -e shutdown
如果集配置有更新了:rm /usr/local/mysql/mysql-cluster/ndb_1_config.bin.1
3) 停止SQL节点的命令:/usr/local/mysql/bin/mysqladmin -uroot shutdown
4) SQL Node上连接MySQL:/usr/local/mysql/bin/mysql -u root –p
执行之后就是MySQL控制台了,里面可以继续输入命令。
测试集环境:
mysql> show databases;
打印:
+--------------------+
| Database          |
+--------------------+
| information_schema |
| mysql              |
| ndb_2_fs          |
| test              |
+--------------------+

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。