首页 > 代码库 > Mysql高开用集群搭建

Mysql高开用集群搭建

环境

rhel6.5x64

192.168.20.11   mysql11

192.168.29.12   mysql12

拓扑

技术分享

环境

关闭iptables

关闭selinux

yum -y install ncurses-devel gcc gcc-c++make autoconf automake zlib zlib-devel openssl openssl-devel pcre-devel

开始安装配置mysql11

[root@mysql11 ~]# tar -xf MySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar
[root@mysql11 ~]# scpMySQL-Cluster-gpl-7.3.7-1.el6.x86_64.rpm-bundle.tar root@192.168.20.12:/root
[root@mysql11 ~]# yum -y remove mysql*
[root@mysql11 ~]# mkdir /var/lib/mysql
[root@mysql11 ~]# mkdir /var/lib/mysql-cluster
[root@mysql11 ~]# mkdir /var/run/mysqld
[root@mysql11 ~]# rpm -ivhMySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm
[root@mysql11 ~]# id mysql
uid=498(mysql) gid=498(mysql)groups=498(mysql)
[root@mysql11 ~]# chown mysql:mysql -R/var/lib/mysql
[root@mysql11 ~]# chown mysql:mysql -R/var/lib/mysql-cluster
[root@mysql11 ~]# chown mysql:mysql -R/var/run/mysqld/

 

配置mysql12

[root@mysql12 ~]# yum remove mysql -y
[root@mysql12 ~]# rpm -qa | grep mysql*
mysql-libs-5.1.71-1.el6.x86_64
[root@mysql12 ~]# rpm -e --nodepsmysql-libs-5.1.71-1.el6.x86_64

其实我觉得/var/lib/mysql  /var/lib/mysql-cluster/var/run/mysqld这三个路径会自动生成

来试试

[root@mysql12 ~]# rpm -ivhMySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64.rpm

看看,这里有了

[root@mysql12 ~]# ls /var/lib/mysql
ibdata1     ib_logfile1  ndbinfo             RPM_UPGRADE_HISTORY      test
ib_logfile0 mysql       performance_schema RPM_UPGRADE_MARKER-LAST
[root@mysql12 ~]# ls/var/lib/mysql-cluster/
[root@mysql12 ~]# mkdir/var/lib/mysql-cluster
mkdir: cannot create directory`/var/lib/mysql-cluster‘: File exists
[root@mysql12 ~]# id mysql
uid=498(mysql) gid=498(mysql)groups=498(mysql)
[root@mysql12 ~]# ls  /var/run/mysqld
[root@mysql12 ~]# mkdir /var/run/mysqld
mkdir: cannot create directory`/var/run/mysqld‘: File exists
[root@mysql12 ~]# /var/run/mysqld
-bash: /var/run/mysqld: is a directory
[root@mysql12 ~]# ll -d /var/run/mysqld
drwxr-xr-x 2 root root 4096 Aug 27 23:29/var/run/mysqld
[root@mysql12 ~]# ll -d/var/lib/mysql-cluster
drwxr-xr-x 2 root root 4096 Aug 27 23:29/var/lib/mysql-cluster
[root@mysql12 ~]# ll -d /var/lib/mysql
drwxr-xr-x 6 mysql mysql 4096 Aug 27 23:53/var/lib/mysql
[root@mysql12 ~]#

改成mysql用户所有吧

[root@mysql12 ~]# chown mysql:mysql -R/var/lib/mysql
[root@mysql12 ~]# chown mysql:mysql -R/var/lib/mysql-cluster
[root@mysql12 ~]# chown mysql:mysql -R/var/run/mysqld/

 

配置mysql11成为管理节点

主要是两个命令:ndb_mgmd ndb_mgm

[root@mysql11 ~]# which ndb_mgm
/usr/bin/ndb_mgm
[root@mysql11 ~]# rpm -qf /usr/bin/ndb_mgm
MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64
[root@mysql11 ~]# which ndb_mgmd
/usr/sbin/ndb_mgmd
[root@mysql11 ~]# rpm -qf/usr/sbin/ndb_mgmd
MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64

 生成配置文件

[root@mysql11 ~]# cd /var/lib/mysql-cluster
[root@mysql11 mysql-cluster]# vimconfig.ini

#配置文件的内容:

[ndbd default]

NoOfReplicas=2                 #数据写入数量。2 表示两份,这样当其中一个存储节点坏了,另一个还可以正常使用。

DataMemory=200M                 #配置数据存储可以使用的内存

IndexMemory=100M                #配置缓存索引可以使用的内存

 

[ndb_mgmd]

id=1

datadir=/var/lib/mysql-cluster                  # 指定存放管理结点的日志

HostName=192.168.20.11                         #管理结点的 IP 地址。本机 IP

 

###### data node options:                        #存储结点

 

[ndbd]

HostName=192.168.20.11

DataDir=/var/lib/mysql                               #mysql 数据存储路径

id=2

 

[ndbd]

HostName=192.168.20.12

DataDir=/var/lib/mysql

id=3

 

# SQL node options:                            #关于 SQL 结点

[mysqld]

HostName=192.168.20.11                         # 指定可以连接 ndbd 引擎的 sql 结点。

id=4

 

[mysqld]

HostName=192.168.20.12                         # 指定可以连接 ndbd 引擎的 sql 结点。

id=5

 

mysql11数据节+SQL 节点配置文档:

配置的内容要手动写呢!

[root@mysql11 ~]# vim  /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql                                          #mysql数据存储路径[单独的SQL节点不需要这行]

ndbcluster                                                                #启动 ndb 引擎

ndb-connectstring=192.168.20.11                    # 管理节点 IP 地址

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

[mysql_cluster]

ndb-connectstring=192.168.20.11                    # 管理节点 IP 地址

 再装个客户端吧

[root@mysql11 ~]# rpm -ivhMySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

 

mysql12数据节+SQL 节点配置文档

客户端装上

[root@mysql12 ~]# rpm -ivhMySQL-Cluster-client-gpl-7.3.7-1.el6.x86_64.rpm

 把mysql11上 的配置文件弄过来吧

[root@mysql12 ~]# scp root@192.168.20.11:/etc/my.cnf  /etc/my.cnf

 

SQL Cluster 初次启动命令以及用户密码更改调整:(请严格按照次序启动)

启动 mysql cluster  

先启动顺序:管理结点服务  需要手动启动 ndbd 数据结点服务-sql 结点服务

关闭顺序:  关闭管理结点服务  关闭管理结点服务后,nbdb 数据结点服务会自动关闭-》手动把 sql结点服务关了。

 

执行初次启动前请先确认将两台机器的防火墙关闭(service iptables stop 或者设定防火墙端口可通,两个端口即:通讯端口 1186、数据端口 3306 )

 

启动管理结点命令:

[root@mysql11 ~]# ndb_mgmd -f/var/lib/mysql-cluster/config.ini
MySQL Cluster Management Server mysql-5.6.21ndb-7.3.7
2016-08-28 00:28:34 [MgmtSrvr] INFO     -- The default config directory‘/usr/mysql-cluster‘ does not exist. Trying to create it...
2016-08-28 00:28:34 [MgmtSrvr] INFO     -- Sucessfully created config directory
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 7: [MGM] id is deprecated, useNodeId instead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 16: [DB] id is deprecated, useNodeId instead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 21: [DB] id is deprecated, use NodeIdinstead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 26: [API] id is deprecated, useNodeId instead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 30: [API] id is deprecated, useNodeId instead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 30: Cluster configuration warning:
 arbitrator with id 1 and db node with id 2 on same host 192.168.20.11
 Running arbitrator on the same host as a database node may
 cause complete cluster shutdown in case of host failure.
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 7: [MGM] id is deprecated, useNodeId instead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 16: [DB] id is deprecated, useNodeId instead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 21: [DB] id is deprecated, use NodeIdinstead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 26: [API] id is deprecated, useNodeId instead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 30: [API] id is deprecated, useNodeId instead
2016-08-28 00:28:34 [MgmtSrvr] WARNING  -- at line 30: Cluster configuration warning:
 arbitrator with id 1 and db node with id 2 on same host 192.168.20.11
 Running arbitrator on the same host as a database node may
 cause complete cluster shutdown in case of host failure.
[root@mysql11 ~]#

 

#说明:仲裁员 ID1 DBID2)节点上同一主机192.168.20.11

在同一台主机作为数据库节点上运行仲裁人

造成完整的集群关机的情况下主机发生故障。虽然报了一些警告,但是,我们已经执行成功了。

 

查看端口号:

[root@mysql11 ~]# netstat -anptu | grep 1186
tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      2084/ndb_mgmd       
tcp        0      0 127.0.0.1:1186              127.0.0.1:59216             ESTABLISHED 2084/ndb_mgmd       
tcp        0      0 127.0.0.1:59216             127.0.0.1:1186              ESTABLISHED 2084/ndb_mgmd       
[root@mysql11 ~]#


查看日志存储位置:

[root@mysql11 ~]# ll/var/lib/mysql-cluster/
total 16
-rw-r--r-- 1 root root 401 Aug 28 00:11config.ini
-rw-r--r-- 1 root root 699 Aug 28 00:28ndb_1_cluster.log
-rw-r--r-- 1 root root  26 Aug 28 00:28 ndb_1_out.log
-rw-r--r-- 1 root root   4 Aug 28 00:28 ndb_1.pid
[root@mysql11 ~]#

启动存储结点服务:

mysql11

[root@mysql11 ~]# ndbd --initial
2016-08-28 00:32:41 [ndbd] INFO     -- Angel connected to ‘192.168.20.11:1186‘
2016-08-28 00:32:41 [ndbd] INFO     -- Angel allocated nodeid: 2
[root@mysql11 ~]#

 mysql12

[root@mysql12 ~]# ndbd --initial
2016-08-28 00:33:09 [ndbd] INFO     -- Angel connected to ‘192.168.20.11:1186‘
2016-08-28 00:33:09 [ndbd] INFO     -- Angel allocated nodeid: 3
[root@mysql12 ~]#

 

启动 SQL 结点服务:

mysql11

[root@mysql11 ~]# mysqld_safe--defaults-file=/etc/my.cnf &
[1] 2166
160828 00:33:49mysqld_safe Logging to ‘/var/log/mysqld.log‘.
160828 00:33:50 mysqld_safe Starting mysqlddaemon with databases from /var/lib/mysql

 mysql12

[root@mysql12 ~]# mysqld_safe--defaults-file=/etc/my.cnf &
[1] 1782
160828 00:34:56mysqld_safe Logging to ‘/var/log/mysqld.log‘.
160828 00:34:56 mysqld_safe Starting mysqlddaemon with databases from /var/lib/mysql

 

测试:

 

查看 mysql 集群状态:

[root@mysql11 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at:192.168.20.11:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2node(s)
id=2@192.168.20.11  (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0, *)
id=3@192.168.20.12  (mysql-5.6.21 ndb-7.3.7, Nodegroup: 0)
 
[ndb_mgmd(MGM)]         1 node(s)
id=1@192.168.20.11  (mysql-5.6.21 ndb-7.3.7)
 
[mysqld(API)]   2 node(s)
id=4@192.168.20.11  (mysql-5.6.21 ndb-7.3.7)
id=5@192.168.20.12  (mysql-5.6.21 ndb-7.3.7)
 
ndb_mgm>

测试集群,数据同步:

mysql11

先查看下默认生成的密码

[root@mysql11 ~]# cat /root/.mysql_secret
# The random password set for the root userat Sat Aug 27 23:31:54 2016 (local time): oPjyozXIA05TSXb4


第一次登录

[root@mysql11 ~]# mysql -u root -poPjyozXIA05TSXb4
Warning: Using a password on the commandline interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version:5.6.21-ndb-7.3.7-cluster-gpl
 
Copyright (c) 2000, 2014, Oracle and/or itsaffiliates. All rights reserved.
 
Oracle is a registered trademark of OracleCorporation and/or its
affiliates. Other names may be trademarksof their respective
owners.
 
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ toclear the current input statement.
 
mysql>

mysql> show databases;                   #第一使用数据库时,必须修改密码

ERROR 1820 (HY000): You must SET PASSWORDbefore executing this statement

mysql>

mysql> set password=password(‘111111‘);

Query OK, 0 rows affected (0.12 sec)

 

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| ndb_2_fs           |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

6 rows in set (0.10 sec)

 

mysql>

mysql> exit

Bye

来使用刚才修改的密码登录看

[root@mysql11 ~]# mysql -uroot -p111111

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| ndb_2_fs           |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

6 rows in set (0.01 sec)

 

mysql12

先查看默认密码

[root@mysql12 ~]# cat /root/.mysql_secret
# The random password set for the root userat Sat Aug 27 23:53:13 2016 (local time): MjcJWscCjVpvnfDX

 默认密码登录以后改密码

[root@mysql12 ~]#  mysql -uroot -pMjcJWscCjVpvnfDX

Warning: Using a password on the commandline interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.6.21-ndb-7.3.7-cluster-gpl

 

Copyright (c) 2000, 2014, Oracle and/or itsaffiliates. All rights reserved.

 

Oracle is a registered trademark of OracleCorporation and/or its

affiliates. Other names may be trademarksof their respective

owners.

 

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ toclear the current input statement.

 

mysql> set password=password(‘111111‘);

Query OK, 0 rows affected (0.17 sec)

 

mysql> exit

Bye

使用修改的密码登录

[root@mysql12 ~]# mysql -uroot -p111111

Warning: Using a password on the commandline interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version:5.6.21-ndb-7.3.7-cluster-gpl MySQL Cluster Community Server (GPL)

 

Copyright (c) 2000, 2014, Oracle and/or itsaffiliates. All rights reserved.

 

Oracle is a registered trademark of OracleCorporation and/or its

affiliates. Other names may be trademarksof their respective

owners.

 

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ toclear the current input statement.

 

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| ndb_3_fs           |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

6 rows in set (0.07 sec)

 

mysql>

插入数据:

mysql11

[root@mysql11 ~]# mysql -uroot -p111111

mysql> create database abiao;

Query OK, 1 row affected (0.38 sec)

 

mysql12

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| abiao             |

| mysql              |

| ndb_3_fs           |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

7 rows in set (0.00 sec)

 

关闭 mysql 集群顺序:

关闭管理节点服务-》关闭管理节点时,数据结点服务自动关闭–》 需要手动关闭 SQL 结点服务

关闭管理节点

[root@mysql11 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
 
ndb_mgm> shutdown
Node 2: Cluster shutdown initiated
Node 3: Cluster shutdown initiated
Node 2: Node shutdown completed.
3 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server toshutdown.
Node 3: Node shutdown completed.
ndb_mgm> exit

看看进程,

[root@mysql11 ~]# ps -axu | grep  ndbd
Warning: bad syntax, perhaps a bogus ‘-‘?See /usr/share/doc/procps-3.2.8/FAQ
root      2382  0.0  0.1 103244  856 pts/1    S+   00:50  0:00 grep ndbd
[root@mysql11 ~]#

已经关掉了节点

手动关闭 SQL 结点服务

mysql11

[root@mysql11 ~]#  ps -axu | grep mysql
Warning: bad syntax, perhaps a bogus ‘-‘?See /usr/share/doc/procps-3.2.8/FAQ
root      2166  0.0  0.0 106196  192 pts/0    S    00:33  0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf
mysql     2291  1.4 77.8 1364648 504800pxs/0  Sl   00:33  0:15 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr--datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql--log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid
root      2359  0.0 0.5 125800  2748 pts/2    S+  00:39   0:00 mysql -uroot -px xxxx
root      2387  0.0  0.1 103244  860 pts/1    S+   00:52  0:00 grep mysql
[root@mysql11 ~]# kill -9 2166
[root@mysql11 ~]# kill -9 2166
[root@mysql11 ~]# ps -axu | grep mysql
Warning: bad syntax, perhaps a bogus ‘-‘?See /usr/share/doc/procps-3.2.8/FAQ
root      2359  0.0  0.5 125800 2748 pts/2    S+   00:39  0:00 mysql -uroot -px xxxx
root      2394  0.0  0.1 103244  860 pts/1    S+   00:54  0:00 grep mysql

 

mysql12

[root@mysql12 ~]# ps -axu | grep mysql
Warning: bad syntax, perhaps a bogus ‘-‘?See /usr/share/doc/procps-3.2.8/FAQ
root      1782  0.0  0.0 106196   20 pts/0    S    00:34  0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf
mysql     1907  1.6 46.6 1364288 302192pxs/0  Sl   00:34  0:20 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr--datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql--log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid
root      1978  1.0  0.1 103248  860 pts/1    S+   00:54  0:00 grep mysql
[root@mysql12 ~]# kill -9 1782
[root@mysql12 ~]# kill -9 1907
[root@mysql12 ~]# ps -axu | grep mysql
Warning: bad syntax, perhaps a bogus ‘-‘?See /usr/share/doc/procps-3.2.8/FAQ
root      1981  0.0  0.1 103248  860 pts/1    S+   00:55  0:00 grep mysql
[root@mysql12 ~]#



因为 是笔记,所以全篇都是代码


Mysql高开用集群搭建