关闭
Hit
enter
to search or
ESC
to close
May I Suggest ?
#leanote #leanote blog #code #hello world
Okeeper's Blog
Home
Archives
Tags
DevOps
软件笔记
Spring
学习
JVM系列
关于我
Centos6.5 安装 Mysql Cluster 7.4.1
无
446
0
0
zhangyue
# 一、准备 软件环境Centos 6.5、MySQL Cluster 7.4.1 硬件:两台虚拟机 192.168.212.16、192.168.212.17 集群节点划分: 管理节点:192.168.212.16 Sql节点:192.168.212.16、192.168.212.17 数据节点:192.168.212.16、192.168.212.17 # 二、安装 ``` #下载安装包 wget https://cdn.mysql.com//Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.14-linux-glibc2.5-x86_64.tar.gz #解压 tar -zxvf mysql-cluster-gpl-7.4.14-linux-glibc2.5-x86_64.tar.gz #将解压包遇到/usr/local/ mv local–zxvf mysql-cluster-gpl-7.4.14-linux-glibc2.5-x86_64 /usr/local/mysql #进入解压根目录 cd /usr/local #添加mysql用户组及用户,修改相关目录权限: groupadd mysql useradd mysql -g mysql #授权 chown -R root . chown -R mysql data chgrp -R mysql . #安装数据库脚本: scripts/mysql_install_db --user=mysql #开机启动 cp support-files/mysql.server /etc/rc.d/init.d/ chmod +x /etc/rc.d/init.d/mysql.server chkconfig --add mysql.server #如果此台是管理节点,复制管理节点命令到环境目录中 cp /usr/local/mysql/bin/ndbmtd /usr/local/bin/ndbmtd chmod +x /usr/local/bin/ndb* #数据节点命令 cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin chmod +x /usr/local/bin/ndb_mgm* #修改环境变量 #vi /etc/profile 添加 export PATH=$PATH:/usr/local/mysql/bin source /etc/profile ``` 注意:如果执行以上命令报如下错误: Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 执行如下命令安装libaio # yum install -y libaio # 三、配置 ## 编辑数据节点和sql节点配置 `vi /etc/my.cnf`,添加如下参数 ``` [mysqld] ndbcluster # run NDB storage engine ndb-connectstring=192.168.212.16 #管理节点ip [mysql_cluster] ndb-connectstring=192.168.212.16 #管理节点ip ```  ## 管理节点配置 ``` mkdir /var/lib/mysql-cluster cd /var/lib/mysql-cluster vi config.ini ``` vi config.ini 配置如下 ``` [ndbd default] NoOfReplicas=2 DataMemory=500M IndexMemory=300M [TCP DEFAULT] portnumber=2202 [NDB_MGMD] hostname=192.168.212.16 #管理节点ip datadir=/var/lib/mysql-cluster/ [NDBD] #数据节点1 hostname=192.168.212.16 datadir=/usr/local/mysql/data/ NodeId=1 [NDBD]#数据节点2 hostname=192.168.212.17 datadir=/usr/local/mysql/data/ NodeId=2 [MYSQLD] #sql节点1 hostname=192.168.212.16 NodeId=81 [MYSQLD]#sql节点2 hostname=192.168.212.17 NodeId=82 ``` 注:配置时, []右边的注释不要加上,否则系统不认。 [NDBD DEFAULT]:表示每个数据节点的默认配置在每个节点的[NDBD]中不用再写这些选项,只能有一个。 [NDB_MGMD]:表示管理节点的配置,只有一个。 [NDBD]:表示每个数据节点的配置,可以有多个。 [MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。 # 启动 节点的启动顺序为管理节点->数据节点->SQL节点 ## 1.启动管理节点 ``` cd /usr/local/mysql/bin/ ./ndb_mgmd -f/var/lib/mysql-cluster/config.ini ``` ndb_mgmd是mysqlcluster的管理服务器,后面的-f表示后面的参数是启动的参数配置文件。如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中 ## 2.启动数据节点 安装后第一次启动数据节点时要加上--initial参数,其它时候不要加,除非是在备份、恢复或配置变化后重启时 ``` /usr/local/mysql/bin/ndbd --initial 2015-12-16 00:12:41 [ndbd] INFO -- Angel connected to '192.168.80.140:1186' 2015-12-16 00:12:41 [ndbd] INFO -- Angel allocated nodeid: 36 ``` 出现这种信息表示启动成功. 同样方法,启动另外一个机器 ## 3.启动数据节点 ``` service mysqld start ``` 同样方法,启动另外一个机器 # 四、测试 ## 检查集群状态 ``` /usr/local/mysql/bin/ndb_mgm ndb_mgm> show ```  到此 MySQL cluster 安装完毕! ## 测试数据同步 连接数据库 ``` mysql mysql> show tables; Empty set (0.00 sec) mysql> create table test1 (id bigint,name varchar(50)); Query OK, 0 rows affected (0.23 sec) mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | test1 | +----------------+ 1 row in set (0.01 sec) mysql> insert into test1 (id,name) values(1,'hello'); Query OK, 1 row affected (0.03 sec) mysql> select * from test1 -> ; +------+-------+ | id | name | +------+-------+ | 1 | hello | +------+-------+ 1 row in set (0.00 sec) ``` 然后到192.168.212.17连接数据并未发现数据同步过来 ``` mysql> show tables; Empty set (0.00 sec) ``` 这是怎么回事呢,原来Mysql Cluster 只支持存储引擎为`ndbcluster`,而建表时如果未指定表存储引擎默认是`InnoDB` 官方文档是这么说的:  所以我们将`test1`存储引擎修改为`ndbcluster` ``` mysql> ALTER TABLE test1 ENGINE=NDBCLUSTER; Query OK, 1 row affected (1.47 sec) Records: 1 Duplicates: 0 Warnings: 0 ``` 修改完之后立马能在`192.168.212.17`中看到同步过来的数据 ``` mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | test1 | +----------------+ 1 row in set (0.00 sec) mysql> select * from test1; +------+-------+ | id | name | +------+-------+ | 1 | hello | +------+-------+ 1 row in set (0.00 sec) ``` # 杂记 ### 1.若出现`ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)` 使用一下命令即可解决 ``` ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock` ``` ### 2.防火墙策略调整: ``` iptables -A INPUT -s 192.168.100.0/24 -i eth2 -p tcp -m tcp -j ACCEPT ``` ###修改密码方法一: ``` mysqladmin -u root password root (更改密码) (没有新密码前执行) mysqladmin -u root -p 'xxxxxx' password 'NewPassword'; (安装完毕后启动mysqld执行) ``` 修改密码方法二: ``` UPDATE mysql.user SET Password=PASSWORD('Password01!') WHERE User='root'; FLUSH PRIVILEGES; ``` 修改密码方法三: 让mysql以不带安全控制的方式启动: ``` # bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking; ``` 然后再用前面2种方法修改密码 多大多大解决MySQL客户端工具连接SQL Node出现1130的异常,在MySQL控制台下执行: ### 如果你想myuser使用mypassword从任何主机连接到mysql服务器的话。 ``` mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; ``` ### 如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码的话。 ``` mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; ``` ### 如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码的话。 ``` mysql>GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; ```
觉得不错,点个赞?
Please enable JavaScript to view the
comments powered by Disqus.
comments powered by
Disqus
文章目录