码迷,mamicode.com
首页 > 数据库 > 详细

mysql集群管理维护日记

时间:2015-12-18 19:07:00      阅读:494      评论:0      收藏:0      [点我收藏+]

标签:mysql

管理节点启动#首次运行、备份或者config.ini配置变化时加--initial[root@mysql-manager mysql-cluster]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial查看启动后的端口情况:

[root@mysql-manager mysql-cluster]#  netstat -lntpu

管理节点检验

[root@mysql-manager /]# /usr/local/mysql/bin/ndb_mgm 【已经配置环境变量,可以直接使用:ndb_mgm】


管理节点关闭

[root@mysql-manager /]# /usr/local/mysql/bin/ndb_mgm -e shutdown


数据节点启动:初始化加参数:--initial

[root@mysql-NODE1 var]# /usr/local/mysql/bin/ndbd --initial

数据节点关闭

先通过命令:ps -ef|grep ndbd

找出所有线程,然后通过 :kill -9 线程号        

关闭数据节点


SQL节点启动:service mysqld start 【即:mysql数据库服务的启动】

SQL节点关闭:service mysqld stop


mysql集群节点启动顺序

管理节点启动》》》》数据节点启动》》》》SQL节点启动

mysql集群节点关闭顺序

SQL节点关闭》》》》数据节点关闭》》》》管理节点关闭


注意:必须按顺序启动,也就是管理节点启动后,启动所有的数据节点,最后才可能启动SQL节点,只要有一个数据节点没启动,最终管理节点上显示的都是不正常 的。


10.1.130.10到19的9台服务器搭建的集群管理节点路径


2015年08月24日开始搭建的集群,因为管理节点上本来就安装了mysql数据库,所以集群管理服务的路径是:

/usr/local/mysql/bin/bin/ndb_mgmd

所以首次启动或者配置变化后启动命令需要使用:

/usr/local/mysql/bin/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

检查命令使用:

/usr/local/mysql/bin/bin/ndb_mgm

关闭命令使用:

/usr/local/mysql/bin/bin/ndb_mgm -e shutdown 



20150827日记:

经过多次操作发现:

修改管理节点的配置文件里面的以下内容,都需要重新初始化启动,包括:管理节点,数据节点

修改参数(任何参数)的值,修改如果不希望清空数据,需要重启管理节点,启动时 加参数 --reload

然后 依次 restart 所有数据节点(必须一个完全重启成功后才可以重启下一个节点),这个过程需要一些时间才能完成。


实验过程修改的是:

1、NoOfReplicas=2   #每个节点的镜像数量

DataMemory=5G    #每个数据节点中给数据分配的内存
IndexMemory=500M  #每个数据节点中给索引分配的内存
此3个参数改过几次,每次都要重新初始化管理节点和数据节点2、修改数据节点的Datadir即文件路径必须重新初始化管理节点和数据节点路径修改的原因:开始的时候6个节点数据文件路径都是:/gtabigdata/data/mysql/data后来发现10.1.130.16,17,19 三台的以上路径没空间,所以改为:/mysql/data
另外:建磁盘表过程中,按照文档所设计的日志文件组大小可以创建,修改就不可以。原因尚未查明,可能是因为集群搭建过程完全保留很多参数的默认值,所以不能创建太大的空间。
集群配置参数详解官网:http://dev.mysql.com/doc/refman/5.6/en/index.html


查看linux下各盘空间使用情况命令:df  单位以字节显示df -h #单位以G显示


20150828:

昨天建的数据文件只给100M,导数据一下就满了,需要添加数据文件:

涉及如下维护脚本:

1.查看表空间使用率
mysql>SELECT TABLESPACE_NAME, FILE_NAME, EXTENT_SIZE*TOTAL_EXTENTS/1024/1024 AS TOTAL_MB, EXTENT_SIZE*FREE_EXTENTS/1024/1024 AS FREE_MB, EXTRA FROM information_schema.FILES WHERE FILE_TYPE=‘DATAFILE‘;

2.查看表大小
mysql> select table_name,table_rows,data_length,index_length 
from information_schema.TABLES where TABLE_SCHEMA=‘test‘;
         
3.查看数据分布
[root@localhost ~]#ndb_desc tb_area -d test -p --tb_area为表名,test为数据库名
当表是 TAQ_201504 数据库是 testndb_desc TAQ_201504 -d test -p

4.查看Cluster剩余内存
[root@localhost ~]#ndb_mgm
ndb_mgm> ALL REPORT MEMORYUSAGE ;


5.添加数据文件
alter tablespace ts_cloudstore add datafile‘cloudstore_data_3.dbf‘ initial_size 10G engine ndbcluster; 
6. centos 查看内存使用情况   free -m  以MB为单位显示   free -h  以GB为单位显示7.centos查看进程情况:   top


20150831:

du:查询文件或文件夹的磁盘使用空间

    如果当前目录下文件和文件夹很多,使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是那个地方过大是不利的,所以得指定 深入目录的层数,参数:--max-depth=,这是个极为有用的参数!如下,注意使用“*”,可以得到文件的使用空间大小.

[root@cslave9 mysql]# du -h --max-depth=2 /mysql/data/ndb_7_fs
9.8M/mysql/data/ndb_7_fs/D9/DBLQH
9.8M/mysql/data/ndb_7_fs/D9
257M/mysql/data/ndb_7_fs/D8/DBLQH
257M/mysql/data/ndb_7_fs/D8
664K/mysql/data/ndb_7_fs/D1/DBDICT
88K/mysql/data/ndb_7_fs/D1/DBDIH
756K/mysql/data/ndb_7_fs/D1
664K/mysql/data/ndb_7_fs/D2/DBDICT
88K/mysql/data/ndb_7_fs/D2/DBDIH
756K/mysql/data/ndb_7_fs/D2
9.8M/mysql/data/ndb_7_fs/D10/DBLQH
9.8M/mysql/data/ndb_7_fs/D10
1.3G/mysql/data/ndb_7_fs/LCP/1
1.3G/mysql/data/ndb_7_fs/LCP/0
2.6G/mysql/data/ndb_7_fs/LCP
256M/mysql/data/ndb_7_fs/D11/DBLQH
256M/mysql/data/ndb_7_fs/D11
14G/mysql/data/ndb_7_fs

因为上周/gtabigdata/data下没有空间,所以修改了3台服务器的数据存储路径为/mysql/data现在发现每台服务器上的/gtabigdata/data 都有超过100G的空间,决定修改存储路径为/gtabigdata/data,所以需要每台服务器上都执行如下命令:
[root@cslave9 mysql]# pwd
/gtabigdata/data/mysql
因为上周建的是磁盘表,修改配置文件后,用--initial选项启动集群时,不会删除磁盘上的数据文件,必须手动删除。  所以执行以下命令删除数据文件,为了方便,直接将整个目录删除,再创建,并授权。
[root@cslave9 mysql]# rm -rf /gtabigdata/data/mysql/data
[root@cslave9 mysql]# mkdir data
[root@cslave9 mysql]# chown -R mysql:mysql /gtabigdata/data/mysql/data


mysql cluster 备份与恢复:

第一步:备份

ndb_mgm> start backup
Waiting for completed, this may take several minutes
Node 2: Backup 1 started from node 1
Node 2: Backup 1 started from node 1 completed
 StartGCP: 754639 StopGCP: 754642
 #Records: 41251 #LogRecords: 0
 Data: 17702688 bytes Log: 0 bytes

第二步:关闭集群

ndb_mgm> shutdown
Node 2: Cluster shutdown initiated
Node 3: Cluster shutdown initiated
Node 3: Node shutdown completed.
3 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
Node 2: Node shutdown completed.

以上会关闭管理节点,数据节点,SQL节点需要到SQL节点服务器进行单独关闭mysql服务
第三步:删除数据库(开始只清空表里面的数据,发现恢复的时候,只能恢复主数据节点的,从数据节点恢复失败,不过应该是因为id=6 (not connected, accepting connect from any host) 开始还原的时候,nodeid取值7,应该是6才是空闲的

第四步:启动集群(按顺序,管理节点》存储节点(加初始化参数启动)》sql节点)管理节点启动:[root@cmanager ~]#  /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
MySQL Cluster Management Server mysql-5.6.24 ndb-7.4.6
2个数据节点启动:

[root@cslave1 BACKUP-1]#  /usr/local/mysql/bin/ndbd --initial
2015-09-08 16:25:07 [ndbd] INFO     -- Angel connected to ‘192.168.106.125:1186‘
2015-09-08 16:25:07 [ndbd] INFO     -- Angel allocated nodeid: 2
2个SQL阶段启动:

[root@cslave1 BACKUP-1]# service mysqld restart

第五步:主存储节点上恢复数据以及结构:

[root@cslave1 BACKUP-1]# /usr/local/mysql/bin/ndb_restore -n2 -b2 -r -m --backup_path=/gtabigdata/data1/mysql/BACKUP/BACKUP-2/ --ndb-connectstring=nodeid=10,10.1.130.10
Nodeid = 2
Backup Id = 1
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1/
Opening file ‘/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.2.ctl‘
File size 29100 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.6.24 ndb-7.4.6
Stop GCP of Backup: 754641
Connected to ndb!!
Successfully restored table `test/def/TAQ_201504`
Successfully restored table event REPL$test/TAQ_201504
Create foreign keys
Create foreign keys done
Opening file ‘/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1-0.2.Data‘
File size 8863124 bytes
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 0
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(4) fragment 0
_____________________________________________________
Processing data in table: test/def/TAQ_201504(10) fragment 0
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(7) fragment 0
Opening file ‘/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.2.log‘
File size 52 bytes
Restored 19619 tuples and 0 log entries

NDBT_ProgramExit: 0 - OK
以上信息表明 主数据节点恢复成功!nodeid=6 这个地方第一次恢复时写的是7,是空闲的是6,所以恢复时只恢复了一半的数据,从数据节点恢复失败。第二次改为6 才完整的恢复且无报错。

第六步:从存储节点上恢复数据:

[root@cslave2 BACKUP-1]# /usr/local/mysql/bin/ndb_restore -n3 -b1 -r -d --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/ --ndb-connectstring=nodeid=5,192.168.106.125
Nodeid = 3
Backup Id = 1
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1/
Opening file ‘/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.3.ctl‘
File size 29100 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.6.24 ndb-7.4.6
Stop GCP of Backup: 754641
Connected to ndb!!
Opening file ‘/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1-0.3.Data‘
File size 8840108 bytes
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(5) fragment 1
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(4) fragment 1
_____________________________________________________
Processing data in table: test/def/TAQ_201504(10) fragment 1
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(7) fragment 1
Opening file ‘/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.3.log‘
File size 52 bytes
Restored 19574 tuples and 0 log entries

NDBT_ProgramExit: 0 - OK
以上信息表明,从数据节点恢复也成功!

第七步:在SQL节点上操作验证恢复结果:show databases,没看到任何数据库,并不是失败,需要create database 你备份的数据.然后在这新库中show表,可以看到数据都回来了。

mysql> show databases;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***

+--------------------+
| Database           |
+--------------------+
| information_schema |
| BACKUP             |
| mysql              |
| ndb_2_fs           |
| ndbinfo            |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)   以上列表没有test库,因为刚才删除了
mysql> create database test;
Query OK, 1 row affected (0.05 sec)

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| TAQ_201504     |
+----------------+
1 row in set (0.00 sec)

mysql> select count(*) from TAQ_201504 ;--至此 数据恢复完成且完整。
+----------+
| count(*) |
+----------+
|    39193 |
+----------+
1 row in set (0.00 sec)


部分参数的解释:

/usr/local/mysql/bin/ndb_restore 还原命令

-n 当前存储节点的nodeid

-b 要还原的backupid

-r 数据开关,也就是还原数据了

-m 还原表结构

 --ndb-connectstring=nodeid=6,192.168.106.125 是管理节点IP,nodeid=6,是因为管理节点上show出所有SQL节点是:

ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)]2 node(s)
id=2@192.168.106.126  (mysql-5.6.24 ndb-7.4.6, Nodegroup: 0, *)
id=3@192.168.106.127  (mysql-5.6.24 ndb-7.4.6, Nodegroup: 0)

[ndb_mgmd(MGM)]1 node(s)
id=1@192.168.106.125  (mysql-5.6.24 ndb-7.4.6)

[mysqld(API)]3 node(s)
id=5@192.168.106.127  (mysql-5.6.24 ndb-7.4.6)
id=6 (not connected, accepting connect from any host)
id=7@192.168.106.126  (mysql-5.6.24 ndb-7.4.6)

其中id=6 (not connected, accepting connect from any host) 这是为下一个SQL节点准备的空闲节点,网上说改为8也可以,实际是不可以的,试过了。



GRANT all ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘密码‘;


本文出自 “9959615” 博客,请务必保留此出处http://9969615.blog.51cto.com/9959615/1726144

mysql集群管理维护日记

标签:mysql

原文地址:http://9969615.blog.51cto.com/9959615/1726144

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!