分类目录归档:MySQL数据库

MySQL多线程逻辑备份工具之mydumper

下载安装

yum -y install cmake glib2 pcre pcre-devel mysql-devel
tar xf  mydumper-0.6.2.tar.gz
cd mydumper-0.6.2
cmake .
make && make install
注释:如果只要帮助可以这样编译make doc_html
安装之后生成两个二进制命令/usr/local/bin/mydumper(备份)和/usr/local/bin/myloader(恢复)

mydumper特性

  • 多线程备份,生成多个备份文件
  • 针对MyISAM表加读锁,会阻塞DML语句
  • 保证备份数据一致性
  • 支持文件压缩和导出binlog
  • 支持多线程恢复
  • 支持守护进程模式,定时快照和连续二进制日志
  • 支持正则匹配
  • 恢复支持是否启用binlog及指定事物的大小(多少insert)
  • 无法备份视图和触发器
  • 备份整库时可用备份存储过程和函数,单库备份等情况无法对其进行备份

mydumper备份机制

主要步骤概括
  1. 主线程 FLUSH TABLES WITH READ LOCK施加全局只读锁,以阻止DML语句写入,保证数据的一致性
  2. 读取当前时间点的二进制日志文件名和日志写入的位置并记录在metadata文件中,以供即使点恢复使用
  3. N个(线程数可以指定,默认是4dump线程 START TRANSACTION WITH CONSISTENT SNAPSHOT开启读一致的事物
  4. dump non-InnoDB tables首先导出非事物引擎的表
  5. 主线程 UNLOCK TABLES 非事物引擎备份完后,释放全局只读锁
  6. dump InnoDB tables基于事物导出InnoDB
  7. 事物结束
备份所生成的文件
  1. 所有的备份文件在一个目录中,目录可以自己指定
  2. 目录中包含一个metadata文件

记录了备份数据库在备份时间点的二进制日志文件名,日志的写入位置,
如果是在从库进行备份,还会记录备份时同步至从库的二进制日志文件及写入位置

3.  每个表有两个备份文件:

database.table-schema.sql 表结构文件
database.table.sql 表数据文件
如果对表文件分片,将生成多个备份数据文件,可以指定行数或指定大小分片

mydumper参数详解

myloader参数详解

使用案例

注释:后台记录导出导入的时间

最后其他备份工具如:mysqldump/mysqlhotcopy/MySQLDumper 、mk-parallel-dump/mk-parallel-restore 、Xtrabackup/LVM Snapshot 暂时想到这么多,以后再想到再补充吧,也欢迎各位大拿fork工具库提交 https://github.com/geekwolf/sa-scripts/blob/master/devops.md 

 

Flashcache基本使用及注意事项

环境:Centos6.5 x64 minal

安装方法

1.rpm安装

2.源码安装

自动加载模块

开机自动加载模块配置:

模块的自动加载最好不要采用写入/etc/rc.local的方式

创建Flashcache

SSD:/dev/sdc
SAS:/dev/sdb2
创建设备名为cachedev的flashcache

生成/dev/mapper/cachedev设备
指定flashcache的block大小与Percona的page大小相同,一般默认

flashcache_create相关参数说明:

-p:缓存模式 writeback(数据先写到SSD,随后写到普通硬盘),
                    writethrough(数据同时写到SSD和普通硬盘),
                    writearound(数据绕过SSD,直接写到普通硬盘)三种,三种模式的所有读都会被缓存到flashcache可以通过dev.flashcache.<cachedev>.cache_all参数调整
-s:缓存大小,可选项,如果未指定则整个SSD设备被用于缓存,默认的计数单位是扇区(sectors),但是可以接受k/m/g单位。
-b:指定块大小,可选项,默认为4KB,必须为2的指数。默认单位为扇区。也可以用K作为单位,一般选4KB。
-f:强制创建,不进行检查

-m:设备元数据块大小,只有writeback需要存储metadata块,默认4K

查看帮助

其他帮助参考flashcache源码目录下的man目录

加载缓存设备

加载已存在的flashcache操作仅用于writeback模式,writethrough和writearound模式重启机器后需要重新使用flashcache_create创建

使用Flashcache

创建好的flashcache设备是块设备,可格式文件系统后挂在使用,也可以继续对其分区等

mount /dev/mapper/cachedev /data

销毁Flashcache

flashcache_destroy /dev/sdc  

这种方式删除writeback模式的flashcache时会将SSD上的所有数据删除包括脏数据

建议使用dmsetup命令(device-mapper软件包)删除,会自动将脏数据写入磁盘

dmsetup remove cachedev

Flashcache参数优化

参数介绍参考:https://github.com/facebook/flashcache/blob/master/doc/flashcache-sa-guide.txt

针对MySQL作此优化

Flashcache开机启动

flashcache模块自动加载–flashcache设备自动加载flashcache_load /dev/sdc  cachedev

A.模块自动加载请参考安装部分

B.开机自动加载已创建的缓存设备及挂载

Flashcache状态监控

到此flashcache的基本使用就是这样,看了网上很多资料都是各种抄袭,不凡错误的,最后还是读了官方的帮助,总结出自己的以便以后使用;

后续要做的就是增加了SSD缓存后,要观察SSD的使用情况及缓存命中率等在逐渐调试优化,下一篇增加MySQL数据库从系统/MySQL方面的一些优化总结和大家分享,请继续关注

推荐IO测试工具

fio、iozone 更多参考https://github.com/geekwolf/sa-scripts/blob/master/devops.md

注意事项:

flashcache_create创建了缓存设备之后挂载即可使用,如创建之后使用flashcache_load /dev/sdc  cachedev会提示Invalid Flashcache superblock的错误

参考文档

http://blog.163.com/digoal%40126/blog/static/163877040201463101652528/

https://github.com/facebook/flashcache/blob/master/doc/flashcache-sa-guide.txt