配置高可用性的MySQL服务器负载均衡群集(2)
作者:Eric 发布时间:2009-01-04 12:43:00
然后我们启动群集管理服务器:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
我们应该也需要在服务器启动时能够自动启动管理服务器,所以我们创建了一个非常简单的初始化
脚本和相应的启动连接:
loadb1.test.com:
echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults
三 配置MySQL群集节点(存储节点)
现在我们将分别在sql1.test.com和sql2.test.com上安装mysql-max-5.0.19:
sql1.example.com / sql2.example.com:
groupadd mysql
useradd -g mysql mysql
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
ln -s mysql-max-5.0.19-linux-i686-glibc23 mysql
cd mysql
scripts/mysql_install_db –user=mysql
chown -R root:mysql .
chown -R mysql data
cp support-files/mysql.server /etc/init.d/
chmod 755 /etc/init.d/mysql.server
update-rc.d mysql.server defaults
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin
然后我们在每个节点上创建MySQL配置文件/etc/my.cnf :
vi /etc/my.cnf
–
[mysqld]
ndbcluster
# IP address of the cluster management node
ndb-connectstring=192.168.0.103
[mysql_cluster]
# IP address of the cluster management node
ndb-connectstring=192.168.0.103
–
确认你在群集管理服务器中输入的是正确的IP地址。
下一步我们分别在每个群集节点上创建数据目录和启动MySQL服务器:
sql1.test.com / sql2.test.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
ndbd –initial
/etc/init.d/mysql.server start
(请记住:我们只是在第一次启动MySQL时或loadb1.test.com上面的
/var/lib/mysql-cluster/config.ini发生改变时,才使用ndbd –initial)
现在,是时候给MySQL root帐号设置密码了:
sql1.test.com / sql2.test.com:
mysqladmin -u root password yourrootsqlpassword
我们需要在服务器启动时,启动群集节点,所以我们创建一个ndbd初始化脚本和相应的
系统启动连接:
sql1.test.com / sql2.test.com:
echo ‘ndbd’ > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc.d ndbd defaults
四 测试MySQL群集
我们的MySQL群集配置工作已经完成,现在是测试它的时间了。在群集管理服务器
(loadb1.test.com)上,运行群集管理客户端ndb_mgm来检查群集节点是否连接:
loadb1.test.com:
ndb_mgm
你将会看到这些:
– NDB Cluster — Management Client –
ndb_mgm>
在命令行输入 show;
show;
输出的信息应该是这样的:
ndb_mgm> show;
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.101 (Version: 5.0.19, Nodegroup: 0, Master)
id=3 @192.168.0.102 (Version: 5.0.19, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.103 (Version: 5.0.19)
[mysqld(API)] 2 node(s)
id=4 @192.168.0.101 (Version: 5.0.19)
id=5 @192.168.0.102 (Version: 5.0.19)
ndb_mgm>
如果你看到你的节点都已经连接上了。那么一切都很顺利!
输入
quit;
退出 ndb_mgm 客户端控制台。
现在我们在sql1.test.com节点上创建一个测试数据库,并创建一个测试表,
填入一些测试数据:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
CREATE TABLE testtable (i INT) ENGINE=NDBCLUSTER;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable;
quit;
(看看上面这个CREATE语句:我们想群集起来的所有数据库的表,必须使用 ENGINE=NDBCLUSTER!
如果你使用其它的ENGINE,那么群集将不会工作!)
SELECT出的结果应该是:
mysql> SELECT * FROM testtable;
+——+
| i |
+——+
| 1 |
+——+
1 row in set (0.03 sec)
现在我们在sql2.test.com节点上创建相同的数据库(是,我们仍然要创建它,但是在testtable创建之后
数据将会被复制到sql2.test.com,因为testtable是使用ENGINE=NDBCLUSTER):
sql2.test.com:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
SELECT * FROM testtable;
SELECT出的结果应该是和上面的sql1.test.com的结果相同:
mysql> SELECT * FROM testtable;
+——+
| i |
+——+
| 1 |
+——+
1 row in set (0.04 sec)
我们看到数据已经从sql1.test.com节点复制到sql2.example.com节点了。现在我们
向testtable中插入另外一行:
sql2.test.com:
INSERT INTO testtable () VALUES (2);
quit;
现在让我们回到sql1.example.com节点上,检查是否能够看见新插入的那一行:
sql1.example.com:
mysql -u root -p
USE mysqlclustertest;
SELECT * FROM testtable;
quit;


猜你喜欢
- 一、开发工具Python版本:3.6.4相关模块:DecryptLogin模块;argparse模块;以及一些python自带的模块。二、环
- 小小程序猿SQL Server认知的成长 1.没毕业或工作没多久,只知道有数据库、SQL这么个东东,浑然分不清SQL和Sql Server
- matplotlib官方文档:https://matplotlib.org/stable/users/index.htmlmatplotli
- 这些包可以独立使用,也可以与其他包一起使用以满足复杂的业务需求。Integration Services 可以提取和转换来自多种源(如 XM
- 引言 近期公司vue前端项目需求:实现弹窗的拖拽,四边拉伸及对角线拉伸,以及弹窗边界处理
- 一、遇到的问题在向数据库中存入汉字时遇到这样的问题:Cause: java.sql.SQLException: Incorrect stri
- Pyqt5安装并配置到pycharm方法:教你如何用pycharm安装pyqt5及其相关配置一、简介QLabel是界面中的标签类,继承自QF
- 本文主要介绍使用Python调用ADB命令实现实时监控logcat关键字的功能采用多进程,可同时监控多个设备,监控多个关键字。需要配置ADB
- 数据库,顾名思义,就是一个存储数据的大仓库,涵盖了多个方面的知识和应用。其优点和特性颇多,为多种编程语言的高效运行都提供了可靠又准确的信息来
- 最近在做文章页盖楼显示的项目,数据来源是跟贴系统生成的UTF8格式的JSON数据。文章页的HTML编码格式是GB2312,在javascri
- 网上找了挺久,感觉方法都不合适我这新手,想了个歪点子from tkinter import *from tkinter import mes
- python每天在指定时间段运行程序及关闭程序场景程序需要在每天某一时间段内运行,然后在某一时间段内停止该程序。程序:from dateti
- 如下所示:# 输入数字使其反向输出num = int(input("请输入一个数:"))i = 0num1 = numw
- Portable Document Format(可移植文档格式),或者PDF是一种文件格式,可以用于跨操作系统的呈现和文档交换。尽管PDF
- Python中的缩进(Indentation)决定了代码的作用域范围。这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号{}符
- 第一步:保存下列文件为:CALENDAR.ASP <%@ LANGUAGE = V
- http 模块简介Python3 中的 http 包中含有几个用来开发 HTTP 协议的模块。http.client 是一个底层的 HTTP
- 如下所示:<div id="app"> <h1>我是直接写在构造器里的模板1</h1&g
- 时间库—arrow使用背景日期时间处理在实际应用场景中无处不在,所以这也成了编程语言中必不可少的模块,Python 也不例外。但是,你知道在
- 目录前期准备界面编写截图功能实现OCR实现内容显示总结前期准备在这个阶段主要准备整个小程序的结构,既然要实现ocr,那么输入就是一张图片,而