起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1659|回复: 6

[处理中3] 想备份部署后的数据库

[复制链接]

35

主题

142

帖子

362

积分

中级会员

Rank: 3Rank: 3

积分
362
QQ
发表于 2017-1-14 22:08:49 | 显示全部楼层 |阅读模式
想备份部署后的数据库,查了备份操作资料
 1、备份一个数据库

  mysqldump基本语法:

  mysqldump -u username -p dbname table1 table2 ...-> BackupName.sql

  其中:

dbname参数表示数据库的名称;
table1和table2参数表示需要备份的表的名称,为空则整个数据库备份;
BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件;

于是想把云端数据库备份一个sql文件到本地,一旦出现问题,可以重新部署,具体应该怎样实现呢?
最好有一个案例可参考
发表于 2017-1-16 11:26:22 | 显示全部楼层
云上的数据库没有提供远程操作的方法!,所以只能自己做一个功能实现!就是在java代码中,通过执行sql语句完成这个能力!

关于BaasServer中自定义sql 可以参考:
http://docs.wex5.com/wex5-server-question-list-2012/

获取connection 对象后,执行你的那个sql语句自己实现吧!
目前没提供这样的案例
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

35

主题

142

帖子

362

积分

中级会员

Rank: 3Rank: 3

积分
362
QQ
 楼主| 发表于 2017-1-17 00:31:57 | 显示全部楼层
好吧,再研究一下。
回复 支持 反对

使用道具 举报

35

主题

142

帖子

362

积分

中级会员

Rank: 3Rank: 3

积分
362
QQ
 楼主| 发表于 2017-1-18 21:58:43 | 显示全部楼层
查了资料,在应用中备份数据库的话,需要知道MySQL的bin路径和用户名、密码,这些参数怎样获得呢?
回复 支持 反对

使用道具 举报

发表于 2017-1-19 14:10:44 | 显示全部楼层
ffqfb_wzy 发表于 2017-1-18 21:58
查了资料,在应用中备份数据库的话,需要知道MySQL的bin路径和用户名、密码,这些参数怎样获得呢? ...

apache-tomcat\conf\context.xml
数据源配置中就有用户名密码!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

35

主题

142

帖子

362

积分

中级会员

Rank: 3Rank: 3

积分
362
QQ
 楼主| 发表于 2017-1-19 23:36:26 | 显示全部楼层
Model.prototype.backupClick = function(event){
                var binPath=this.comp("input1").val();
                var userName=this.comp("input2").val();
                var pwd=this.comp("input3").val();
                binPath="jdbc:mysql://127.0.0.1:3306/x5";
                userName="root";
                pwd="x5";
                var params = {
                        binPath:binPath,
                        userName:userName,
                        pwd:pwd
                };
               
                justep.Baas.sendRequest({
                        "url" : "/yule/backup",
                        "action" : "getBackData",
                        "async" : false,
                        "params" : params,
                        "success" : function() {
                                alert("备份成功!")
                        }
                });

        };
使用上面的路径对吗,可生成的sql文件是空的,下面是我的java代码,参照网上的,稀里糊涂,页不知对不对,您给看看
package yule;

import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.OutputStream;  
import java.io.OutputStreamWriter;  
import java.io.PrintWriter;  
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;

import javax.naming.NamingException;

import com.alibaba.fastjson.JSONObject;
import com.justep.baas.action.ActionContext;
import com.justep.baas.data.DataUtils;
import com.justep.baas.data.Table;
import com.justep.baas.data.Transform;
import com.justep.baas.data.sql.SQLException;

public class BackupAndRestore {
       
       
        private String mysqlBinPath;
        private String username;
        private String password;

        public String getMysqlBinPath() {  
                return mysqlBinPath;  
        }  
        public void setMysqlBinPath(String mysqlBinPath) {  
                this.mysqlBinPath = mysqlBinPath;  
        }  
        public String getUsername() {  
                return username;  
        }  
        public void setUsername(String username) {  
                this.username = username;  
        }  
        public String getPassword() {  
                return password;  
        }  
        public void setPassword(String password) {  
                this.password = password;  
        }  

        public BackupAndRestore(String mysqlBinPath, String username, String password) {  
                if (!mysqlBinPath.endsWith(File.separator)) {  
                        mysqlBinPath = mysqlBinPath + File.separator;  
                }  
                this.mysqlBinPath = mysqlBinPath;  
                this.username = username;  
                this.password = password;  
        }
       
         /**
     * 备份数据库
     *  
     * @param output
     *            输出流
     * @param dbname
     *            要备份的数据库名
     */  
    public void backup(OutputStream output, String dbname) {  
        String command = "cmd /c " + mysqlBinPath + "mysqldump -u" + username  
                + " -p" + password + " --set-charset=utf8 " + dbname;  
        PrintWriter p = null;  
        BufferedReader reader = null;  
        try {  
            p = new PrintWriter(new OutputStreamWriter(output, "utf8"));  
            Process process = Runtime.getRuntime().exec(command);  
            InputStreamReader inputStreamReader = new InputStreamReader(process  
                    .getInputStream(), "utf8");  
            reader = new BufferedReader(inputStreamReader);  
            String line = null;  
            while ((line = reader.readLine()) != null) {  
                p.println(line);  
            }  
            p.flush();  
        } catch (UnsupportedEncodingException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (reader != null) {  
                    reader.close();  
                }  
                if (p != null) {  
                    p.close();  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    /**
     * 备份数据库,如果指定路径的文件不存在会自动生成
     *  
     * @param dest
     *            备份文件的路径
     * @param dbname
     *            要备份的数据库
     */  
    public void backup(String dest, String dbname) {  
        try {  
            OutputStream out = new FileOutputStream(dest);  
            backup(out, dbname);  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        }  
    }  
       
        public static JSONObject handleData(JSONObject params, ActionContext context) throws SQLException, NamingException, java.sql.SQLException {
               
                String binPath = params.getString("binPath");
                String userName = params.getString("userName");
                String pwd = params.getString("pwd");
               
                BackupAndRestore bak = new BackupAndRestore(binPath, userName, pwd);  
        bak.backup("d:\\x5.sql", "x5");  
               
               
                return null;
               
               
        }
       
}
回复 支持 反对

使用道具 举报

发表于 2017-1-20 10:02:57 | 显示全部楼层
ffqfb_wzy 发表于 2017-1-19 23:36
Model.prototype.backupClick = function(event){
                var binPath=this.comp("input1").val();
                var userNa ...

http://docs.wex5.com/debug-user-own-java-code/
自己调试java代码,看下运行的过程!是否生成了你想要的文件吧!

其实就是IO流操作!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-28 02:09 , Processed in 0.068472 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表