大家好,又见面了,我是你们的朋友全栈君。
Mysql数据库备份策略
我的petstore所用的数据库是Mysql。Mysql的数据库备份不象那些企业界数据库那样完善,分为完全备份、差分备份以及日记纪录等等。Mysql备份数据库两个主要方法是用mysqldump程序或直接拷贝数据库文件。
mysqldump与MySQL服务器协同操作。直接拷贝方法在服务器外部进行,并且你必须采取措施保证没有客户正在修改你将拷贝的表。如果你想用文件系统备份来备份数据库,也会发生同样的问题:如果数据库表在文件系统备份过程中被修改,进入备份的表文件主语不一致的状态,而对以后的恢复表将失去意义。文件系统备份与直接拷贝文件的区别是对后者你完全控制了备份过程,这样你能采取措施确保服务器让表不受干扰。
利用Mysql备份与拷贝数据库的语句为:
>mysqldump –u 用户名 –p 密码 数据库名 > 备份文件名
拿petstore来说:
>mysqldump –u root –p **** petstore >petstore.sql
事实上mysql备份只是成一个文本文件,比如petstore备份的结果文件petstore.sql的开头如下:
— MySQL dump 10.9
—
— Host: localhost Database: petstore
— ——————————————————
— Server version 4.1.11-nt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=’NO_AUTO_VALUE_ON_ZERO’ */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
—
— Table structure for table `account`
—
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`userid` varchar(25) NOT NULL default ”,
`email` varchar(80) NOT NULL default ”,
`fullname` varchar(80) NOT NULL default ”,
`country` varchar(20) NOT NULL default ”,
`city` varchar(80) NOT NULL default ”,
`address` varchar(80) NOT NULL default ”,
`zip` varchar(20) NOT NULL default ”,
`phone` varchar(80) NOT NULL default ”,
PRIMARY KEY (`userid`),
CONSTRAINT `fk_account` FOREIGN KEY (`userid`) REFERENCES `client` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
—
— Dumping data for table `account`
—
/*!40000 ALTER TABLE `account` DISABLE KEYS */;
LOCK TABLES `account` WRITE;
INSERT INTO `account` VALUES (‘…‘);
UNLOCK TABLES;
/*!40000 ALTER TABLE `account` ENABLE KEYS */;
由此可见,mysql备份的结果就是sql查询语句,文件剩下的部分有更多的INSERT和CREATE TABLE语句组成。
当想恢复数据库时只要执行以下步骤即可:
>mysql –h localhost –r root –p ****
Mysql>use petstore;
Mysql>source petstore.sql;
此时数据库就恢复到备份之前的状态。
如果想自动备份,可以写一个脚本,每隔一定时间就备份一次,window下可以写个批处理,linux下可以写个bash 脚本。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134323.html原文链接:https://javaforall.cn