MYSQL优化部署之XFS文件系统

MYSQL优化之XFS文件系统

在最新的centos 6.2系统中
MYSQL可以使用XFS文件系统存取了
最佳的独享I/O

曾经对XFS、JFS、Ext3、ReiserFS文件系统进行过测试,XFS文件文件系统的性能表现相当出众

为什么使用XFS?
采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。
XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。
XFS使用高的表结构(B+树),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。
XFS传输带宽能以接近裸设备I/O的性能存储数据。在单个文件系统的测试中,其吞吐量最高可达7GB每秒,对单个文件的读写操作,其吞吐量可达4GB每秒。

详细的部署教程

操作系统: CentOS 6.2 64bit
硬盘设备: /dev/sdb
旧MYSQL目录: /var/lib/mysql
新MYSQL目录: /mysql

首先
格式化硬盘
fdisk /dev/sdb
Sequence pressed on keyboard: n > p > 1 > Enter > Enter > w
$ fdisk -l /dev/sdb

Disk /dev/sdb: 11.8 GB, 11811160064 bytes
255 heads, 63 sectors/track, 1435 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xaa7ca5e3

Device Boot Start End Blocks Id System
/dev/sdb1 1 1435 11526606 83 Linux

yum install -y xfs*
mkfs.xfs /dev/sdb1

xfs_check /dev/sdb1
mkdir /mysql
mount /dev/sdb1 /mysql

添加开机挂载
/etc/fstab

/dev/sdb1 /mysql xfs defaults 0 0

目录变更
$ service mysql stop
$ rsync -avz /var/lib/mysql/ /mysql
$ chown mysql.mysql /mysql
注意要先停止,否则数据可能不同步

MYSQL配置文件更新
datadir = /mysql
启动
service mysql start

检查文件系统的状态
$ mount | grep xfs
/dev/sdb1 on /mysql type xfs (rw)

修复文件系统
$ umount /mysql
$ xfs_repair /dev/sdb1
注意需要先卸载后在修复

相关:

  • mysql 支持xfs文件
  • linux xfs调优
  • MYSQK
  • mysql xfs fstab
  • mysql文件系统
  • XFSArchives|
  • XFS博客
  • XFS的调优

测试MYSQL负载 生成MYSQL测试数据的方式

通常我们使用mysql数据库服务器 以及mysql集群的时候
需要进行mysql性能以及压力测试
这个时候 我们不能使用生成环境
只能生成一批数据进行测试

本教程就是教你如何生成测试数据

测试约定
MySQL: 版本 5.1.xx Community Server
数据库: dbTest
数据表: test_data

首先 登录

mysql -uroot -p

建立数据库和表

CREATE DATABASE dbTest;
USE dbTest;
CREATE TABLE test_data (
a INT(10) NULL,
b INT(10) NULL,
c INT(10) NULL
)
ENGINE=InnoDB;

生成10万条记录 单次随机插入1000条

DELIMITER //
CREATE PROCEDURE GenerateFakeData()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 100000 DO INSERT INTO tbl_data1 (a,b,c) VALUES ((SELECT floor(rand() * 1000) AS randNum), (SELECT floor(rand() * 1000) AS randNum),(SELECT floor(rand() * 1000) AS randNum)); SET i = i + 1; END WHILE; END // DELIMITER ;

USE dbTest;
CALL GenerateFakeData();

调用

最后我们进行查询测试

SELECT * FROM dbTest.tbl_data1 LIMIT 1,10;

查询10条记录

+——+——+——+
| a | b | c |
+——+——+——+
| 521 | 662 | 748 |
| 753 | 523 | 356 |
| 212 | 994 | 334 |
| 689 | 441 | 139 |
| 374 | 453 | 145 |
| 364 | 386 | 837 |
| 30 | 637 | 96 |
| 571 | 569 | 129 |
| 940 | 312 | 741 |
| 770 | 628 | 828 |
+——+——+——+
10 rows in set (0.00 sec)

是不是有数据库了?

相关:

  • mysql 生成测试数据
  • mysql生成测试数据

Error: Got error: 1016: Can’t open file: ‘./dbname/xxx.frm’ (errno: 24) when using LOCK TABLES

Error: MySQL – mysqldump: Got error: 1016: Can’t open file: ‘./exampledb/xxx.frm’ (errno: 24) when using LOCK TABLES

MYSQL导出数据的时候,出现1016错误的解决办法

尝试备份数据的时候:

mysqldump -u root -ppassword –opt dbname > dbbackup.sql

root@test1:/tmp/mysql# mysqldump -u root -ppassword –opt dbname > dbbackups.sql
mysqldump: Got error: 1016: Can’t open file: ‘./dbname/xxx.frm’ (errno: 24) when using LOCK TABLES
root@test1:/tmp/mysql#

会报某个数据库文件表被锁定的错误 常见MYSQL 1016错误

解决办法

执行mysqldump的时候 添加 –lock-tables=false 字段

mysqldump -u root -ppassword –opt dbname –lock-tables=false > dbbackups.sql

OKay了吧?
这种错误常见于各种CMS于论坛程序的临时表,比如存储session 和临时缓存的这类

 

相关:

  • 1016Archives-
  • ERROR 1016 (HY000): Cant open file: admin ibd (errno: 1)
  • strongacl

Posts navigation

1 2 3
Scroll to top