电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL基于java實現備份表操作

瀏覽:11日期:2022-08-21 16:54:10

核心是mysqldump和Runtime操作其實并不是很困難,創建一個進行備份操作的類,接收到備份調用后,標記該表正在備份,然后創建一個子線程進行備份操作。所需的配置信息是從配置文件讀取的,也要注意在Windows和linux下路徑問題。

配置文件如下:

Java代碼 收藏代碼# 數據庫地址 dbAddress=localhost # 要備份的數據庫名稱 databaseName=nms # 數據庫用戶名 username = root # 數據庫密碼 password = root # mysqldump 路徑 Linux mysqlpath = /usr/bin/ # 備份文件存放位置 Linux sqlFilePath =/MySQlBack/ # mysqldump 路徑 Windows #mysqlpath = C://Program Files//MySQL//MySQL Server 5.5//bin// # 備份文件存放位置 Windows #sqlFilePath =C://MySQl//

執行功能的代碼類如下:

Java代碼 收藏代碼package com.nms.common.db; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 用于數據庫備份操作 */ public class DbBackUpMethod { private static Log logger = LogFactory.getLog(DbBackUpMethod.class); private static Properties pros = getPprVue('db.properties'); public static Map<String, String> backUpTableList = new ConcurrentHashMap<String, String>(); private static DbBackUpMethod backObj = new DbBackUpMethod(); public static DbBackUpMethod getDbBackUpMethod(){ return backObj; } public void backup(String tableName) { if(null != backUpTableList.get(tableName)) return ; backUpTableList.put(tableName, tableName); // 標記已經用于備份 new Thread(new DbBackUpThread(tableName)).start(); } /** * 用于執行某表的備份 */ class DbBackUpThread implements Runnable { String tableName = null; public DbBackUpThread(String tableName){ this.tableName = tableName; } @Override public void run() { try { String username = pros.getProperty('username'); String password = pros.getProperty('password'); String mysqlpaths = pros.getProperty('mysqlpath'); String address = pros.getProperty('dbAddress'); String databaseName = pros.getProperty('databaseName'); String sqlpath = pros.getProperty('sqlFilePath'); File backupath = new File(sqlpath); if (!backupath.exists()) { backupath.mkdir(); } StringBuffer sb = new StringBuffer(); sb.append(mysqlpaths); sb.append('mysqldump '); sb.append('--opt '); sb.append('-h '); sb.append(address); sb.append(' '); sb.append('--user='); sb.append(username); sb.append(' '); sb.append('--password='); sb.append(password); sb.append(' '); sb.append('--lock-all-tables=true '); sb.append('--result-file='); sb.append(sqlpath); sb.append(tableName+'.sql'); sb.append(' '); sb.append('--default-character-set=utf8 '); sb.append(databaseName); sb.append(' '); sb.append(tableName); Runtime cmd = Runtime.getRuntime(); Process p = cmd.exec(sb.toString()); p.waitFor(); // 該語句用于標記,如果備份沒有完成,則該線程持續等待 } catch (Exception e) { logger.error('備份操作出現問題', e); }finally{ backUpTableList.remove(tableName); // 最終都將解除 } } } public static Properties getPprVue(String properName) { InputStream inputStream = DbBackUpMethod.class.getClassLoader().getResourceAsStream(properName); Properties p = new Properties(); try { p.load(inputStream); inputStream.close(); } catch (IOException e) { logger.error('無法讀取用于備份數據的配置文件', e); } return p; } }

在Action中,可以直接調用備份操作方法:

Java代碼 收藏代碼DbBackUpMethod.getDbBackUpMethod().backup(tableName); // 調用備份 同時,如果頁面有刪除該表的操作,在操作前應該判斷該表是否在進行備份

Java代碼 收藏代碼if(null != DbBackUpMethod.backUpTableList.get(tableName))

然后頁面JSP調用時,可以給予響應的提示,我的判斷是只能刪除一張表:

function deleteTableByTableName(){var pk = table.getSelectedKeys();if(''==pk){alert('請選擇一條記錄!');return false;}if(pk.length > 1){alert('請選擇一條記錄!');return false;}var rows = table.get(pk);var tableName=rows.tableName;if(confirm('你確認要刪除該表嗎?')) {if(confirm('刪除該表前,你需要備份操作嗎?nn選擇備份后,系統將后臺進行相關操作!n在此期間,您不能刪除該表!n備份操作可能將持續數小時時間!請知曉!')) {document.form1.action='backUpTable.action?tableName=' + tableName;document.form1.submit();}else{if(confirm('你確認提交嗎?該表將刪除!')) {document.form1.action='del.action?tableName=' + tableName;document.form1.submit();}}}}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 模切之家-专注服务模切行业的B2B平台! | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 天品互联-北京APP开发公司-小程序开发制作-软件开发 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | 热镀锌槽钢|角钢|工字钢|圆钢|H型钢|扁钢|花纹板-天津千百顺钢铁贸易有限公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 合肥弱电工程_安徽安防工程_智能化工程公司-合肥雷润 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 山东led显示屏,山东led全彩显示屏,山东LED小间距屏,临沂全彩电子屏-山东亚泰视讯传媒有限公司 | 气动隔膜阀_气动隔膜阀厂家_卫生级隔膜阀价格_浙江浙控阀门有限公司 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 德国GMN轴承,GMN角接触球轴承,GMN单向轴承,GMN油封,GMN非接触式密封 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 扒渣机厂家_扒渣机价格_矿用扒渣机_铣挖机_撬毛台车_襄阳永力通扒渣机公司 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 超声骨密度仪-骨密度检测仪-经颅多普勒-tcd仪_南京科进实业有限公司 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | TPE塑胶原料-PPA|杜邦pom工程塑料、PPSU|PCTG材料、PC/PBT价格-悦诚塑胶 | 99文库_实习生实用的范文资料文库站 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | 铣床|万能铣床|立式铣床|数控铣床|山东滕州万友机床有限公司 | 四川成人高考_四川成考报名网 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 |