mysql cluster 安装完毕后,首先管理节点
1.在服务器 192.168.7.187 的 /home/zzx2/ 下创建目录 mysql-cluster ,并在目录中创建配置文件 config.ini
mkdir /home/zzx2/mysql-cluster
cd /home/zzx2/mysql-cluster
touch config.ini
2.根据这里的测试集群环境,配置 config.ini
[NDBD DEFAULT]
NoOfReplicas=1
#每个数据节点的镜像数量
DataMemory=500M
#每个数据节点中给数据分配的内存
IndexMemory=300M
#每个数据节点中给索引分配的内存
[TCP DEFAULT]
portnumber=2202
#数据节点的默认连接端口
[NDB_MGMD]
#配置管理节点
id=1
hostname=192.168.7.187
#管理节点 IP
datadir=/home/zzx2/mysql-cluster
#管理节点数据目录
[NDBD]
id=2
hostname=192.168.7.187
datadir=/home/zzx2/mysql/data
[NDBD]
id=3
hostname=192.168.7.55
datadir=/home/zzx2/mysql/data
[MYSQLD]
#mysqld process
hostname=192.168.7.187
[MYSQLD]
hostname=192.168.7.55
上面的配置文件中,包括很多的组,组名用 "[]" ,三类节点组配置:
[NDB_MGMD]:表示管理节点的配置,只能有一个
[NDBD DEFAULT]:表示每个数据节点的默认配置,只能又一个
[NDBD]:表示每个数据节点的配置,可以有多个
[MYSQLD]:表示 SQL 节点的配置,可以有多个
每个节点都要有一个独立的 id 号,可以手工填写,也可以不写,系统会按照配置文件的填写顺序自动分配
3.sql 节点 跟 数据节点的配置
在 mysql 的 my.cnf 中增加 :
# Options for mysqld process:
[MYSQLD]
ndbcluster
#运行 ndb 存储引擎
ndb-connectstring=192.168.7.187
#定位管理节点
# Options for ndbd process:
[MYSQL_CLUSTER]
ndb-connectstring=192.168.7.187
#定位管理节点
SQL 节点和数据节点的不同之处在于数据节点只需要配置上述选项即可,SQL 节点还需要配置 mysql 服务器的其他选项
使用 mysql cluster
cluster 的启动
启动顺序:管理节点->数据节点->SQL节点
首先在管理节点上运行 ndb_mgmd -f ./config.ini
最好将管理节点放在独立服务器上
2.在数据节点服务器上运行
ndbd --initial --ndb-connectstring=192.168.7.187:1186
ndbd 进程是使用 NDB 存储引擎处理表中数据的进程。通过该进程,存储节点能够实现分布式事务管理,节点恢复,在线备份等相关任务
注:仅在首次启动 ndbd 时,或在备份、恢复、或配置变化后重启 ndbd 时使用 --initial 参数。因为该参数会使节点删除由早期 ndbd 实例创建的,用于恢复的任何文件,包括恢复用日志文件。
3.依次启动 sql 节点上的 mysql 服务
node1(192.168.7.187)
./bin/mysqld_safe &
node2(192.168.7.55)
./bin/mysqld_safe &
4.用 ndb_mgm 工具的 show 命令查看集群状态
ndb_mgm
>show
使用 ndb_mgm --help 查看命令
cluster 测试
1.ndb 存储引擎测试
1)在任意个 sql 节点(192.168.7.187) 的 test 库 创建测试表 t1, 设置存储引擎为 ndb ,并插入两条测试数据
create table t1(id int) engine=ndb;
insert into t1 values(1);
insert into t1 values(2);
2)在另一个 sql 节点
(192.168.7.55)
,查询 test 库 t1 表
select * from t1
3)在 sql 节点
(192.168.7.187) 上将测试表 t1 的存储引擎改为myisam,再次插入数据
alter table t1 engine=myisam;
insert into t1 values(3);
4)在sql 节点
(192.168.7.55) 上再查询表 t1
select * from t1;
出错
5)在 sql 节点
(192.168.7.187)上再次将 t1 的存储引擎改为 ndb
alter table t1 engine=ndb;
6)在 sql 节点
(192.168.7.55) 上再次查询
select * from t1;
2.单点故障测试
sql节点发生单点故障
1)将 sql 节点 192.168.7.187上的 mysql 服务停止
mysqladmin -uroot shutdown
2)查看一下 cluster 状态
ndb_mgm
>show
3)在两一台 sql 节点上还是可以访问数据的
数据节点的单点故障
如果 [NDBD DEFAULT]组中的 NoOfReplicas 参数,如果这个参数等于 1 ,表示只有一份数据,但是分为了 n 块分别存储在 n 个数据节点 上;如果是 2 ,则表示数据被分成 n/2 块,每块数据都有两个备份,这样即使有任意一个节点发生故障,只要他的备份节点正常,系统就可以正常运行
1)将数据节点 192.168.7.187 上的 ndb 进程停止
ps -ef | grep 'ndbd'
2)在任意一个 sql 节点查看表 t1 数据
select * from t1;
出错
3)将配置文件中 的 NoOfReplicas 改为2 ,按照前面步骤重新启动集群
4)此时停掉任何一个数据节点的数据
5)再次从任意一个 sql 节点查询 t1
cluster的关闭
ndb_mgm -e shutdown 或者进入 ndb_mgm 交互命令之后执行 shutdown
注:集群关闭后,sql 节点的mysql 服务并不会停止
维护 cluster
数据备份
1.可以在任意一个 sql 节点上执行 mysqldump
2.cluster 物理备份
1)首先启动管理服务器 ndb_mgm
>start backup
当日志中显示 "Backup 1 started from node 1 conpleted" 的时候,本次备份结束。备份的数据保存在每个数据节点下,具体备份路径是:$MYSQL_HOME/data/BACKUP/BACKUP-备份ID
可以在两个数据节点下都可以看到备份数据
数据恢复
用 ndb_restore 工具进行数据恢复
1)在数据节点2(192.168.7.187)的shell 命令行中执行:
ndb_restore -b 3 -n 2 -c host=192.168.7.187:1186 -m -r /home/zzx2/mysql/data/BACKUP/BACKUP-3
2)在节点3的shell 命令行执行:
ndb_restore -b 3 -n 3 -c host=192.168.7.187:1186 -m -r /home/zzx2/mysql/data/BACKUP/BACKUP-3
日志管理