8 MySQLClster备份与恢复 备份 采用ndb_mgm管理客户端来备份,在管理节点执行ndb_mgm即可进入管理命令行,输入startbackup开始备份所有节点,如果后面还跟着对应数据节点的id就只备份对应的数据节点 使用命令ndb_restore进行恢复,具体过程如下: 启动管理节点 /usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini--reload 启动数据节点: /usr/bin/ndbd --initial 第一个节点恢复的时候 在第一个节点恢复表结构(恢复的时候如果不涉及到表结构的变更,不用使用参数-m) /usr/bin/ndb_restore -c 10.100.200.37-n 11 -b 1 -m --backup_path=/data/backup/backup-1/ 恢复数据,恢复数据的时候可以几个ndb节点一起执行,速度会快一点! /usr/bin/ndb_restore -c 10.100.200.37-n 11 -b 1 -r --backup_path=/data/backup/backup-1/ 其他节点恢复的时候(以后的节点不需要加-m参数) /usr/bin/ndb_restore -c 192.168.100.223 -n 11 -b 1 -r --backup_path=/data/dbdata1/BACKUP/BACKUP-1/ 9 MySQLClster在线添加节点1 增加或减少数据节点的数量和NoOfReplicas有关,一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas。 首先是在配置文件中添加两个节点的设置,如下: viconfig.ini 添加 [NDBD] id=21 HostName=10.100.200.37 [NDBD] id=22 HostName=10.100.200.38 用ndb_mgm工具,停掉管理节点,然后重新启动管理节点 执行ndb_mgm进入管理命令界面,找到管理节点的id,然后执行管理节点idstop,退出 执行 /usr/bin/ndb_mgmd-f /usr/local/mysql/mysql-cluster/config.ini --reload 重新启动管理节点 登陆上去用show命令查看,是否出现了新添加的两个节点! 环状重启(一次重启数据节点和sql节点) 初始化新添加的两个节点: ndbd--initial (执行初始化之后会自动创建数据文件,undo日志文件等等) 通过ndb_mgm创建nodegroup CREATENODEGROUP 21,22s 重新分配cluster的数据 SELECTTABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE ='NDBCLUSTER'; ALTERONLINE TABLE table_nameREORGANIZE PARTITION; alteronline table card_packagereorganize partition; 然后通过show命令或者使用ndb_desc命令查看 ndb_desc-c 10.80.30.39 -dbgcarddbcard_package-p -c后面跟管理节点的ip,-d跟数据库的名字,table_name为表名,-p输出分区的详细信息 10 MySQLClster用户权限共享 在sql节点41上面执行mysql -uroot-p < /usr/local/mysql/share/ndb_dist_priv.sql 在mysql终端调用名字为mysql_cluster_move_privileges的存储过程,这个存储过程的功能是备份权限表,然后将表的存储引擎转换为ndbcluster引擎。 mysql>CALLmysql.mysql_cluster_move_privileges(); 自动备份权限表 shell>mysqldumpmysql userdbtables_privcolumns_privprocs_priv>backup_file.sql 验证权限表 mysql>show create tablemysql.user;看engine是否为ndbcluster。 在41上面加测试账号 mysql>grant all on *.* to test@'10.100.200.%' identified by 'test123'; [root@banggo~]#mysql-h10.100.200.39 -utest-ptest123 -P3307; OK,能连上,测试成功! 11.1 MySQLClster备份与恢复扩展(操作见No8) 1、簇备份概念 备份指的是在给定时间对数据库的快照。备份包含三个主要部分: (1)Metadata(元数据):所有数据库表的名称和定义。 (2)Tablerecords(表记录):执行备份时实际保存在数据库表中的数据。 (3)Transactionlog(事务日志):指明如何以及何时将数据保存在数据库中的连续记录。 每一部分(这三部分)均会保存在参与备份的所有数据节点上。在备份过程中,每个节点均会将这三个部分保存在磁盘上的三个文件中(意思是说,有几个节点,将会把相同的数据,保存几份.例如,2个数据节点,那么就会分别在2个节点上,保存2次,保存目录默认为 [NDBD] DateDir=/usr/local/mysql/BACKUP (4)BACKUP-backup_id.node_id.ctl 包含控制信息和元数据的控制文件。每个节点均会将相同的表定义(对于簇中的所有表)保存在自己的该文件中 (5)BACKUP-backup_id-0.node_id.data 包含表记录的数据文件,它是按片段保存的,也就是说,在备份过程中,不同的节点会保存不同的片段。每个节点保存的文件以指明了记录所属表的标题开始。在记录清单后面有一个包含关于所有记录校验和的脚注。 (6)BACKUP-backup_id.node_id.log 包含已提交事务的记录的日志文件。在日志中,仅保存已在备份中保存的表上的事务。参与备份的节点将保存不同的记录,这是因为,不同的节点容纳了不同的数据库片段。 在上面所列的内容中,backup_id指的是备份ID,node_id是创建文件的节点的唯一ID。 使用管理服务器创建备份开始备份前,请确保已为备份操作恰当地配置了簇。 2、备份参数(以下参数,都写入在mgmd的config.ini配置文件中) 本节讨论的参数定义了与在线备份执行有关的内存缓冲集。 (1)BackupDataBufferSize 在创建备份的过程中,为了将数据发送到磁盘,将使用两类缓冲。备份数据缓冲用于填充由扫描节点的表而记录的数据。一旦将该缓冲填充到了指定的水平BackupWriteSize(请参见下面的介绍),就会将页发送至磁盘。在将页写入磁盘的同时,备份进程能够继续填充该缓冲,直至其空间消耗完为止。出现该情况时,备份进程将暂停扫描,直至一些磁盘写入操作完成并释放了内存为止,然后扫描继续。 该参数的默认值为2MB。 (2)BackupLogBufferSize 备份日志缓冲扮演的角色类似于备份数据缓冲,不同之处在于,它用于生成备份执行期间进行的所有表写入的日志。相同的原理也适用于备份数据缓冲情形下的页写入,不同之处在于,当备份日志缓冲中没有多余空间时,备份将失败。出于该原因,备份日志缓冲的大小应足以处理执行备份时产生的负载。 该参数的默认值对于大多数应用程序均是适当的。事实上,备份失败的原因更可能是因为磁盘写入速度不够,而不是备份日志缓冲变满。如果没有为应用程序产生的写负载配置磁盘子系统,簇很可能无法执行所需的操作。最好按恰当的方式配置簇,使得处理器成为瓶颈而不是磁盘或网络连接。默认值是2MB。 (3)BackupMemory 该参数是BackupDataBufferSize和BackupLogBufferSize之和。默认值是2MB+ 2MB = 4MB。 (4)BackupWriteSize 该参数指定了由备份日志缓冲和备份数据缓冲写入磁盘的消息大小。默认值是32KB. (5)BackupDataDir #可更改默认的备份目录,BackupDataDir=/mysqlback #当然前提,mkdir/mysqlback,需要在所有数据节点上运行 也能指定存放备份的目录。默认情况下,该目录是FileSystemPath/BACKUP (6)FileSystemPath 该参数指定了存放为元数据创建的所有文件、REDO日志、UNDO日志和数据文件的目录。默认目录是由DataDir指定的。注意,启动ndbd进程之前,该目录必须已存在。 (7)DataDir 该参数指定了存放跟踪文件、日志文件、pid文件以及错误日志的目录。 12.1 Join的改进1 在现在的mysqlcluster 7.2测试版本中,对join的功能进行了重大改进,可以说是一个里程碑的版本,由于前段时间做测试发现mysqlcluster 7.1.10对join的性能很不好,另外如果jion的表比较大的时候会导致节点之间的数据传输非常大。 我们知道在7.2之前的版本都是将jion在mysqld节点执行,这样就需要从数据节点进行交互传输数据,造成join的性能非常差。现在7.2版本将join放到了数据节点执行,并行处理,较少了数据在sql节点的交互,因此性能大幅提升。
|