首页 > 数据库 >Window环境下Java备份和恢复Mysql数据

Window环境下Java备份和恢复Mysql数据

时间:2023-05-13 18:11:21浏览次数:33  
标签:opt Java 备份 mysql Window uroot mysqldump Mysql 数据库

 ***java执行代码中必须加cmd /c 
Process exec = Runtime.getRuntime().exec("cmd /c mysqldump -uroot -p123456 xxl_job>e:/home/jobbak.sql");
Process exec1 = Runtime.getRuntime().exec("ping www.baidu.com");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(exec.getInputStream()));
BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(exec1.getInputStream()));
String str = "";

/* while ((str=bufferedReader.readLine())!=null){
log.info(str);
}*/
if (exec.waitFor()==0){
log.info("线程正常结束");
}else {
log.warn("执行备份异常");
}


使用 tar 打包文件夹备份

  • MySQL 的数据库文件默认都是保存在安全目录的 data 文件夹下,可以直接保存 data 文件夹,因为占用空间较大,可以使用data 打包压缩进行保存
    mark
yum -y install xz
#数据库文件很大,可以使用压缩率较大的xz格式压缩,首选需要安装xz压缩格式工具

tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/
#对数据库文件夹进行打包操作

ls /opt
#查看打包命令是否运行成功,已经生成了备份文件

du -sh /opt/mysql-2021-02-05.tar.xz 
#对比打包前后的文件大小,可以看到压缩的备份文件所占用空间很小

tar -Jxvf /opt/mysql-2021-02-05.tar.xz -C /usr/local/mysql/data/
systemctl restart mysql
#如果数据库文件损坏数据丢失,可以解压缩文件,相当于数据恢复

 

使用 mysqldump 工具备份

  • 上文中演示的是对 MySQL 整个数据库的目录进行压缩的方式,是备份数据库中所有的内容
  • mysqldump 是 mysql 用于转存储数据库的实用程序(自带),它主要产生一个 SQL 脚本,其中包含从头重新创建数据库所必需的命令(如 CREATE、TABLE、INSERT等)
  • 使用 mysqldump 可以更加灵活地控制备份的内容,比如某几个表或库都可以单独备份
#开始之前,创建库和表,用作例子
mysql -uroot -p123123
#输入密码进入数据库,以上为我的密码
create database SCHOOL;
#创建库
use SCHOOL;
create table CLASS01 ( id int(2) not null auto_increment, name varchar(10) not null, sex char(5) not null, hobby varchar(10), primary key (id));
#创建表结构
#字段一:id,最大显示长度2,不能为空,自动递增从1开始
#字段二:name,可变长度字段,10,不能为空
#字段三:sex,固定长度5,不能为空
#字段四:hobby,可变长度,最多10字符
#字段四:主键(id)

insert into CLASS01 values(1,'wangyi','man','reading');
insert into CLASS01 values(2,'wanger','woman','singing');
#插入2条数据

select * from CLASS01;
#检查一下

quit
#退出数据库

 

#使用 mysqldump 对某些表进行完全备份,命令格式如下:
mysqldump -u[用户名] -p[密码] [选项] [数据库名] [数据表名] > /备份路径/备份文件名.sql
#导出的为数据库脚本文件

例:对库SCHOOL中的表class进行备份至/opt/目录下
mysqldump -uroot -p[密码] SCHOOL CLASS01 > /opt/test01.sql

 

#对某些库进行完全备份
mysqldump -uroot -p[密码] [数据库名] > /目录/备份文件名.sql

例:
mysqldump -uroot -p123123 SCHOOL > /opt/test02


#对多个库进行完全备份
mysqldump -uroot -p123123 --databases SCHOOL sys > /opt/test03.sql


#对所有库进行完全备份
mysqldump -uroot -p123123 --all-databases > /opt/test04.sql


#直接备份表结构
mysqldump -uroot -p123123 -d SCHOOL CLASS01 > /opt/test05.sql


ls /opt/
#查看打包命令是否运行成功,已经生成了备份文件



cat /opt/test05.sql
#分析 mysqldump 工具生成的备份文件的内容

 

  • 上面使用了 -d 选项,说明只保存数据库的表结构,且表中只有一个库,可以看到先删除了表(同名),再创建了它
  • 删除和创建都是最普通的 MySQL 命令,任何一条在 MySQL 中都是可以执行的语句,有了这些语句就可以创建出和现在的表结构相同的表
  • 如果不使用 -d 选项,会把数据也进行备份,下面看看数据时如何保存的
cat /opt/test01

 

  • 可以看到与使用 -d 参数的差别是最后出现了 insert into 语句,往数据库中插入了两条数据,也就是说,数据的备份是保存的插入语句操作
  • 通过以上分析,很容易理解,备份的本质就是保存数据库当前表结构的创建语句和现有数据的插入语句,有了它们就可以直接恢复数据库的状态

标签:opt,Java,备份,mysql,Window,uroot,mysqldump,Mysql,数据库
From: https://www.cnblogs.com/caoaman/p/17397860.html

相关文章

  • 获取拼多多商品详情api、接口获取宝贝详情、产品详细属性Java示例说明
    ​ ​编辑拼多多是一家创新型的社交电商平台,成立于2015年,总部位于上海。它突破了传统电商的商业模式,通过社交传播与砍价团购的方式,为用户提供更便宜、更优质的商品。截至2021年第一季度,拼多多用户数量已经超过8亿,是中国最受欢迎的电商平台之一。pinduoduo.item_get根据ID取商......
  • java-异常机制
    异常机制什么是异常Exception异常发生在程序运行期间,影响正常程序执行流程异常体系结构java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类这些异常分为两大类,错误Error和异常Exception ErrorError类对象由java虚拟机生成并抛出,大多数错......
  • java的深拷贝和浅拷贝
    Java将内存空间分为堆和栈。基本类型直接在栈中存储数值,而引用类型是将引用放在栈中,实际存储的值是放在堆中,通过栈中的引用指向堆中存放的数据。转载:https://juejin.cn/post/6977210221542408199#comment......
  • Burp Suite Professional / Community 2023.5 (macOS, Linux, Windows) - Web 应用安
    BurpSuiteProfessional/Community2023.5(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro-2023/,查看最新版。原创作品,转载请保留出处。作者......
  • Mysql union和union all用法
    我们经常会碰到这样的应用,两个表的数据按照一定的查询条件查询出来以后,需要将结果合并到一起显示出来,这个时候就需要用到union和unionall关键字来实现这样的功能,union和unionall的主要区别是unionall是把结果集直接合并在一起,而union是将unionall后的结果镜像一次distinct,去除......
  • mysql用户表root用户被锁定,无法登陆(Account is locked)
    今天看到mysql的user表就打开了看看,看到root还有些权限是N,然后顺手就改成了Y,结果保存之后就凉凉了,数据库就打不开了,报“Accountislocked”这个错误,上网排查了好半天才解决,解决方法记录一下。解决思路:1、使用skip-grant-tables跳过密码验证,此时可以打开MySQL服务并登录2、......
  • Java 垃圾回收
    回收区域:java堆对象划分:新生代内存(YoungGeneration)老生代(OldGeneration)永久代(PermanentGeneration)永久代和原空间的区别在于元空间在直接内存上。堆的结构如上图所示。Eden,s0,s1为新生代,Tenured为老年代,最底下是永久代。内存分配规则一般新对象会分配到......
  • SetLayeredWindowAttributes - 设置窗口的透明
    //声明:SetLayeredWindowAttributes( Hwnd:THandle; {窗口句柄} crKey:COLORREF;{透明色} bAlpha:Byte;  {Alpha值} dwFlags:DWORD {LWA_COLORKEY(=1)表示使用透明色;LWA_ALPHA(=2)表示使用Alpha值}):Boolean;    {是否成功设置}//举......
  • MySql的数据存储之B+树(浅谈)
    一.MySql的实际存储位置B+树是MySql数据结构的主流存储方式,包括InnoDB和MYISAM引擎,它们的默认存储结构都是B+树了解B+树前,我们先要知道MySql的实际存储位置在哪?有人会说它存在我么的D盘或C盘的MySql文件夹的Data目录里,这个回答没错,我们在深入的了解一下呢?不管是在个人电脑上......
  • SetWindowsHookEx - 设置钩子
    提示:如果要设置系统级钩子,钩子函数必须在DLL中.SetWindowsHookEx( idHook:Integer; {钩子类型} lpfn:TFNHookProc;{函数指针} hmod:HINST;   {包含钩子函数的模块(EXE、DLL)句柄;一般是HInstance;如果是当前线程这里可以是0} dwThreadId:DW......