一种mysql数据库备份的方法与流程

文档序号:16207663发布日期:2018-12-08 07:19阅读:207来源:国知局
本发明属于数据库设计
技术领域
:,具体涉及一种mysql数据库备份的方法。
背景技术
:mysql是一个关系型数据库管理系统,由瑞典mysqlab公司开发,目前属于oracle旗下产品。mysql是最流行的关系型数据库管理系统之一,在web应用方面,mysql是最好的rdbms(relationaldatabasemanagementsystem,关系数据库管理系统)应用软件。mysql是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。mysql所使用的sql语言是用于访问数据库的最常用标准化语言。mysql软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择mysql作为网站数据库。与其他的大型数据库例如oracle、db2、sqlserver等相比,mysql自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,mysql提供的功能已经绰绰有余,而且由于mysql是开放源码软件,因此可以大大降低总体拥有成本。mysql作为流行的数据库,由于其廉价、易用、高效、稳定,被大多数应用系统采用;同时,服务于服务器测试人员的测试管理系统,测试执行系统也采用了mysql数据库。mysql中存储了测试流程中很多重要的数据,对其中数据的保存与恢复是必不可少。而现有技术中的针对mysql数据库的恢复本备份技术,容易造成有意无息数据的丢失。此为现有技术的不足之处。因此,针对现有技术中的上述缺陷,提供设计一种mysql数据库备份的方法;以解决现有技术中的上述缺陷,是非常有必要的。技术实现要素:本发明的目的在于,针对上述现有技术存在的缺陷,提供设计一种mysql数据库备份的方法,以解决上述技术问题。为实现上述目的,本发明给出以下技术方案:一种mysql数据库备份的方法,其特征在于,它包括以下步骤:s1:开启mysql数据库的masterlogbin功能;s2:配置slave库;s3:备份数据库;s4:累积历史数据。所述步骤s1具体包括以下步骤:s11:开启masterlogbin功能,需要在my.ini→[mysqld]下设置:server_id=1log_bin=mysql-binsync_logbin=1其中,server_id是由于要搭建主备数据库集群,还需要在备库上指定不同值。log_bin项才是指示要开启logbin功能的配置项,sync_logbin指示要在写logbin结束后才标志对数据库的操作成功。s12:重启mysql服务;这样,master下的logbin已经开启了。通过showmasterstatus命令可以查看当前logbin的状态。在开启了masterlogbin功能后,mysql的工作目录下会有mysql-bin.xxxxxx文件产生,这些文件中存储了修改数据库的操作过程,它们放在本地是不安全的,在后面的步骤中,把它们拷贝到不同的机器上,并用它们重建数据库,达到备份的目的。后面的步骤,都需要一个起始的数据库状态,这是通过mysqldump命令生成的。比如要生成数据库名为itms的数据库快照:mysqldump.exe-uroot–p–master-data--databasesitms>itms.sql其中,--master-data会在结果文件的最后加上一条sql语句:changemastertomaster_log_file='mysql-bin.000003',master_log_pos=514314;这条语句表明了当前数据库快照是截止到位置mysql-bin.000003:514314.若是想删除快照之前的logbin文件可以在命令中加上参数–delete-master-logs.配置slave库的时候,需要一个账号来连接master库,这就需要下面的命令:grantreplicationslave,reload,superon*.*tobackup@'%'identifiedby'123456';所述步骤s2具体包括以下步骤:slave库是为了mysql数据库的可用性,因此,要在另一台机器上配置slave库。开启mysql数据库的slave功能,需要在my.ini→[mysqld]下设置:server_id=2read_only=1重启mysql服务器。其中,read_only配置项指示不能在slave库上写入新的数据,所有的数据来自master。这样保证master库和slave库数据的一致性.接着,连接master库,命令为:changemastertomaster_host='10.200.104.6',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0;接着,导入itms.sql,这个文件是上一步生成的。最后,执行startslave命令。这样,就开启了slave库。所述步骤s3具体包括以下步骤:基于logbin的数据库的备份是通过mysqllogbin命令来实现的,在另一台服务器上,执行命令:mysqlbinlog--read-from-remote-server--host=host_name--user=user_name--password=password--raw--to-last-logbinlog.xxxxxx--stop-never其中,binlog.xxxxxx是当前在备份服务器上最后的那个binlog文件,若还不存在,就用logbin.000001代替。这样,master库上的所有的logbin就拷贝到备份库机器上了。若要获取某个时刻的数据库快照,还是需要mysqlbinlog命令:mysqlbinlog--start-position=xxxx--stop-date="2018-05-2723:00:00"mysql-bin.xxxxxxmysql-bin.*>itms1.sql;其中,start-position中的xxxx和mysql-bin.xxxxxx来自步骤s1中itms.sql文件中指示的坐标。mysql-bin.*表示mysql-bin.xxxxxx后面所有的mysql-bin文件。stop-date指示了要生成何时的数据库快照。这样,itms.sql和itms1.sql联合起来就是某一时刻的数据库快照。所述步骤s4具体包括以下步骤:itms.sql和itms1.sql是某一时刻的数据库快照,其实,更进一步的,itms1.sql是由binlog生成的,里面包括了最近的时间范围内,所有的插入删除操作。为了获取最新的数据库备份,可以这样做,由第一个itms.sql把备份数据库建成最早的状态,以后按照步骤s3方式,生成最新的itms.sql,并把里面的语句应用到备份数据库,这样,就能得到最新的数据库状态,最终会和slave库里面的内容是一样的。若在备份数据库里面增加触发器,忽略掉所有删除语句,最终的数据库状态就和slave库不一致,里面多出来的是所有之前删除的数据。这样,备份库中的内容就是所有历史数据。下面是一个触发器示例:delimiter|createtriggerforbid_delete_1beforedeleteonitms_task_and_caseforeachrowbeginupdatenone_exist_tablesetid=1;end|delimiter;这个触发器的作用是使对itms_task_and_case表中的所有删除操作变得无效,因为这个触发器在删除操作之前执行,并且会报异常,这样,删除操作就不再执行了。本发明的有益效果在于,供了一个mysql数据库备份的方式,这种方式可以重建任何时刻的数据库,并且可以累积出来所有的历史数据。这种备份方式能够对测试流程中产生的珍贵数据最大限度的保存,避免了所有有意无息的数据丢失,为后续的分析、审计提供数据支撑。此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。附图说明图1是本发明提供的一种mysql数据库备份的方法的步骤示意图。具体实施方式下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。如图1所示,本实施例提供一种mysql数据库备份的方法,它包括以下步骤:s1:开启mysql数据库的masterlogbin功能;具体包括以下步骤:s11:开启masterlogbin功能,需要在my.ini→[mysqld]下设置:server_id=1log_bin=mysql-binsync_logbin=1其中,server_id是由于要搭建主备数据库集群,还需要在备库上指定不同值。log_bin项才是指示要开启logbin功能的配置项,sync_logbin指示要在写logbin结束后才标志对数据库的操作成功。s12:重启mysql服务;这样,master下的logbin已经开启了。通过showmasterstatus命令可以查看当前logbin的状态。在开启了masterlogbin功能后,mysql的工作目录下会有mysql-bin.xxxxxx文件产生,这些文件中存储了修改数据库的操作过程,它们放在本地是不安全的,在后面的步骤中,把它们拷贝到不同的机器上,并用它们重建数据库,达到备份的目的。后面的步骤,都需要一个起始的数据库状态,这是通过mysqldump命令生成的。比如要生成数据库名为itms的数据库快照:mysqldump.exe-uroot–p–master-data--databasesitms>itms.sql其中,--master-data会在结果文件的最后加上一条sql语句:changemastertomaster_log_file='mysql-bin.000003',master_log_pos=514314;这条语句表明了当前数据库快照是截止到位置mysql-bin.000003:514314.若是想删除快照之前的logbin文件可以在命令中加上参数–delete-master-logs.配置slave库的时候,需要一个账号来连接master库,这就需要下面的命令:grantreplicationslave,reload,superon*.*tobackup@'%'identifiedby'123456';s2:配置slave库,具体包括以下步骤:slave库是为了mysql数据库的可用性,因此,要在另一台机器上配置slave库。开启mysql数据库的slave功能,需要在my.ini→[mysqld]下设置:server_id=2read_only=1重启mysql服务器。其中,read_only配置项指示不能在slave库上写入新的数据,所有的数据来自master。这样保证master库和slave库数据的一致性.接着,连接master库,命令为:changemastertomaster_host='10.200.104.6',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0;接着,导入itms.sql,这个文件是上一步生成的。最后,执行startslave命令。这样,就开启了slave库。s3:备份数据库基于logbin的数据库的备份是通过mysqllogbin命令来实现的,在另一台服务器上,执行命令:mysqlbinlog--read-from-remote-server--host=host_name--user=user_name--password=password--raw--to-last-logbinlog.xxxxxx--stop-never其中,binlog.xxxxxx是当前在备份服务器上最后的那个binlog文件,若还不存在,就用logbin.000001代替。这样,master库上的所有的logbin就拷贝到备份库机器上了。若要获取某个时刻的数据库快照,还是需要mysqlbinlog命令:mysqlbinlog--start-position=xxxx--stop-date="2018-05-2723:00:00"mysql-bin.xxxxxxmysql-bin.*>itms1.sql;其中,start-position中的xxxx和mysql-bin.xxxxxx来自步骤s1中itms.sql文件中指示的坐标。mysql-bin.*表示mysql-bin.xxxxxx后面所有的mysql-bin文件。stop-date指示了要生成何时的数据库快照。这样,itms.sql和itms1.sql联合起来就是某一时刻的数据库快照。s4:累积历史数据itms.sql和itms1.sql是某一时刻的数据库快照,其实,更进一步的,itms1.sql是由binlog生成的,里面包括了最近的时间范围内,所有的插入删除操作。为了获取最新的数据库备份,可以这样做,由第一个itms.sql把备份数据库建成最早的状态,以后按照步骤s3方式,生成最新的itms.sql,并把里面的语句应用到备份数据库,这样,就能得到最新的数据库状态,最终会和slave库里面的内容是一样的。若在备份数据库里面增加触发器,忽略掉所有删除语句,最终的数据库状态就和slave库不一致,里面多出来的是所有之前删除的数据。这样,备份库中的内容就是所有历史数据。下面是一个触发器示例:delimiter|createtriggerforbid_delete_1beforedeleteonitms_task_and_caseforeachrowbeginupdatenone_exist_tablesetid=1;end|delimiter;这个触发器的作用是使对itms_task_and_case表中的所有删除操作变得无效,因为这个触发器在删除操作之前执行,并且会报异常,这样,删除操作就不再执行了。以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1