java备份mysql
java mysqldatasource 用法
java mysqldatasource 用法Java MysqlDataSource 用法1. 什么是 MysqlDataSource?MysqlDataSource 是 Java 中用于连接和操作 MySQL 数据库的一个类。
它是接口的一个实现,允许开发人员使用标准的 JDBC API 来访问数据库。
2. 导入 MysqlDataSource要使用 MysqlDataSource,首先需要在代码中导入相关的类。
在Java 中,可以使用以下语句导入 MysqlDataSource 类:import ;3. 创建 MysqlDataSource 实例要使用 MysqlDataSource 类,需要创建一个 MysqlDataSource 的实例。
可以使用以下代码创建一个实例:MysqlDataSource dataSource = new MysqlDataSource();4. 设置数据库连接信息在创建 MysqlDataSource 实例后,需要设置相关的数据库连接信息,包括服务器地址、端口号、数据库名称、用户名和密码等。
以下是设置这些信息的示例代码:("localhost");(3306);("mydatabase");("username");("password");5. 设置其他连接选项除了基本的数据库连接信息外,还可以设置其他连接选项,例如连接超时时间、编码方式等。
以下是设置一些常用选项的示例代码:(5000); // 设置连接超时时间为 5 秒("UTF-8"); // 设置编码方式为 UTF-8(true); // 启用 SSL 加密连接6. 获取数据库连接设置完数据库连接信息后,可以通过调用 MysqlDataSource 的getConnection()方法来获取一个数据库连接。
MySQL中的数据迁移与备份工具推荐
MySQL中的数据迁移与备份工具推荐MySQL是一个广泛使用的关系型数据库管理系统,广泛应用于各个领域的数据存储和管理。
在实际开发中,数据迁移与备份是非常重要的一环。
本文将介绍MySQL中常用的数据迁移与备份工具,并对其进行推荐和简要评价。
一、MySQL数据迁移工具1. mysqldumpmysqldump是MySQL官方提供的备份工具,可以将MySQL中的数据表结构和数据以SQL语句的形式导出,方便在其他MySQL服务器中进行导入。
使用mysqldump可以很方便地备份和恢复MySQL数据库。
优点:使用简单,支持大部分MySQL版本,备份并还原数据方便。
缺点:备份和恢复过程较为耗时,不适合大规模数据迁移。
2. MySQL WorkbenchMySQL Workbench是一个功能强大的MySQL数据库管理工具,除了提供数据库的设计、建模和查询功能外,还提供了数据迁移的功能。
通过MySQL Workbench,可以方便地将表数据从一个MySQL服务器迁移到另一个MySQL服务器。
优点:功能全面,界面友好,支持在线和离线数据迁移。
缺点:对于大规模数据迁移,效率较低。
3. Navicat for MySQLNavicat for MySQL是一款流行的MySQL数据库管理工具,除了提供常规的数据库管理功能外,还有数据同步和数据迁移的功能。
通过Navicat for MySQL,可以方便地将数据从一个MySQL服务器导出,并导入到另一个MySQL服务器。
优点:界面友好,操作简单,支持大规模数据迁移。
缺点:商业软件,需要购买许可。
二、MySQL数据备份工具1. Percona XtraBackupPercona XtraBackup是一个开源的MySQL数据库备份工具,能够高效地备份和还原MySQL数据库。
与mysqldump不同,Percona XtraBackup是基于物理备份的工具,可以快速备份大规模的MySQL数据库,且对生产环境的影响较小。
mysql 全库备份用法
mysql 全库备份用法
在 MySQL 中,进行全库备份有多种方法。
下面介绍两种常见的全库备份用法:
1. 使用`mysqldump`命令进行备份:
`mysqldump`是 MySQL 提供的用于备份数据库的命令行工具。
你可以使用以下命令进行全库备份:
```sql
mysqldump -u [user_name] -p [password] --all-databases > [backup_file_path] ```
其中,`-u`为数据库用户名,`-p`为数据库密码,`--all-databases`表示备份所有数据库,`[backup_file_path]`为备份文件的路径。
2. 使用 MySQL Workbench 进行备份:
MySQL Workbench 是 MySQL 的可视化管理工具,它提供了一个直观的界面来管理数据库。
你可以按照以下步骤进行全库备份:
- 打开 MySQL Workbench,连接到你的 MySQL 服务器。
- 在左侧导航栏中,选择要备份的数据库。
- 右键点击数据库,选择"Backup"。
- 在备份设置页面,选择备份的目的地和备份文件的名称。
- 点击"Backup"按钮开始备份。
无论是使用`mysqldump`命令还是 MySQL Workbench,都可以进行全库备份。
请确保定期进行备份,并将备份文件存储在安全的位置,以便在需要时进行还原。
Java中使用MyBatis Plus连接和操作MySQL数据库
Java中使用MyBatis Plus连接和操作MySQL数据库1. 简介近年来,Java语言以其跨平台特性和广泛的应用领域成为了全球最受欢迎的编程语言之一。
而MySQL作为一种强大的开源关系型数据库,也是Java开发者首选的数据库之一。
在Java中,我们可以使用MyBatis Plus来连接和操作MySQL数据库,提升开发效率和简化数据库操作。
2. MyBatis Plus简介MyBatis Plus是基于MyBatis的一款增强工具,旨在简化和提升MyBatis的使用体验。
它提供了一系列强大的功能,如代码生成器、分页插件、性能分析插件等,使得开发者能够更加便捷地开发和维护数据库相关的应用程序。
3. 连接MySQL数据库在使用MyBatis Plus连接MySQL数据库之前,我们需要先在项目中引入相关的依赖。
可以通过Maven或Gradle等构建工具来管理项目的依赖。
在pom.xml或build.gradle文件中添加相应的依赖项,然后进行构建操作。
在Java代码中,我们需要创建一个数据源并配置相关的数据库连接信息。
可以使用MySQL提供的JDBC驱动程序来管理数据库连接。
在MyBatis Plus中,我们可以使用com.mysql.cj.jdbc.Driver作为驱动类,指定数据库的URL、用户名和密码来建立连接。
4. 创建实体类在进行数据库操作之前,我们需要定义与数据库表对应的实体类。
在Java中,我们可以使用POJO(Plain Old Java Object)来表示实体类。
POJO是一种普通的Java对象,不继承任何特定的父类或实现任何特定的接口。
在MyBatis Plus中,实体类需要使用@Table注解来指定对应的数据库表名,使用@Column注解来指定字段名,以及指定主键等属性。
通过在实体类中定义与表对应的字段和属性,我们可以通过MyBatis Plus来进行数据库的增删改查操作。
mysql-binlog-connector-java实现原理 -回复
mysql-binlog-connector-java实现原理-回复MySQLBinLogConnectorJava是一个Java库,用于读取MySQL的二进制日志(binlog)文件。
它是基于MySQL的复制协议实现的,可以将binlog 文件解析为易于处理的数据格式。
通过使用MySQLBinLogConnectorJava,开发人员可以实时监控和处理MySQL 数据库的更改操作,实现数据库的同步和数据分析。
在本文中,将详细介绍MySQLBinLogConnectorJava的实现原理,包括其基本工作流程和关键组件。
一、MySQL的二进制日志(binlog)简介MySQL的二进制日志(binlog)是一种用于记录数据库更改操作的日志文件。
它包含了所有的插入、更新、删除等操作,以及对表结构的更改(如创建、修改、删除表等)。
二进制日志是MySQL数据库实现数据复制和恢复的重要组成部分。
二、MySQL的复制协议MySQL的复制协议用于实现数据库的复制和同步。
它基于Master-Slave 模式,其中一个MySQL服务器充当主服务器(Master),负责接收和处理所有的写操作;而其他MySQL服务器则充当从服务器(Slave),通过复制协议从主服务器复制并执行所有的写操作。
复制协议使用了二进制日志(binlog)文件来传递更改操作。
三、MySQLBinLogConnectorJava的工作原理MySQLBinLogConnectorJava使用MySQL的复制协议来读取和解析MySQL的二进制日志文件。
1. 连接MySQL服务器首先,MySQLBinLogConnectorJava需要连接到MySQL服务器。
它使用Java提供的JDBC(Java Database Connectivity)接口来建立与MySQL数据库的连接。
2. 获取MySQL的binlog文件信息一旦连接建立成功,MySQLBinLogConnectorJava会发送一个查询命令给MySQL服务器,获取当前正在使用的二进制日志文件的相关信息,包括文件名、文件位置等。
Java应用中的数据备份与恢复
Java应用中的数据备份与恢复数据备份与恢复在任何应用系统中都是至关重要的环节,以确保数据的完整性和可靠性。
针对Java应用来说,数据备份与恢复同样具有重要性。
在本文中,将重点探讨Java应用中的数据备份与恢复的相关技术和方法。
一、数据备份数据备份是指将关键数据复制到另一位置或媒介中,以便在原始数据遭受损坏、丢失或不可恢复的情况下,能够及时恢复系统运行。
下面将介绍几种常见的数据备份方法。
1.1 定期数据库备份在Java应用中,数据库是存储关键数据的重要组成部分。
定期对数据库进行备份是非常重要的一环。
可以通过使用数据库管理工具或编写定时任务来实现定期数据库备份。
备份的频率可根据实际需求进行设定,常见的有每天、每周或每月备份一次。
1.2 离线数据快照备份除了定期数据库备份外,还可以采用离线数据快照备份的方式。
该方式通过将数据快照存储在独立的存储设备中,实现对数据的备份。
这样可以保留不同时间点的数据状态,以便在需要时进行恢复。
1.3 分布式数据备份针对大型Java应用系统,分布式数据备份是一个较为有效的备份策略。
通过将数据分散存储在多个节点上,并实时同步数据变更,可以大大提高数据备份的稳定性和可靠性。
在数据丢失或损坏时,可以从其他节点恢复数据。
二、数据恢复数据恢复是指将备份的数据重新加载到系统中,以恢复原始数据状态。
在Java应用中,数据恢复的方式取决于备份的方式。
2.1 数据库备份恢复对于定期数据库备份的情况,可以通过数据库管理工具或命令行工具恢复数据库。
通常,可以选择从最近的备份中恢复数据,并进行合并或同步操作,以保证系统的数据完整性。
2.2 离线数据快照恢复对于离线数据快照备份的情况,可以将备份时刻的数据快照加载到系统中。
通常,可以选择特定的数据快照,并按照时间顺序逐步恢复数据。
2.3 分布式数据恢复在采用分布式数据备份的情况下,数据恢复涉及到从其他节点获取数据并进行同步。
通常,可以从分布式数据备份系统中选择对应的节点并下载数据,最后进行数据合并以实现完整的数据恢复。
MySQL数据库备份方案与工具推荐
MySQL数据库备份方案与工具推荐MySQL数据库是一种常用的关系型数据库管理系统,广泛应用于各类网站和应用程序中。
数据安全性对于任何一个系统都是至关重要的,而数据库备份是保障数据安全的必要手段之一。
本文将探讨MySQL数据库备份的相关方案,并介绍一些备份工具的使用和推荐。
一、数据库备份的重要性数据库备份是指将数据库中的数据进行复制,以便在数据丢失或损坏时能够进行恢复。
数据库经常面临各种潜在的风险,如硬件故障、人为误操作、恶意攻击等,这些因素都可能导致数据的丢失或损坏。
作为数据库管理员,必须采取措施来保障数据的安全。
数据库备份是最基本、最常用的一种保护方式。
二、备份方案的选择1. 全量备份全量备份是指备份整个数据库的所有数据和对象。
这种备份方案相对简单,恢复时只需要将备份文件还原到原数据库即可。
全量备份的优点是备份和恢复操作简单,适用于小型数据库。
缺点是备份文件较大,备份时间较长,且需保证数据库的连续性。
2. 增量备份增量备份是指只备份数据库中自上次备份以来发生变动的部分数据和对象。
这种备份方案相对于全量备份来说更加高效,可以节省存储空间和备份时间。
但是恢复时需要先进行全量恢复,再逐步应用增量备份。
增量备份适用于大型数据库和对备份效率有较高要求的环境。
3. 差异备份差异备份是指备份数据库中自上次全量备份以来发生变动的部分数据和对象。
与增量备份不同的是,差异备份备份的是距离上次全量备份的差异,而不是距离上次差异备份的差异。
差异备份相对于增量备份来说,备份时间更短,恢复时只需全量备份和最后一次差异备份即可。
但是差异备份需要不断保存上次备份与本次备份的差异数据,因此备份文件会逐渐增大。
根据实际需求和数据变动情况,选择不同的备份方案有助于提高备份效率和节省存储空间。
三、备份工具的推荐1. mysqldumpmysqldump是MySQL官方提供的备份工具,可以导出整个数据库或特定表的数据、结构和配置信息。
java jdbc mysql 调用存储过程写法
java jdbc mysql 调用存储过程写法在Java中,使用JDBC调用MySQL存储过程的基本步骤如下:1. 加载MySQL的JDBC驱动。
```javaClass.forName("com.mysql.jdbc.Driver");```2. 建立数据库连接。
```javaConnection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");```3. 创建CallableStatement对象,并设置存储过程的名称和参数。
```javaCallableStatement cstmt = conn.prepareCall("{call my_stored_proc(?, ?)}");cstmt.setInt(1, 123); // 设置第一个参数为123cstmt.registerOutParameter(2, Types.INTEGER); // 注册第二个参数为输出参数```4. 执行存储过程。
```javacstmt.execute();```5. 获取存储过程的返回值。
```javaint result = cstmt.getInt(2); // 获取第二个参数的值,即存储过程的返回值```6. 关闭连接和语句对象。
```javacstmt.close();conn.close();```完整的示例代码如下:```javaimport java.sql.*;public class JdbcCallProcedureExample {public static void main(String[] args) {try {Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","username", "password");CallableStatement cstmt = conn.prepareCall("{call my_stored_proc(?, ?)}");cstmt.setInt(1, 123); // 设置第一个参数为123cstmt.registerOutParameter(2, Types.INTEGER); // 注册第二个参数为输出参数cstmt.execute(); // 执行存储过程int result = cstmt.getInt(2); // 获取第二个参数的值,即存储过程的返回值System.out.println("Result: " + result); // 输出结果cstmt.close(); // 关闭语句对象conn.close(); // 关闭连接对象} catch (Exception e) {e.printStackTrace();}}}```。
Java实现SqlServer及MySql的备份与还原(经典版)
Java实现Sqlserver及MySql的备份与还原注:本人是采用Struts1做的一个简单小例子。
实现步骤:1.数据库基类package com.wingo.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/***@ClassName:DataBaseUtil*@Description:TODO*@author莫希柏*@date Jul4,20122:21:41PM*/public class DataBaseUtil {/***@Description:获取数据库连接*@author莫希柏*@date Jul4,20122:23:11PM*/public static Connection getConnection() {Connection conn = null;try {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=datatest";String username = "sa";String password = "sa";conn = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}/***@Description:关闭*@author莫希柏*@date Jul4,20122:22:57PM*/public static void closeConn(Connection conn) { if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}2.action类package com.wingo.action;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;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.sql.CallableStatement;import java.sql.PreparedStatement;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction;import com.wingo.util.DataBaseUtil;public class DataAction extends DispatchAction{ /***@Description:SqlServer备份*@author莫希柏*@date Jul4,20122:45:16PM*/public ActionForward doSqlServerBackUp(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception {String mssqlBackupName=request.getParameter("mssqlBackupName");//自定义备份数据库名String mssqlBackupPath=request.getParameter("mssqlBackupPath");//自定义备份数据库保存路径String dbName="datatest";//被备份的数据库名称boolean flag=false;try {File file = new File(mssqlBackupPath);String path = file.getPath() + "\\"+ mssqlBackupName + ".bak";//备份生成的数据路径及文件名String bakSql = "backup database "+dbName+" to disk=? with init";//备份数据库SQL语句PreparedStatement bak = DataBaseUtil.getConnection().prepareStatement(bakSql);bak.setString(1, path);//path必须是绝对路径bak.execute(); //备份数据库bak.close();flag=true;} catch (Exception e) {flag=false;e.printStackTrace();}response.setCharacterEncoding("utf-8");try {if(flag==true){response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份成功!');document.location.href='DataAction.do?action=toBackIndex';</script>");}else{response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份失败!');document.location.href='DataAction.do?action=toBackIndex';</script>");}} catch (IOException e) {e.printStackTrace();}return null;}/***@Description:SqlServer还原*@author莫希柏*@date Jul4,20124:28:05PM*/public ActionForward doSqlServerRecovery(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response){boolean flag = false;String mssqlRecoveryPath =request.getParameter("mssqlRecoveryPath"); //被还原数据库文件的路径String dbname="datatest";//数据库名称try{File file = new File(mssqlRecoveryPath);String path = file.getPath();//数据库文件名String recoverySql = "ALTER DATABASE "+dbname+" SET ONLINE WITHROLLBACK IMMEDIATE";// 断开所有连接 PreparedStatement ps= DataBaseUtil.getConnection().prepareStatement(recoverySql);CallableStatement cs= DataBaseUtil.getConnection().prepareCall("{call killrestore(?,?)}"); //调用存储过程cs.setString(1, dbname); // 数据库名cs.setString(2, path); // 已备份数据库所在路径cs.execute(); // 还原数据库ps.execute(); // 恢复数据库连接flag=true;} catch (Exception e) {flag=false;e.printStackTrace();}response.setCharacterEncoding("utf-8");try {if(flag==true){response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份成功!');document.location.href='DataAction.do?action=toBackIndex';</script>");}else{response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份失败!');document.location.href='DataAction.do?action=toBackIndex';</script>");}} catch (IOException e) {e.printStackTrace();}return null;}/***@Description:MySql备份*@author莫希柏*@date Jul4,20124:39:02PM*/public ActionForward doMySqlBackUp (ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){boolean flag=false;try {Runtime rt = Runtime.getRuntime();String mySqlBackupName=request.getParameter("mySqlBackupName");//mysql 自定义数据库备份名称String mysqlBackupPath=request.getParameter("mysqlBackupPath");//mysql 自定义数据库备份保存路径String fPath=mysqlBackupPath+mySqlBackupName+".sql";String command="C:/Program Files/MySQL/MySQL Server5.0/bin/mysqldump -uroot -p123456 datatest";//调用 mysql的cmd:Process child = rt.exec(command);// 设置导出编码为utf8。
mysql-binlog-connector-java原理
`mysql-binlog-connector-java` 是一个Java库,用于连接到MySQL数据库的二进制日志(binlog)并读取其中的事件。
它提供了一种方便的方式来监控和解析MySQL的binlog,从而实现实时数据复制、数据同步、数据备份等功能。
`mysql-binlog-connector-java` 的工作原理如下:1. 连接到MySQL数据库:首先,通过使用JDBC连接器,`mysql-binlog-connector-java` 建立与MySQL数据库的连接。
这需要提供连接所需的数据库连接信息(如主机名、端口号、用户名和密码)。
2. 获取binlog文件信息:一旦与MySQL数据库建立连接,`mysql-binlog-connector-java` 会查询MySQL的`show master status`命令,获取当前正在写入的binlog文件名和位置信息。
3. 请求binlog事件:`mysql-binlog-connector-java` 使用MySQL 的`COM_BINLOG_DUMP`命令请求binlog事件。
它将传递上一步获取的binlog文件名和位置信息,以及其他相关参数(如事件起始位置、过滤条件等)。
4. 解析binlog事件:一旦连接到MySQL的binlog,并开始接收事件流,`mysql-binlog-connector-java` 将解析这些事件。
它会根据事件的类型(如插入、更新、删除等)和表结构信息,将事件转换为易于处理的Java对象。
5. 处理binlog事件:一旦解析binlog事件,`mysql-binlog-connector-java` 将调用您的代码来处理这些事件。
您可以订阅不同类型的事件,并编写相应的处理逻辑。
例如,您可以将事件写入其他数据库、写入日志文件、发送到消息队列等。
6. 监听binlog变更:`mysql-binlog-connector-java` 将持续监听binlog文件的变化,并及时获取和处理新的binlog事件。
MySQL数据库的备份与恢复具体操作
MySQL数据库的备份与恢复具体操作MySQL是一种流行的关系型数据库管理系统,但是,即使是最大的数据库也可能会发生故障。
因此,在MySQL数据库中对数据进行备份和恢复非常重要。
本文将介绍在不同的平台上备份和恢复MySQL数据库的具体操作。
备份MySQL数据库在备份MySQL数据库之前,应该先了解几种备份方法。
以下是几种流行的备份方法:1. 备份整个服务器备份整个服务器是最安全的备份方法之一,它备份了整个MySQL 服务器,包括所有数据库和数据表。
但是,备份整个服务器需要一些额外的步骤,比如关闭MySQL服务器和其他相关服务、备份所有文件和目录、重新启动服务器等。
2. 备份单个数据库备份单个数据库是指备份MySQL服务器中的一个特定的数据库。
备份单个数据库需要使用命令行或图形用户界面(GUI)工具,并指定要备份的数据库。
这种备份方法比备份整个服务器更简单,同时也更快。
3. 备份单个数据表备份单个数据表是指备份MySQL服务器中的一个特定的数据表。
备份单个数据表需要使用命令行或GUI工具,并指定要备份的数据表。
这种备份方法也比备份整个服务器更简单、更快。
下面是备份MySQL数据库的具体操作:1. 通过命令行备份MySQL数据库在Linux和macOS系统上,可以使用以下命令备份MySQL数据库:```mysqldump -u [用户名] -p [密码] [数据库名] > [备份文件名].sql```举个例子,如果要备份数据库“mydatabase”,可以使用以下命令:```mysqldump -u root -p mydatabase > mydatabase_backup.sql```这条命令将备份数据库“mydatabase”到文件“mydatabase_backup.sql”。
当命令执行完毕后,在当前目录下应该能够找到备份文件。
2. 通过图形用户界面工具备份MySQL数据库如果不想使用命令行备份MySQL数据库,也可以使用GUI工具。
MySQL数据库备份方案
MySQL 数据库备份方案一、准备工作1.1Mysql相关信息收集f文件位置mysql使用端口mysql数据库data目录(恢复用)具有备份权限的mysql用户名和密码存放备份数据的目录(该目录实际上是存放)操作系统用户访问mysql目录的权限innodb redo日志文件大小redo日志切换频率(根据redo日志切换频率确定redo日志的备份频率)1.2安装NBU media server或client(略)因为虚机均认不到driver,故所有mysql虚机均安装nbu7.5 client包,该包介质位于200.68主机,路径/software/nbu/NetBackup_7.5_CLIENTS.tar,该tar包包含了所有unix、linux版本的客户端。
详细安装步骤参考文档:nbu备份虚拟机数据库操作手册@20140126.doca)NBU安装成功后修改主机 hosts(格式如下)#more /etc/hosts127.0.0.1 localhost134.64.115.176 wjjydymysql2######NBU###########134.64.200.68 RLZY172.17.17.2 ahtel5230134.64.200.71 vlscontrb)修改主机nbu配置文件(格式如下,修改CLIENT_NAME为要备份的主机名)Vi/usr/openv/netbackup/bp.confSERVER = RLZYSERVER = ahtel5230SERVER = vlscontrCLIENT_NAME = kyjkdbCONNECT_OPTIONS = localhost 1 0 2c)NBU安装成功确认最后在134.64.200.68 、134.64.200.71 、134.64.209.10执行如下命令bpclntcmd -clear_host_cachebptestbpcd -client 主机名用于更新缓存和查看主机与Nbu通信是否正常。
mysql8 的备份和恢复方法
mysql8 的备份和恢复方法MySQL是最流行的关系型数据库管理系统之一,备份和恢复数据库是数据库管理中非常重要的任务之一。
在MySQL 8中,备份和恢复数据库有多种方法可供选择。
本文将一步一步介绍MySQL 8备份和恢复数据库的方法。
一、备份数据库1. 使用物理备份物理备份是将数据库的物理文件复制到备份位置的一种方法。
它可以快速地备份整个数据库,并且在恢复时非常方便。
步骤:a. 停止MySQL服务器使用以下命令停止MySQL服务器:sudo systemctl stop mysqlb. 使用cp命令备份数据库文件使用以下命令将数据库文件复制到备份位置:sudo cp -R /var/lib/mysql /备份路径c. 启动MySQL服务器使用以下命令启动MySQL服务器:sudo systemctl start mysql2. 使用mysqldump命令mysqldump是MySQL提供的一个命令行工具,可以用来备份数据库中的数据和结构。
步骤:a. 打开终端,并使用以下命令导出整个数据库:mysqldump -u 用户名-p 数据库名> 备份文件名.sql例如:mysqldump -u root -p mydatabase > mydatabase_backup.sqlb. 系统将提示输入密码,输入正确的密码后,将在当前目录下生成一个名为备份文件名.sql的文件。
3. 使用MySQL WorkbenchMySQL Workbench是MySQL官方提供的一款图形化管理工具,可以方便地进行数据库的备份和恢复操作。
步骤:a. 打开MySQL Workbench,并连接到要备份的数据库。
b. 在导航菜单中,选择"Server",然后选择"Data Export"。
c. 选择要备份的数据库,并选择备份文件保存的位置。
d. 点击"Start Export"开始备份数据库。
mysql-connector-java编译
mysql-connector-java编译编译mysql-connector-java是将Java程序与MySQL数据库进行连接所必需的步骤之一。
在本文中,我将一步一步地回答有关mysql-connector-java编译的问题,并提供一些实用的建议和技巧。
1. 什么是mysql-connector-java?mysql-connector-java是一个用于连接Java程序与MySQL数据库的驱动程序。
它提供了一个标准化的接口,使得Java应用程序可以与MySQL 服务器进行通信和交互。
mysql-connector-java是MySQL官方提供的,可以在其官方网站上找到并下载。
2. 为什么需要编译mysql-connector-java?mysql-connector-java提供了预编译的二进制文件,可以直接在Java项目中使用。
但有时我们可能需要对其进行修改,添加一些自定义的功能或修复一些错误。
在这种情况下,我们需要进行编译,生成我们自己的定制版mysql-connector-java。
3. 编译mysql-connector-java的前提条件是什么?要编译mysql-connector-java,您需要满足以下前提条件:- 安装Java Development Kit(JDK):确保您已经安装了最新版本的JDK,并且已正确设置JAVA_HOME环境变量。
您可以在命令行中运行`java -version`来验证是否正确安装了JDK。
- 下载mysql-connector-java源代码:您需要从官方网站上下载mysql-connector-java源代码的压缩包。
解压缩后,您将获得一些Java 源文件和构建脚本。
- 安装Apache Ant:mysql-connector-java使用Apache Ant作为构建工具。
确保您已经安装了最新版本的Ant,并且已正确设置ANT_HOME环境变量。
如何备份和恢复MySQL中的存储过程
如何备份和恢复MySQL中的存储过程在开发和维护数据库系统时,存储过程是一种非常重要的工具。
它可以帮助我们处理复杂的数据逻辑,并提高系统的性能和效率。
然而,存储过程的安全性和稳定性也是我们需要考虑的问题之一。
在本文中,我们将探讨如何备份和恢复MySQL中的存储过程,以确保数据的完整性和可靠性。
一、备份MySQL中的存储过程为了保证存储过程的安全性,我们首先需要备份它们。
备份存储过程可以帮助我们在系统故障或意外数据丢失的情况下快速恢复。
下面是备份MySQL存储过程的方法:1. 使用命令行备份可以使用mysqldump命令行工具来备份MySQL数据库中的存储过程。
以下是备份存储过程的命令示例:```mysqldump -u用户名 -p密码 -t --routines --no-create-db --no-create-info 数据库名 > 备份文件.sql```其中,-u参数指定用户名,-p参数指定密码,--routines参数表示备份存储过程,--no-create-db参数表示不备份数据库的创建语句,--no-create-info参数表示不备份数据库的表结构信息。
2. 使用MySQL Workbench备份MySQL Workbench是一个图形化的MySQL数据库管理工具,提供了备份和恢复数据库的功能。
您可以使用MySQL Workbench来备份存储过程。
以下是备份存储过程的步骤:- 打开MySQL Workbench,并连接到要备份的MySQL数据库。
- 在导航栏中选择“Server”选项,然后选择“Data Export”。
- 在“Data Export”窗口中,选择要备份的数据库,并选择“Dump Stored Procedures and Functions”选项。
- 单击“Start Export”按钮,导出存储过程到指定的备份文件。
二、恢复MySQL中的存储过程当我们遇到数据丢失或需要恢复存储过程时,我们可以使用之前备份的文件来进行恢复。
SpringBoot中Mysql数据库备份
SpringBoot中Mysql数据库备份这个功能是之前的⼀个同事开发的,最近项⽬要上线发现功能不能⽤了,⽽且没有任何的提⽰.看了下具体的代码,他是调⽤cmd命令来实现的数据库备份,第⼀反应是:(1)如果他是使⽤cmd中mysql的命令来备份那就需要服务器端能执⾏mysql命令,要想在随意位置都可以,还需要把具体命令的路径加到环境变量⾥⾯然后我在我⾃⼰电脑上装了mysql测试,配置好环境变量,发现还是不对,但是⼿动执⾏程序中调⽤的命令却能备份成功,(2)猜想是CMD执⾏命令写的有问题,看了他写的代码,确实跟我之前写的不太⼀样,就改成了我之前写的cmdUtil更换执⾏cmd命令的代码后程序就可以正确执⾏了.下⾯是执⾏命令的代码,跟之前的代码相⽐较:(1)指定了命令的执⾏⽬录(这⾥起初我也以为配置了环境变量就可以不⽤指定,但是不指定⼀直报错,只能把⽬录写上,在项⽬中就在的application.properties⽂件中添加了这个命令的⽬录的配置项)(2)原来的代码中,在执⾏完之后,new了两个的线程去处理返回的流信息,我这⾥改成了简单的拼接到字符串,可以在前台提⽰,或者更新到数据库的备注信息中.package com.googosoft.utils;import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Map;/*** @version: V1.0* @author: songyan* @className: CMDUtil* @packageName: com.googosoft.utils* @description: cmd命令执⾏⼯具* @date: 2020/10/24 10:19*/public class CMDUtil {/*** @author: songyan* @methodsName: runCommand* @param command* @param dir* @description: 在指定⽬录执⾏指定命令* @return: java.util.Map<ng.String,ng.Object>*/public static Map<String, Object> runCommand(String command, String dir) {Map<String, Object> result = new HashMap<String, Object>();boolean flag = true;StringBuilder msg = new StringBuilder();BufferedReader bufferedReader = null;Process proc = null;ProcessBuilder pb = new ProcessBuilder("cmd ", "/c", command);pb.directory(new File(dir));try {proc = pb.start();bufferedReader = new BufferedReader(new InputStreamReader(proc.getErrorStream(), "gbk"));String line;while ((line = bufferedReader.readLine()) != null) {msg.append(line);}proc.waitFor();} catch (Exception ex) {ex.printStackTrace();} finally {if (bufferedReader != null) {try {bufferedReader.close();} catch (Exception ex) {}}if(proc!=null){proc.destroy();}}result.put("flag", flag);result.put("msg", msg);return result;}}执⾏的命令:cmd /c mysqldump -h127.0.0.1 -P3306 -uroot -proot --default-character-set=utf8 wyglxt_w > D:\dataBaseFile\dataBaseFile20201026133816.sql。
mysql-binlog-connector-java实现原理
mysql-binlog-connector-java实现原理mysqlbinlogconnectorjava是MySQL官方提供的一个Java客户端工具,用于实时读取MySQL二进制日志(binlog)的工具。
它可以将binlog的内容转换为Java对象,并提供了对binlog事件的监听和处理功能。
下面将详细介绍mysqlbinlogconnectorjava的实现原理。
一、MySQL二进制日志(binlog)的概述MySQL二进制日志是MySQL数据库引擎中非常重要的一项功能。
它记录了数据库中所有的修改操作,包括插入、更新、删除等,并以二进制的格式进行存储。
通过解析和分析binlog,可以实现数据的增量备份、数据恢复、数据同步等功能。
二、mysqlbinlogconnectorjava的基本原理mysqlbinlogconnectorjava通过连接MySQL数据库服务器,监听并读取binlog数据,然后将其转换为Java对象。
在转换过程中,它利用了MySQL的复制协议和binlog的格式。
1. 连接MySQL数据库服务器mysqlbinlogconnectorjava首先需要与MySQL数据库服务器建立连接。
它通过Java的JDBC接口,使用签名认证插件连接到MySQL服务器。
2. 获取binlog信息连接成功后,mysqlbinlogconnectorjava使用SHOW MASTER STATUS 语句获取当前的binlog文件名和位置信息。
这些信息可以用来标识binlog中的位置,以便后续读取和同步。
3. 解析binlog格式MySQL的binlog有多种格式,包括STATEMENT、ROW和MIXED等。
mysqlbinlogconnectorjava需要根据binlog的格式来解析其内容。
- 如果binlog格式为STATEMENT,mysqlbinlogconnectorjava会解析binlog中的SQL语句,并将其转换为对应的Java对象。
java-将评论内容过滤特殊表情emoj符号,保存到mysql中
java-将评论内容过滤特殊表情emoj符号,保存到mysql中正常操作评论,保存时,若评论内容含有特殊表情符号,后台将报错如下:Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='; nested exception is java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='后来查阅资料,找到⽅法将其评论内容中特殊符号过滤掉,然后保存。
废话不多说,直接上代码:1/**2 * 检测是否有emoji字符3 * @param source4 * @return⼀旦含有就抛出5*/6public static boolean containsEmoji(String source) {7if (StringUtils.isBlank(source)) {8return false;9 }1011int len = source.length();1213for (int i = 0; i < len; i++) {14char codePoint = source.charAt(i);1516if (isEmojiCharacter(codePoint)) {17//do nothing,判断到了这⾥表明,确认有表情字符18return true;19 }20 }2122return false;23 }2425private static boolean isEmojiCharacter(char codePoint) {26return (codePoint == 0x0) ||27 (codePoint == 0x9) ||28 (codePoint == 0xA) ||29 (codePoint == 0xD) ||30 ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) ||31 ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) ||32 ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));33 }3435/**36 * 过滤emoji 或者其他⾮⽂字类型的字符37 * @param source38 * @return39*/40public static String filterEmoji(String source) {4142if (!containsEmoji(source)) {43return source;//如果不包含,直接返回44 }45//到这⾥铁定包含46 StringBuilder buf = null;4748int len = source.length();4950for (int i = 0; i < len; i++) {51char codePoint = source.charAt(i);5253if (isEmojiCharacter(codePoint)) {54if (buf == null) {55 buf = new StringBuilder(source.length());56 }5758 buf.append(codePoint);59 } else {60 }61 }6263if (buf == null) {64return source;//如果没有找到 emoji表情,则返回源字符串65 } else {66if (buf.length() == len) {//这⾥的意义在于尽可能少的toString,因为会重新⽣成字符串67 buf = null;68return source;69 } else {70return buf.toString();71 }72 }7374 } Java Code。
mysql 备份查询语句
mysql 备份查询语句MySQL备份是数据库管理中非常重要的一项工作,通过备份可以保证数据的安全性和完整性。
在进行MySQL备份时,可以使用多种查询语句来实现。
下面列举了10个常用的MySQL备份查询语句,帮助你进行数据备份。
1. 备份整个数据库```mysqldump -u username -p password database_name > backup.sql```这个查询语句会将整个数据库备份到一个名为backup.sql的文件中。
2. 备份指定表```mysqldump -u username -p password database_name table_name > backup.sql```这个查询语句会将指定的表备份到一个名为backup.sql的文件中。
3. 备份数据库结构```mysqldump -u username -p password -d database_name > backup.sql```这个查询语句会备份数据库的结构,不包括数据。
4. 备份数据库结构和数据```mysqldump -u username -p password database_name --single-transaction --quick --lock-tables=false > backup.sql```这个查询语句会备份数据库的结构和数据,并使用事务来确保数据的一致性。
5. 备份数据库并压缩```mysqldump -u username -p password database_name | gzip > backup.sql.gz```这个查询语句会将备份文件进行压缩,以减少存储空间的占用。
6. 备份数据库到远程服务器```mysqldump -u username -p password database_name | ssh user@remote_host "cat > backup.sql"```这个查询语句会将备份文件传输到远程服务器上。
java实现MySQL数据加密存储---自定义注解+自定义mybatis拦截器
java实现MySQL数据加密存储---⾃定义注解+⾃定义mybatis拦截器思路调⽤拦截器实现加解密通过⾃定义加解密拦截器判断是否是加解密实体类的字段调⽤加解密处理类执⾏具体算法加解密⾃定义类注解/*** 注解敏感信息类的注解*/@Inherited@Target({ ElementType.TYPE })@Retention(RetentionPolicy.RUNTIME)public @interface SensitiveData {}View Code⾃定义字段注解/*** 注解敏感信息类中敏感字段的注解*/@Inherited@Target({ ElementType.FIELD })@Retention(RetentionPolicy.RUNTIME)public @interface SensitiveField {}View Code实体类加上⾃定义类注解字段加上⾃定义字段注解@SensitiveData@TableName(value ="vip_card")@Datapublic class VipCardVO implements Serializable {/*** 主键*/@TableId(type = IdType.AUTO)private Integer id;/*** 卡号*/@SensitiveFieldprivate String cardNo;/*** ⽤户名*/@SensitiveFieldprivate String name;* 性别*/private Integer gender;/*** 年龄*/private Integer age;/*** 邮箱*/private String email;/*** ⾝份证号*/private String idNumber;/*** 地址*/private String address;/*** ⼿机号*/private String phoneNumber;/*** 创建时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai") private Date createTime;/*** 更新时间*/@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai") private Date updateTime;}View Code加解密处理类@Componentpublic class AEScrypto {private final static String password = "V********=";/*** 加密** @param declaredFields paramsObject所声明的字段* @param paramsObject mapper中paramsType的实例* @return T* @throws IllegalAccessException 字段不可访问异常public static <T> T encrypt(Field[] declaredFields, T paramsObject) throws IllegalAccessException {for (Field field : declaredFields) {//取出所有被EncryptDecryptField注解的字段SensitiveField sensitiveField = field.getAnnotation(SensitiveField.class);if (!Objects.isNull(sensitiveField)) {field.setAccessible(true);Object object = field.get(paramsObject);//暂时只实现String类型的加密if (object instanceof String) {String value = (String) object;//加密这⾥我使⽤⾃定义的AES加密⼯具field.set(paramsObject, AESUtil.encrypt(value,password));}}}return paramsObject;}/*** 解密** @param result resultType的实例* @return T* @throws IllegalAccessException 字段不可访问异常*/public static <T> T decrypt(T result) throws IllegalAccessException {//取出resultType的类Class<?> resultClass = result.getClass();Field[] declaredFields = resultClass.getDeclaredFields();for (Field field : declaredFields) {//取出所有被EncryptDecryptField注解的字段SensitiveField sensitiveField = field.getAnnotation(SensitiveField.class);if (!Objects.isNull(sensitiveField)) {field.setAccessible(true);Object object = field.get(result);//只⽀持String的解密if (object instanceof String) {String value = (String) object;//对注解的字段进⾏逐⼀解密field.set(result, AESUtil.decrypt(value,password));}}}return result;}}View Code加解密⼯具算法⼯具类public class AESUtil {private static final String KEY_ALGORITHM = "AES";private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算/*** AES 加密操作** @param content* @param password* @return*/public static String encrypt(String content, String password) {try {Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);byte[] byteContent = content.getBytes("utf-8");cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password));// 初始化为加密模式的密码器byte[] result = cipher.doFinal(byteContent);// 加密String encode = Base64.getEncoder().encodeToString(result);//encode.return encode;//通过Base64转码返回} catch (Exception ex) {Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex);}return null;}/*** AES 解密操作** @param content* @param password* @return*/public static String decrypt(String content, String password) {try {Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password));//执⾏操作byte[] result = cipher.doFinal(Base64.getDecoder().decode(content));return new String(result, "utf-8");} catch (Exception ex) {// log.error(ex.getMessage(),ex);}return null;}}View Code加密拦截器实现mybatis 拦截器接⼝@Component@Intercepts({@Signature(type = ParameterHandler.class, method = "setParameters", args = PreparedStatement.class), })public class EncryptInterceptor implements Interceptor {@Overridepublic Object intercept(Invocation invocation) throws Throwable {//@Signature 指定了 type= parameterHandler 后,这⾥的 invocation.getTarget() 便是parameterHandler //若指定ResultSetHandler ,这⾥则能强转为ResultSetHandlerParameterHandler parameterHandler = (ParameterHandler) invocation.getTarget();// 获取参数对像,即 mapper 中 paramsType 的实例Field parameterField = parameterHandler.getClass().getDeclaredField("parameterObject");parameterField.setAccessible(true);//取出实例Object parameterObject = parameterField.get(parameterHandler);if (parameterObject != null) {Class<?> parameterObjectClass = parameterObject.getClass();//校验该实例的类是否被@SensitiveData所注解SensitiveData sensitiveData = AnnotationUtils.findAnnotation(parameterObjectClass, SensitiveData.class);if (Objects.nonNull(sensitiveData)) {//取出当前当前类所有字段,传⼊加密⽅法Field[] declaredFields = parameterObjectClass.getDeclaredFields();AEScrypto.encrypt(declaredFields, parameterObject);}}return invocation.proceed();}/*** 切记配置,否则当前拦截器不会加⼊拦截器链*/@Overridepublic Object plugin(Object o) {return Plugin.wrap(o, this);}/*** ⾃定义配置写⼊,没有⾃定义配置的可以直接置空此⽅法*/@Overridepublic void setProperties(Properties properties) {}}View Code解密拦截器实现mybatis 拦截器接⼝@Component@Intercepts({@Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class})})public class DecryptInterceptor implements Interceptor {@Overridepublic Object intercept(Invocation invocation) throws Throwable {//取出查询的结果Object resultObject = invocation.proceed();if (Objects.isNull(resultObject)) {return null;}//基于selectListif (resultObject instanceof ArrayList) {ArrayList resultList = (ArrayList) resultObject;if (!CollectionUtils.isEmpty(resultList) && needToDecrypt(resultList.get(0))) {for (Object result : resultList) {//逐⼀解密AEScrypto.decrypt(result);}}//基于selectOne} else {if (needToDecrypt(resultObject)) {AEScrypto.decrypt(resultObject);}}return resultObject;}private boolean needToDecrypt(Object object) {Class<?> objectClass = object.getClass();SensitiveData sensitiveData = AnnotationUtils.findAnnotation(objectClass, SensitiveData.class);return Objects.nonNull(sensitiveData);}@Overridepublic Object plugin(Object target) {return Plugin.wrap(target, this);}@Overridepublic void setProperties(Properties properties) {}}View Code。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} catch (Exception e) {
e.printStackTrace();
}
}
// 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
String outStr;
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(fPath), "utf8"));
*/
public static void backup() {
try {
Runtime rt = Runtime.getRuntime();
// 调用 mysql 的 cmd:
InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
writer.flush();
// 别忘记关闭输入输出流
out.close();
br.close();
writer.close();
System.out.println("/* Load OK! */");
fout.close();
System.out.println("/* Output OK! */");
} catch (Exception e) {
e.printStackTrace();
writer.flush();
// 别忘记关闭输入输出流
in.close();
xx.close();
br.close();
writer.close();
// 要用来做导入用的sql目标文件:
FileOutputStream fout = new FileOutputStream(
"e:/mysql-5.0.27-win32/bin/bjse22.sql");
}
另外
首先,设置mysql的环境变量(在path中添加%MYSQL_HOME%\bin),重启电脑。
完整代码:
/**
* @param args
*/
public static void main(String[] args) {
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
String command = "cmd /c C:/Program Files/MySQL/MySQL Server 5.0/bin>mysqldump -h localhost -u root -p aijia > E:/aijia.dmp";
try {
Process process = Runtime.getRuntime().exec(command);
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
// 组合控制台输出信息字符串
BufferedReader br = new BufferedReader(xx);
/*
* 备份和导入是一个互逆的过程。
* 备份:程序调用mysql的备份命令,读出控制台输入流信息,写入.sql文件;
* 导入:程序调用mysql的导入命令,把从.sql文件中读出的信息写入控制台的输出流
* 注意:此时定向符">"和"<"是不能用的
OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
Process child = rt
.exec("mysqldump -u root --set-charset=utf8 bjse act_obj");// 设置导出编码为utf8。这里必须是utf8
Runtime rt = Runtime.getRuntime();
// 调用 mysql 的 cmd:
Process child = rt.exec("mysql -u root bjse ");
while ((line = input.readLine()) != null)
System.out.println(li catch (IOException e) {
e.printStackTrace();
OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
String inStr;
StringBuffer sb = new StringBuffer("");
OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
}
}
/**
* 导入
*
*/
public static void load() {
try {
String fPath = "e:/mysql-5.0.27-win32/bin/bjse22.sql";
*/
backup();
load();
}
/**
* 备份检验一个sql文件是否可以做导入文件用的一个判断方法:把该sql文件分别用记事本和ultra
* edit打开,如果看到的中文均正常没有乱码,则可以用来做导入的源文件(不管sql文件的编码格式如何,也不管db的编码格式如何)