存档

文章标签 ‘DMB’

MySQL实验室DMB数据库监控及灾备系统 之 [备份模式的选择]

2011年4月14日 谭俊青 1 条评论

很多企业,特别是中、大型互联网企业都在大量的使用MySQL数据库,并且绝大部分情况下使用的都是InnoDB存储引擎。使用InnoDB存储引擎有很多因素,比如事务安全、自动恢复、行锁、在线备份等等特性。

MySQL数据库应用和运维中,除了数据库状态和性能监控之外,数据库的备份一直没有很好的工具去管理,DMB数据库监控及灾备系统就是为解决这一矛盾而诞生的。

DMB系统中备份配置中总共有7种备份模式,下面将针对它们分别介绍,什么样的情况下应该选择什么样的备份模式,以实现最高效的备份,且尽可能的减少对业务的影响。

  • MYSQLDUMP:
    • 调用MySQL系统的mysqldump命令进行备份。其中在只有InnoDB的情况下,可以实现在线热备,不会影响线上业务;在有MyISAM表的情况下,在备份过程当中会增加全局锁,这时候系统是只读的。备份之后会生成 master信息,可以通过备份的SQL文件和master_info.sql 创建slave服务。
  • IBBACKUP_ALL:
    • 备份所有的InnoDB和MyISAM表,在没有MyISAM表的情况下,备份过程中不会对线上业务造成影响,属于在线热备;如果存在MyISAM表,那么在备份完InnoDB之后,备份MyISAM的过程中MySQL数据库是只读的。备份会生成master_info.sql,用于创建slave。
  • IBBACKUP_INNODB:
    • 针对只有InnoDB表的情况,不会备份MyISAM表,属于在线热备,不会造成写堵塞。备份会生成master_info.sql,用于创建slave。
  • IBBACKUP_NONBLOCK:
    • 针对只有InnoDB的情况,不备份MyISAM表,属于在线热备,对系统不造成任何堵塞。备份不生成master_info.sql,不能用该备份创建slave,只用于备份用。
  • XTRABACKUP_ALL: 同 IBBACKUP_ALL
  • XTRABACKUP_INNODB: 同 IBBACKUP_INNODB
  • XTRABACKUP_NONBLOCK: 同 IBBACKUP_NONBLOCK

说明:

  1. 备份模式中以IBBACKUP开头的调用的是 ibbackup,以XTRABACKUP开头的调用的是xtrabackup。
  2. 所有备份都包含MySQL数据库系统库mysql和配置文件my.ini
  3. 在不清楚的情况下备份模式可以选择MYSQLDUMP、IBBACKUP_ALL、XTRABACKUP_ALL 。
  4. IBBACKUP、XTRABACKUP都属于物理备份,恢复速率比MYSQLDUMP要大,能缩短恢复时间。
  5. 其中 IBBACKUP_NONBLOCK、XTRABACKUP_NONBLOCK不会调用flush操作,因此在任何情况下都不会影响在线业务。而其他几种备份模式因为为了取得master info信息,有些会在瞬间加上全局锁然后释放,在极端情况下会对数据库造成一定影响。具体情况以及针对现有MySQL的patch会在后续的blog中加以阐述。

Win7_x64下Wing IDE支持中文显示的方法(修正乱码)

2010年9月15日 谭俊青 1 条评论

最近利用空闲时间用Python编写DMB,遇到编辑器Wing IDE输入中文的时候显示乱码,一番折腾之后放才解决问题。

解决步骤(下面以win7 64, Wing IDE 3.2 为例):

1:打开目录 C:\Program Files (x86)\Wing IDE 3.2\bin\gtk-bin\etc\pango

2:备份文件 pango.aliases

3:以administrator打开文本编辑器(不然后面编辑之后不让保存)编辑文件 pango.aliases,将内容修改为

courier = "microsoft yahei"

sans = "microsoft yahei"
serif = "microsoft yahei"
monospace = "microsoft yahei"
# from MySQL实验室(mysqlab.net)

然后保存,再打开Wing IDE的时候已经解决中文显示乱码问题。

分类: python 标签: , ,

DMB(For MySQL)数据库监控备份工具

2010年8月22日 谭俊青 没有评论

因为初学Python, 花费了几个礼拜的周末休息时间, DMB的雏形已经出来, 并提供下载使用(适合新手和偷懒的人高手跳过),有Bug和建议请及时发聩给我。

因为是初学,在编写DMB的时候,当中遇到一些问题,花费了不少时间来解决,这里总结下,也许能给后进者节约些宝贵的时间。

  • 涉及GUI多线程编程的时候,使用wx.CallAfter(), 如:wx.CallAfter(self.AfterRun);
  • 调用 subprocess.popen, 当子进程已经推出之后 stdin.close()调用会报错, 这时候可以用 try: process.stdin.close()  exception 来屏蔽错误;
  • gzip.GzipFile 对数据流压缩很方便,可以避免临时文件的产生,解压读取方便,效率也不错;
  • 获取硬件指纹 wmi 是个好东东;
  • 加密解密可以用 pyDES, M2Crypto;
  • 用py2exe生成.exe可执行文件的时候的icon可以用过 img2py 生成,然后在程序中设置,可以避免调用win32api,避免在 vista/win7下出错;
  • wx.wizard.Wizard的 finish按钮也可以通过 wizard.FindWindowById(wx.ID_FORWARD).Disable() 来屏蔽,这个浪费了我很长时间。

这次使用wxpython,算是对桌面程序的尝试,不过趋势还是采用B/S,也方便维护和管理人员远程监控和操作管理。如果有必要,会将DMB改造成B/S构架,准备用cherrypy提供web服务,跟系统进行交互。

【阅读全文·MySQL实验室】

分类: MySQL, news / tools, python 标签: , , ,