mysql-cluster集群

mysql-cluster集群
管理节点   192.168.1.152
SQL节点和数据节点     192.168.1.233       192.168.1.192
如果已经存在MySql,需要先删除,方法:yum remove mysql或者手动删除rpm -e  mysql


1、查看是否存在mysql用户  
  安装目录为/tmp/mysql
  修改目录的默认用户和组  
  检查目录的权限  
  检测/tmp    是否已经开启的其他用户可以进入目录的权限

2、管理节点-------------------------------------------------------------------------------------------------------------
  /tmp/mysql/scripts/mysql_install_db --basedir=/tmp/mysql --datadir=/tmp/mysql/data --user=mysql &  #初始化数据库

     *cp -rf /tmp/mysql/bin/ndb_mgm* /usr/local/bin/ #复制ndb节点管理命令到本地,方便使用

  修改主配置文件  my.cnf-----------------------------------------------------------------
  因为服务器中已经安装了mysql。所以不能共享my.cnf文件。需要另为建。目录/tmp/mysql/my.cnf

  vi my.cnf

  [MYSQLD]
user = mysql
socket = /tmp/mysql.sock
basedir = /tmp/mysql #安装目录
datadir = /tmp/mysql/data #数据库存放目录
character-sets-server=UTF8
ndbcluster #运行NDB存储引擎
ndb-connectstring=192.168.1.152
lower_case_table_names=1 #表名是否区分大小写1为不区分,不然linux下表名是区分大小写的
[MYSQL_CLUSTER]
ndb-connectstring=192.168.1.152 #Mysql Cluster管理节点IP


修改mysql集群配置文件  目录设置为/var/lib/mysql-cluster/config.ini------------------------
vi /var/lib/mysql-cluster/config.ini
[ndbd default]
NoOfReplicas=2 #定义在Cluster环境中相同数据的份数,最大为4
DataMemory=256M #分配的数据内存大小,根据本机服务器内存适量来分配
IndexMemory=256M #设定用于存放索引(非主键)数据的内存段大小
#一个NDB节点能存放的数据量是会受到DataMemory和IndexMemory两个参数设置的约束,两者任何一个达到限制数量后,都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。
[ndb_mgmd]
nodeid=1
hostname=192.168.1.152
datadir=/var/lib/mysql-cluster/
[ndbd]
nodeid=2
hostname=202.205.109.129
datadir=/tmp/mysql/data
[ndbd]
nodeid=3
hostname=192.168.1.233
datadir=/tmp/mysql/data
[mysqld]
nodeid=4
hostname=202.205.109.129
[mysqld]
nodeid=5
hostname=192.168.1.233
保存退出!

chown mysql.mysql /var/lib/mysql-cluster/config.ini


管理节点OK------------------

/tmp/mysql/bin/ndb_mgmd
--defaults-file=/tmp/mysql/my.cnf \   #指定mysql主配置文件
--config-dir=/tmp/mysql/mysql-cluster/  #节点存储
-f /var/lib/mysql-cluster/config.ini  \   #指定集群配置文件
--initial                   #第一次启动


netstat -tuplna | grep 1186 #默认连接端口1186,启动成功
tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 1369/ndb_mgmd


bin/ndb_mgm  进入命令 可以使用show 查看集群情况




3、SQL节点和数据节点-----------------------------------------------------------------------------------------------------------

/tmp/mysql-2/scripts/mysql_install_db --basedir=/tmp/mysql-2 --datadir=/tmp/mysql-2/data --user=mysql & #初始化数据库
  因为此节点中已经存在mysql服务,不可使用下面的命令
                           *cp /tmp/mysql/support-files/mysql.server /etc/init.d/mysqld
                           *cp /tmp/mysql/support-files/medium.cnf /etc/my.cnf
                           *chmod +x/etc/init.d/mysqld

修改主配置文件  目录 /tmp/mysql/my.cnf
               [MYSQLD]
               user=mysql
               character_set_server=utf8
               ndbcluster
               ndb-connectstring=192.168.1.152
               default-storage-engine=ndbcluster #设置默认是NDB存储引擎
               datadir=/tmp/mysql/data
               basedir=/tmp/mysql
               [MYSQL_CLUSTER]
               ndb-connectstring=192.168.1.152 #mysql cluster 管理节点IP



数据节点:/tmp/mysql/bin/ndbd \            ------------------------------------------------------------------
--defaults-file=/tmp/mysql/my.cnf  \ # 指定配置文件
--initial
/tmp/mysql/bin/ndbd  --defaults-file=/tmp/mysql/my.cnf --initial



SQL节点:/tmp/mysql/bin/mysqld_safe --defaults-file=/tmp/mysql/my.cnf --user=mysql   &  ---------






管理和维护命令
关闭mysql集群:ndb_mgm -e shutdown
重启mysql集群:ndb_mgmd -f /var/lib/mysql-cluster/config.ini

重新加载集群文件信息,需要停止当前的管理节点,重新开启。

重启数据节点:/usr/local/mysql/bin/ndbd
启动SQL节点:/usr/local/mysql/bin/mysqld_safe --user=mysql & 或 service mysqld restart

查看mysql状态:ndb_mgm -e show
启动顺序:
管理节点 -> 数据节点 -> SQL节点
关闭顺序:
SQL节点 -> 数据节点 -> 管理节点


测试:----------------------------------------------------------------------------------------------------
mysql -u root -p
Mysql>create database test;
Mysql>use test;
Mysql>create table abc (id int) engine=ndbcluster;#指定数据库表的引擎为NDB,否则同步失败
Mysql>Insert into abc ()values (1);
Mysql>select * from abc;

在向集群中导出,创建表时,在一个节点中创建表了,但是其他节点没有同步。问题是:要注意设置表类型:ENGINE=ndbcluster 为集群格式,否则不能在集群中同步数据。
-------------------------------------------------------------------

question:1
SQL节点无法正常启动
如果之前安装过mysql和mysql-server而且做过实验的话,安装会报错,提示版本冲突,需要做一下的事情
   yum remove mysql-server mysql mysql-libs


question:2
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
需要注释/etc/my.cnf里的skip-federated注释掉即#skip-federated。
杀掉已经启动的进程 kill -9 *

question:3
mysqlbug    Finding system information for a MySQL bug report
test -x
Could not find a text editor. (tried emacs)
You can change editor by setting the environment variable VISUAL.
If your shell is a bourne shell (sh) do
VISUAL=your_editors_name; export VISUAL
If your shell is a C shell (csh) do
setenv VISUAL your_editors_name

[mysql@localhost ~]$ VISUAL=vim; export VISUAL


question:4
在数据节点中,data目录中存在测试数据;但在运行bin/mysql  执行show databases; 无法看到新建的数据库。

登录mysql数据库使用的用户没有查看数据库的权限。可以使用select user();查看使用的用户名。
如果root用户被限制了权限。可以从正常的数据库中拷贝/data/mysq/user* 文件覆盖一下。注意覆盖时需要停止mysql运行。

你可能感兴趣的:(mysql,mysql,cluster)