TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
应用场景
MySQL Cluster 5.1的一个最受期待的特性是集群已支持基于磁盘的数据存取。NDB存储引擎大大增强了MySQL Cluster的性能,该引擎之前是一个100%的内存数据库引擎。这种引擎对可以运行在内存里的数据库来说是极好的选择,现在基于磁盘的存取数据支持使MySQL 5.1集群拓展了数据库规模,使MySQL集群用户有能力创建更大的数据库而且能对其有效的管理。
对于必须具备很高可用性,但不苛求像基于内存数据存储那样的高性能特性的数据,利用磁盘存取的方式将是最好的选择。另外,那些由于操作系统或硬件条件所致的硬性局限,可以考虑移植基于内存存取的库到磁盘存取的库当中,或者在支持磁盘存取数据的MySQL Cluster上开发新的应用。
操作步骤
1. 涉及概念
MySQL Cluster采用一系列的Disk Data objects来实现磁盘表。
(1)Tablespaces:作用是作为其他Disk Data objects的容器。
(2)Undo logy files:存储事务进行回滚需要的信息,一个或者多个undo log files组成一个log files group,最后,该log file group关联到一个tablespaces。
(3)Data files:作用是存储表中的数据,data file直接关联到tablespaces。
在每一个数据节点上undo log files和data files都是实际的文件,默认的,存放在ndb_node_id_fs文件夹下,该路径是在MySQL Cluster的config.ini中用DataDir指定的,node_id是data node的node ID。可以用绝对路径或者相对路径指定undo log或者data file的路径。tablespaces和log file group则不是实际的文件。
注意:尽管不是所有的Disk Data Object都作为文件存储,但是他们共享同一的命名空间,这意味着每个Disk Data Object必须唯一命名。
2. 创建日志组文件
- [code] 在sql节点下执行以下sql语句:
- CREATE LOGFILE GROUP lg_cloudstor ADD UNDOFILE "cloudstor_undo_1.log" INITIAL_SIZE 1024M UNDO_BUFFER_SIZE 100M ENGINE NDBCLUSTER;
- ALTER LOGFILE GROUP lg_cloudstor ADD UNDOFILE "cloudstor_undo_2.log" INITIAL_SIZE 1024M ENGINE NDBCLUSTER;
复制代码 [/code]
3. 创建表空间
- [code] CREATE TABLESPACE ts_cloudstore ADD DATAFILE "cloudstore_data_1.dbf" USE LOGFILE GROUP lg_cloudstor INITIAL_SIZE 20480M AUTOEXTEND_SIZE 1024M ENGINE NDBCLUSTER;
复制代码 [/code]
4. 添加新的datafile(给表空间添加日志文件)
- [code] ALTER TABLESPACE ts_cloudstore ADD DATAFILE "cloudstore_data_2.dbf" INITIAL_SIZE 20480M AUTOEXTEND_SIZE 1024M ENGINE NDBCLUSTER;
- 注意:上面增加的日志文件和数据文件的信息保存在information_schema.FILES表里。
- 可以通过以下命令,查看在物理磁盘上新建的数据文件:
- # cd /usr/local/src/mysql/data/ndb_2_fs/
- # ls -lh
复制代码 [/code]
5. 删除数据文件(下步骤需要用时再操作!)
- [code] alter tablespace ts_cloudstore drop datafile "cloudstore_data_1.dbf" engine ndbcluster;
- alter tablespace ts_cloudstore drop datafile "cloudstore_data_2.dbf" engine ndbcluster;
复制代码 [/code]
6. 删除表空间
- [code] drop tablespace ts_cloudstore engine ndbcluster;
复制代码 [/code]
7. 删除日志组
- [code] drop logfile group lg_cloudstor engine ndbcluster;
复制代码 [/code]
8. 将原有内存表转为磁盘表
- [code]具体操作如下:
- SELECT CONCAT("ALTER TABLE `", table_name, "` TABLESPACE ts_cloudstore STORAGE DISK ENGINE=ndbcluster;") AS sql_statements FROM information_schema.tables AS tb WHERE table_schema = "bidinfo_jiangsu" AND `TABLE_TYPE` = "BASE TABLE" ORDER BY table_name;
复制代码 [/code]
注:需要修改,需要转为磁盘表的数据库。
执行以上SQL语句,将会生成一系列ALTER语句,将这些ALTER语句再执行一次。
|
|