52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
const config = require("./config")
|
|
import mysqldump from 'mysqldump';
|
|
|
|
const Importer = require('mysql-import');
|
|
|
|
module.exports = class {
|
|
constructor(app, sequelize) {
|
|
this.app = app
|
|
this.sequelize = sequelize
|
|
this.file = this.app.root + '/' + config.database + '.sql'
|
|
}
|
|
|
|
//备份数据库所有表
|
|
async backup(file) {
|
|
this.file = file || this.app.root + '/' + config.database + '.sql'
|
|
console.log('备份数据库中...');
|
|
await mysqldump({
|
|
connection: {
|
|
host : config.options.host,
|
|
port : config.options.port,
|
|
user : config.username,
|
|
password: config.password,
|
|
database: config.database,
|
|
|
|
},
|
|
dumpToFile: this.file,
|
|
});
|
|
console.log('备份数据库完成:', this.file);
|
|
}
|
|
//还原备份sql文件
|
|
async reduction() {
|
|
console.time("reduction")
|
|
//先备份旧数据
|
|
await this.backup(this.app.root + '/' + 'extend/mysql/backup/' + Date.now() + '.sql')
|
|
//清空数据库
|
|
await this.sequelize.drop()
|
|
//导入sql文件
|
|
const importer = new Importer({
|
|
host : config.options.host,
|
|
port : config.options.port,
|
|
user : config.username,
|
|
password: config.password,
|
|
database: config.database,
|
|
});
|
|
this.file = this.app.root + '/' + config.database + '.sql'
|
|
// const res = await importer.import(this.file)
|
|
// console.log(res);
|
|
console.timeEnd("reduction")
|
|
}
|
|
|
|
}
|