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

[经验分享] Mysql5.5使用裸设备存储

[复制链接]

尚未签到

发表于 2018-9-27 12:51:51 | 显示全部楼层 |阅读模式
  Mysql的innodb支持把表和索引存储在裸设备中,存储的I/O等待问题一直是影响数据库性能的关键,裸设备不需要经过文件系统I/O处理,因而在性能上有一定的提升,在使用rhel中的kvm虚拟机的时候有明显的感觉,使用裸设备+virtio的性能基本与物理机没差别;在Oracle中,裸设备从11g开始就不被支持,而10g rac的ocr和votedisk还必须使用裸设备存储,Oracle推荐使用ASM来提升存储的I/O性能,ASM支持条带,冗余和在线添加删除磁盘组等等高级功能,同时有具有一定的可管理性;相比之下Mysql的裸设备就比较脆弱,或许在分布式基础上,Mysql单实例的数据量还不需要用裸设备来提升I/0性能,下面来演示下如何在Mysql上使用裸设备存储innodb存储类型的表和索引
  一:创建LVM卷,并使用raw来绑定,其中raw1-raw5为oracle的asm磁盘
  


  • [root@dg53 ~]# lvcreate -n mydata -L 1G VolGroup00
  •   Volume Groups with the clustered attribute will be inaccessible.
  •   Logical volume "mydata" created

  • [root@dg53 ~]# lvs
  •   Skipping clustered volume group new_vg
  •   LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  •   LogVol00 VolGroup00 -wi-ao 29.28G
  •   LogVol01 VolGroup00 -wi-ao 29.28G
  •   mydata   VolGroup00 -wi-a-  1.00G

  • [root@dg53 ~]# cat /etc/sysconfig/rawdevices
  • /dev/raw/raw1   /dev/sdb1
  • /dev/raw/raw2   /dev/sdc1
  • /dev/raw/raw3   /dev/sdd1
  • /dev/raw/raw4   /dev/sde1
  • /dev/raw/raw5   /dev/sdf1

  • /dev/raw/raw6  /dev/VolGroup00/mydata

  • [root@dg53 ~]# service rawdevices restart
  • Assigning devices:
  •            /dev/raw/raw1  -->   /dev/sdb1
  • /dev/raw/raw1:  bound to major 8, minor 17
  •            /dev/raw/raw2  -->   /dev/sdc1
  • /dev/raw/raw2:  bound to major 8, minor 33
  •            /dev/raw/raw3  -->   /dev/sdd1
  • /dev/raw/raw3:  bound to major 8, minor 49
  •            /dev/raw/raw4  -->   /dev/sde1
  • /dev/raw/raw4:  bound to major 8, minor 65
  •            /dev/raw/raw5  -->   /dev/sdf1
  • /dev/raw/raw5:  bound to major 8, minor 81
  •            /dev/raw/raw6  -->   /dev/VolGroup00/mydata
  • /dev/raw/raw6:  bound to major 253, minor 2
  • done

  • [root@dg53 ~]# raw -qa
  • /dev/raw/raw1:  bound to major 8, minor 17
  • /dev/raw/raw2:  bound to major 8, minor 33
  • /dev/raw/raw3:  bound to major 8, minor 49
  • /dev/raw/raw4:  bound to major 8, minor 65
  • /dev/raw/raw5:  bound to major 8, minor 81
  • /dev/raw/raw6:  bound to major 253, minor 2

  • [root@dg53 ~]# chown mysql.mysql /dev/raw/raw6
  

  二:修改my.cnf文件,在[mysqld]中添加如下两项!关于数据库的存储是否需要使用裸设备应当在数据库创建前规划好
  


  • [root@dg53 ~]# grep 'innodb_data' /etc/my.cnf
  • innodb_data_home_dir =
  • innodb_data_file_path = /dev/raw/raw6:1Gnewraw
  

  三:初始化mysql数据库,启动mysql服务,在日志中可以看到格式化过程,在未将前面两项配置中的newraw改为raw之前,无法创建innodb类型的表
  


  • [root@dg53 mysql-5.5.25]# sh ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql5.5.25/ --datadir=/mydata/

  • [root@dg53 mysql-5.5.25]# service mysqld start
  • Starting MySQL....................[  OK  ]

  • [root@dg53 ~]# tail -f /mydata/dg53.yang.com.err
  • 110601  9:55:51 InnoDB: The InnoDB memory heap is disabled
  • 110601  9:55:51 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
  • 110601  9:55:51 InnoDB: Compressed tables use zlib 1.2.3
  • 110601  9:55:51 InnoDB: Initializing buffer pool, size = 128.0M
  • 110601  9:55:51 InnoDB: Completed initialization of buffer pool
  • InnoDB: The first specified data file /dev/raw/raw6 did not exist:
  • InnoDB: a new database to be created!
  • 110601  9:55:51  InnoDB: Setting file /dev/raw/raw6 size to 1024 MB
  • InnoDB: Database physically writes the file full: wait...
  • InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
  • 110601  9:56:09  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
  • InnoDB: Setting log file ./ib_logfile0 size to 5 MB
  • InnoDB: Database physically writes the file full: wait...
  • 110601  9:56:09  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
  • InnoDB: Setting log file ./ib_logfile1 size to 5 MB
  • InnoDB: Database physically writes the file full: wait...
  • InnoDB: Doublewrite buffer not found: creating new
  • InnoDB: Doublewrite buffer created
  • InnoDB: 127 rollback segment(s) active.
  • InnoDB: Creating foreign key constraint system tables
  • InnoDB: Foreign key constraint system tables created
  • 110601  9:56:10  InnoDB: Waiting for the background threads to start
  • 110601  9:56:11 InnoDB: 1.1.8 started; log sequence number 0
  • 110601  9:56:11 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
  • 110601  9:56:11 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
  • 110601  9:56:11 [Note] Server socket created on IP: '0.0.0.0'.
  • 110601  9:56:11 [Note] Event Scheduler: Loaded 0 events
  • 110601  9:56:11 [Note] /usr/local/mysql5.5.25/bin/mysqld: ready for connections.
  • Version: '5.5.25-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
  • InnoDB: A new raw disk partition was initialized:
  • InnoDB: we do not allow database modifications by the user.
  • InnoDB: Shut down mysqld and edit my.cnf so that newraw is replaced with raw.

  • mysql> create database bbs;
  • Query OK, 1 row affected (0.00 sec)

  • mysql> use bbs;
  • Database changed
  • mysql> create table user as select * from mysql.user;
  • ERROR 1005 (HY000): Can't create table 'bbs.user' (errno: -1)
  

  四:关闭数据库后,修改my.cnf文件,重新启动数据库,建表并插入数据测试
  


  • [root@dg53 ~]# service mysqld stop
  • Shutting down MySQL.[  OK  ]

  • [root@dg53 ~]# grep 'innodb_data' /etc/my.cnf
  • innodb_data_home_dir =
  • innodb_data_file_path = /dev/raw/raw6:1Graw

  • [root@dg53 ~]# service mysqld start
  • Starting MySQL..[  OK  ]

  • mysql> use bbs;
  • Database changed
  • mysql> create table user as select * from mysql.user;
  • Query OK, 6 rows affected (0.05 sec)
  • Records: 6  Duplicates: 0  Warnings: 0

  • mysql> insert into user select * from user;
  • Query OK, 6 rows affected (0.01 sec)
  • Records: 6  Duplicates: 0  Warnings: 0

  • mysql> insert into user select * from user;
  • Query OK, 12 rows affected (0.01 sec)
  • Records: 12  Duplicates: 0  Warnings: 0

  • mysql> insert into user select * from user;
  • Query OK, 24 rows affected (0.01 sec)
  • Records: 24  Duplicates: 0  Warnings: 0

  • mysql> insert into user select * from user;
  • Query OK, 48 rows affected (0.00 sec)
  • Records: 48  Duplicates: 0  Warnings: 0

  • mysql> insert into user select * from user;
  • Query OK, 96 rows affected (0.05 sec)
  • Records: 96  Duplicates: 0  Warnings: 0

  • mysql> insert into user select * from user;
  • Query OK, 192 rows affected (0.01 sec)
  • Records: 192  Duplicates: 0  Warnings: 0

  • mysql> insert into user select * from user;
  • Query OK, 384 rows affected (0.02 sec)
  • Records: 384  Duplicates: 0  Warnings: 0

  • mysql> commit;
  • Query OK, 0 rows affected (0.00 sec)

  • mysql> create index i_user_host on user(host);
  • Query OK, 0 rows affected (0.16 sec)
  • Records: 0  Duplicates: 0  Warnings: 0
  

  五:使用strings命令萃取裸设备中可打印的字符
  


  • [root@dg53 ~]# strings /dev/raw/raw6 |grep dg53.yang.com |head
  • Vdg53.yang.com
  • rdg53.yang.com                                               root
  • dg53.yang.com
  • dg53.yang.com                                               root
  • dg53.yang.com
  • dg53.yang.com                                               root
  • Rdg53.yang.com
  • dg53.yang.com                                               root
  • Vdg53.yang.com
  • rdg53.yang.com                                               root



运维网声明 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-602833-1-1.html 上篇帖子: MySQL多实例安装配置指南 下篇帖子: MySQL Replication数据不一致
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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