技术开发 频道

MySQL的有备无患

  【IT168技术文档】众所周知,企业应用数据库除了速度,性能,安全等因素之外最重要的因为就在于备份数据。有了安全可靠的备份后,身为SA的我们便可舒心的享受生活了,反之,如果没有一个可靠的备份策略,那么各位同事一定时时的在为数据的丢失而烦恼。那本文就总结了笔者在企业中对于备份的的一些心得。

  首先我对MYSQL数据库的备份计划分为二个步骤,第一步为时时备份,就是MYSQL的MASTER,SLAVE模式,此模式的优势就在可以从MASTER数据库即时的备份到SLAVE上,对于硬盘损坏导致的数据库问题可以有效的进行预防,同时在配置文件中可声明生成二进制日志文件,又可以在任意时间进行数据恢复。第二部完全备份,有了时时备份,仍不可掉以轻信,大家都知道计算机这东西没准什么时间就会给你冒个异常,作为一名合格的系统管理员,我们要尽量做到万无一失误,那么我的计划是在本地的CRONTAB中添加每日的MYSQLDUMP命令,用来导出数据库,并传送到一台备份服务器。

  下面来具体的为大家说明如何来实施我的计划:

  1.主从模式:

  MASTER:

  配置my.cnf,在[mysqld]中添加

  server-id=1

  log-bin#(启动二进制备份)

  binlog-do-db=database1 #(选择需要备份的本地数据库)

  log#(记录本地LOG日志)

  log-update#(更新本地LOG日志)

  在MYSQL中执行:

  GRANT SELECT,REPLICATION SLAVE ON database1.* TO backup@123.123.123.123 IDENTIFIED BY 'backuppwd';

  解释:

  log-bin#(启动二进制备份)

  binlog-do-db=database1,database2#(选择需要备份的本地数据库)

  将本地的数据存储转换为二进制模式,方便传送至SLAVE,本地查看数据库日志不方便。

  log#(记录本地LOG日志)

  log-update#(更新本地LOG日志)

  直接将二进制日志记录在本地,本地会在数据库目录生成以主机名命名的log文件,方便本地查看。

  GRANT SELECT,REPLICATION SLAVE ON database1.* TO backup@123.123.123.123 IDENTIFIED BY 'backuppwd';

  为SLAVER添加一个可以访问的用户

  SLAVER:

  server-id=2

  master-host=123.123.123.123#(MASTER的IP)

  master-user=backup

  master-password=backuppwd

  master-port=3306

  master-connect-retry=60

  set-variable=replicate-do-db=database1

  log-bin

  log-slave-updates

  解释:

  server-id=2

  master-host=123.123.123.123#(MASTER的IP)

  master-user=backup

  master-password=backuppwd

  master-port=3306

  master-connect-retry=60

  配置MASTER的相关信息

  log-bin

  log-slave-updates

  本地记录二进制日志并更新  

  2.完全模式

  在CRONTAB中写入

  0 0 * * * mysqldump database > /sqlbak/database_`date +%Y%m%d`.sql

  完整数据库文件被导出后可以用SCP拷贝到备份服务器(可参考SSH无密码认证方法),这里就不说了。

  解释:

  在每天0点的时候对DATABASE数据库进行备份并以当天日期作为文件名,例如今天会生成database_20090218.sql

  有了这双层保险,相信大家在数据库管理方便可以轻松很多吧。本文只是介绍了MYSQL备份策略的冰山一角,更多的应用还需要大家自己琢磨,若有解释不当的地方还请大家海涵,愿和各位系统爱好者一同进步。

  附:通过二进制文件恢复数据:

  mysqlbinlog --stop-date="2009-02-18 00:00:00" /var/lib/mysql/commail-bin.000001 > /sqlbak/090218.sql

  恢复2009年2月18日0点前的完整数据库信息到/sqlbak/090218.sql

0
相关文章