设为首页 收藏本站
查看: 2196|回复: 0

[经验分享] ​MySQL NDB Cluster维护

[复制链接]

尚未签到

发表于 2018-10-5 13:38:42 | 显示全部楼层 |阅读模式
MySQL NDB Cluster维护
  2018年03月07日 17:34:22
  阅读数:55
  数据备份
  可以使用mysqldump工具在任一SQL节点上进行数据库逻辑备份,这里主要介绍Cluster的物理备份方法,具体如下:
  在管理节点10.24.32.180执行:

  •   ndb_mgm> start backup
  •   Connected to Management Server at: localhost:1186
  •   Waiting for completed, this may take several minutes
  •   Node 3: Backup 1 started from node 1
  •   Node 3: Backup 1 started from node 1 completed
  •   StartGCP: 3305 StopGCP: 3308
  •   #Records: 2060 #LogRecords: 0
  •   Data: 51436 bytes Log: 0 bytes
  •   ndb_mgm>
  在数据节点10.24.32.183查看:

  •   [root@strong ~]# ll /u01/BACKUP/BACKUP-1/
  •   total 56
  •   -rw-r--r--. 1 root root 26512 Mar  7 16:06 BACKUP-1-0.2.Data  --2表示节点2
  •   -rw-r--r--. 1 root root 22104 Mar  7 16:06 BACKUP-1.2.ctl
  •   -rw-r--r--. 1 root root    52 Mar  7 16:06 BACKUP-1.2.log
  •   [root@strong ~]#
  在数据节点10.24.32.184查看:

  •   [root@strong ~]# ll /u01/BACKUP/BACKUP-1/
  •   total 56
  •   -rw-r--r--. 1 root root 25468 Mar  7 16:06 BACKUP-1-0.3.Data
  •   -rw-r--r--. 1 root root 22104 Mar  7 16:06 BACKUP-1.3.ctl
  •   -rw-r--r--. 1 root root    52 Mar  7 16:06 BACKUP-1.3.log
  •   [root@strong ~]#
  对于大数据量备份,MySQL Cluster提供了一些参数,参数需放在config.ini的[ndbd default]或[ndbd]中:

  •   BackupDataBufferSize:将数据写入磁盘之前用于对数据进行缓存处理的内存大小;
  •   BackupLogBufferSize:将日志记录写入磁盘之前用于对日志进行缓冲处理的内存大小;
  •   BackupMemory:在数据库节点中为备份分配的总内存,是分配给备份数据缓冲的内存和分配给备份日志缓冲的内存之和;
  •   BackupWriteSize:每次写入磁盘的块大小,适用于备份数据缓冲和备份日志缓冲;
  数据恢复
  使用ndb_mgm> start backup进行备份的Cluster,必须使用ndb_restore工具进行数据恢复,测试如下:
  备份前的数据:

  •   mysql> select count(1) from t_cluster;
  •   +----------+
  •   | count(1) |
  •   +----------+
  •   |    20004 |
  •   +----------+
  •   1 row in set (0.01 sec)

  •   mysql>
  在数据节点10.24.32.183执行恢复:

  •   [root@strong ~]# ndb_restore -b 2 -n 2 -c host=10.24.32.180:1186 -m -r /u01/BACKUP/BACKUP-2
  •   Backup Id = 2
  •   Nodeid = 2
  •   backup path = /u01/BACKUP/BACKUP-2
  •   2018-03-07 18:30:06 [restore_metadata] Read meta data file header
  •   Opening file '/u01/BACKUP/BACKUP-2/BACKUP-2.2.ctl'
  •   File size 22104 bytes
  •   Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.21 ndb-7.5.9
  •   2018-03-07 18:30:06 [restore_metadata] Load content
  •   Stop GCP of Backup: 6769
  •   2018-03-07 18:30:06 [restore_metadata] Get number of Tables
  •   2018-03-07 18:30:06 [restore_metadata] Validate Footer
  •   Configuration error: Error: Could not alloc node id at 10.24.32.180 port 1186: Connection done from wrong host ip 10.24.32.183.
  •   Failed to initialize consumers

  •   NDBT_ProgramExit: 1 - Failed
  出现错误,解决办法是:
  在config.ini 增加一个空节点[mysqld],然后重新执行,结果如下:

  •   [root@strong ~]# ndb_restore -b 2 -n 2 -c host=10.24.32.180:1186 -m -r /u01/BACKUP/BACKUP-2
  •   Backup Id = 2
  •   Nodeid = 2
  •   backup path = /u01/BACKUP/BACKUP-2
  •   2018-03-07 19:30:34 [restore_metadata] Read meta data file header
  •   Opening file '/u01/BACKUP/BACKUP-2/BACKUP-2.2.ctl'
  •   File size 22104 bytes
  •   Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.21 ndb-7.5.9
  •   2018-03-07 19:30:34 [restore_metadata] Load content
  •   Stop GCP of Backup: 6769
  •   2018-03-07 19:30:34 [restore_metadata] Get number of Tables
  •   2018-03-07 19:30:34 [restore_metadata] Validate Footer
  •   Connected to ndb!!
  •   2018-03-07 19:30:34 [restore_metadata] Restore objects (tablespaces, ..)
  •   2018-03-07 19:30:34 [restore_metadata] Restoring tables
  •   Successfully restored table `test/def/t_cluster`
  •   Successfully restored table event REPL$test/t_cluster
  •   2018-03-07 19:30:35 [restore_metadata] Save foreign key info
  •   Create foreign keys
  •   Create foreign keys done
  •   2018-03-07 19:30:35 [restore_data] Start restoring table data
  •   2018-03-07 19:30:35 [restore_data] Read data file header
  •   Opening file '/u01/BACKUP/BACKUP-2/BACKUP-2-0.2.Data'
  •   File size 427796 bytes
  •   2018-03-07 19:30:35 [restore_data] Restore fragments
  •   _____________________________________________________
  •   Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 0
  •   _____________________________________________________
  •   Processing data in table: test/def/t_cluster(10) 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: sys/def/SYSTAB_0(2) fragment 0
  •   _____________________________________________________
  •   Processing data in table: mysql/def/ndb_schema(7) fragment 0
  •   2018-03-07 19:30:35 [restore_log] Read log file header
  •   Opening file '/u01/BACKUP/BACKUP-2/BACKUP-2.2.log'
  •   File size 52 bytes
  •   2018-03-07 19:30:35 [restore_log] Restore log entries
  •   Restored 10034 tuples and 0 log entries

  •   NDBT_ProgramExit: 0 - OK

  •   [root@strong ~]#
  参数说明:
  -b :备份id
  -n :节点id
  -m :恢复表定义
  -r :恢复路径
  -c :Cluster管理器连接串
  在SQL节点10.24.32.181查看数据,可以发现数据不是完整的数据:

  •   mysql> select count(1) from t_cluster;
  •   +----------+
  •   | count(1) |
  •   +----------+
  •   |    10034 |
  •   +----------+
  •   1 row in set (0.00 sec)
  在另一数据节点10.24.32.184进行恢复:

  •   [root@strong ~]# ndb_restore -b 2 -n 3 -c host=10.24.32.180:1186 -r /u01/BACKUP/BACKUP-2
  •   Backup Id = 2
  •   Nodeid = 3
  •   backup path = /u01/BACKUP/BACKUP-2
  •   2018-03-07 19:41:25 [restore_metadata] Read meta data file header
  •   Opening file '/u01/BACKUP/BACKUP-2/BACKUP-2.3.ctl'
  •   File size 22104 bytes
  •   Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.21 ndb-7.5.9
  •   2018-03-07 19:41:25 [restore_metadata] Load content
  •   Stop GCP of Backup: 6769
  •   2018-03-07 19:41:25 [restore_metadata] Get number of Tables
  •   2018-03-07 19:41:25 [restore_metadata] Validate Footer
  •   Connected to ndb!!
  •   2018-03-07 19:41:26 [restore_metadata] Restore objects (tablespaces, ..)
  •   2018-03-07 19:41:26 [restore_metadata] Restoring tables
  •   2018-03-07 19:41:26 [restore_metadata] Save foreign key info
  •   2018-03-07 19:41:26 [restore_data] Start restoring table data
  •   2018-03-07 19:41:26 [restore_data] Read data file header
  •   Opening file '/u01/BACKUP/BACKUP-2/BACKUP-2-0.3.Data'
  •   File size 424192 bytes
  •   2018-03-07 19:41:26 [restore_data] Restore fragments
  •   _____________________________________________________
  •   Processing data in table: mysql/def/NDB$BLOB_7_3(8) fragment 1
  •   _____________________________________________________
  •   Processing data in table: test/def/t_cluster(10) 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: sys/def/SYSTAB_0(2) fragment 1
  •   _____________________________________________________
  •   Processing data in table: mysql/def/ndb_schema(7) fragment 1
  •   2018-03-07 19:41:26 [restore_log] Read log file header
  •   Opening file '/u01/BACKUP/BACKUP-2/BACKUP-2.3.log'
  •   File size 52 bytes
  •   2018-03-07 19:41:26 [restore_log] Restore log entries
  •   Restored 9970 tuples and 0 log entries

  •   NDBT_ProgramExit: 0 - OK

  •   [root@strong ~]#
  在SQL节点10.24.32.181查看数据,可以发现如下数据:

  •   mysql> select count(1) from t_cluster;
  •   +----------+
  •   | count(1) |
  •   +----------+
  •   |    20004 |
  •   +----------+
  •   1 row in set (0.25 sec)

  •   mysql>
  此时,数据已完全恢复正常,恢复过程结束。
  日志管理
  MySQL NDB Cluster提供两种日志,分别是集群日志(cluster log)和节点日志(node log)。前者记录所有节点生成的日志,后者仅记录数据节点的本地事件,大多数情况下,一般都推荐使用集群日志,因为它在一个地方记录了所有节点的数据,更便于管理,节点日志一般只在开发中使用,或者用来调试程序代码。
  clusterlog一般记录在配置文件config.ini所在目录下,文件格式为ndb__cluster.log,其中nodeid为管理节点号,例如:

  •   [root@strong mysql-cluster]# tail -n 10 ndb_1_cluster.log
  •   2018-03-07 19:41:27 [MgmtSrvr] ALERT    -- Node 3: Node 6 Disconnected
  •   2018-03-07 19:41:27 [MgmtSrvr] INFO     -- Node 3: Communication to Node 6 closed
  •   2018-03-07 19:41:27 [MgmtSrvr] INFO     -- Node 2: Communication to Node 6 closed
  •   2018-03-07 19:41:27 [MgmtSrvr] ALERT    -- Node 2: Node 6 Disconnected
  •   2018-03-07 19:41:30 [MgmtSrvr] INFO     -- Node 2: Communication to Node 6 opened
  •   2018-03-07 19:41:31 [MgmtSrvr] INFO     -- Node 3: Communication to Node 6 opened
  •   2018-03-07 19:42:07 [MgmtSrvr] WARNING  -- Node 2: Node 4 missed heartbeat 2
  •   2018-03-07 19:42:07 [MgmtSrvr] WARNING  -- Node 3: Node 4 missed heartbeat 2
  •   2018-03-07 19:42:09 [MgmtSrvr] WARNING  -- Node 2: Node 4 missed heartbeat 3
  •   2018-03-07 19:42:09 [MgmtSrvr] WARNING  -- Node 3: Node 4 missed heartbeat 3
  •   [root@strong mysql-cluster]#
  可使用ndb_mgm客户端工具打开或关闭日志,具体操作如下:
  1)在管理节点执行ndb_mgm命令:

  •   [root@strong mysql-cluster]# ndb_mgm
  •   -- NDB Cluster -- Management Client --
  •   ndb_mgm>
  2)执行clusterlog info查看当前日志状态;

  •   ndb_mgm> clusterlog info
  •   Connected to Management Server at: localhost:1186
  •   Severities enabled: INFO WARNING ERROR CRITICAL ALERT
  •   ndb_mgm>
  3)当前日志是打开的,用clusterlog off关闭日志;

  •   ndb_mgm> clusterlog off
  •   Cluster logging is disabled
  •   ndb_mgm>
  4)再次查看日志状态,发现是关闭状态;

  •   ndb_mgm> clusterlog info
  •   Cluster logging is disabled.
  •   ndb_mgm>
  5)开启日志;

  •   ndb_mgm> clusterlog on
  •   Cluster logging is enabled.
  •   ndb_mgm> clusterlog info
  •   Severities enabled: INFO WARNING ERROR CRITICAL ALERT
  •   ndb_mgm>
  Cluster中的日志有很多类型,可按照如下类别进行过滤:

  •   Category(类别):可以是startup、shutdown、statistics、checkpoint、noderestart、connection、error或info中的任意值,这些类别包含很多事件,具体可参考官方文档;
  •   Priority(优先级):由从1~15之间的数字表示,其中1表示最重要,15表示最不重要。每种Category都有一个默认的优先级阈值,优先级阈值以下的日志将被记录,反之,则不会记录;
  •   Severity Level(严重级别):可以是alert、critical、error、warning、info或debug;
  以上三种分类可以让用户从3个不同角度对日志进行过滤,过滤方法使用ndb_mgm工具完成,具体设置方法如下:

  •   node_id clusterlog category=threshold:用小于或等于threshold的优先级将category事件记录到Cluster日志,node_id可以是All(所有节点)或某个节点;
  •   clusterlog toggleseverity_level:使得指定的severity_level打开或关闭。
  举例如下:
  将节点10.24.32.181的startup事件只记录级别为3以下的日志,可以设置为:

  •   ndb_mgm> 4 clusterlog startup=3
  •   Executing CLUSTERLOG STARTUP=3 on node 4 OK!

  •   ndb_mgm>
  如果在Cluster日志中过滤掉debug和info信息,可以设置为:

  •   ndb_mgm> clusterlog toggle debug
  •   DEBUG disabled
  •   ndb_mgm> clusterlog toggle info
  •   INFO disabled
  •   ndb_mgm> clusterlog info
  •   Severities enabled: WARNING ERROR CRITICAL ALERT
  •   ndb_mgm>


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-612714-1-1.html 上篇帖子: 部署mysql主从同步 下篇帖子: Linux环境下编译安装Mysql-lc251156121的博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表