通过frm和ibd恢复数据库

news/2024/7/16 7:49:26

文章目录

  • 参考地址
  • 步骤
  • 通过mysqlfrm可以从frm中获取表结构
    • 使用
    • 批量导出
    • 问题
  • 新建空的数据库, 导入上述表结构
  • 删除对应的表空间, 将表对应的ibd文件复制到数据目录下
    • 单个
    • 批量
  • 重新插入表空间
  • mysql

参考地址

  1. https://www.nullalo.com/en/recover-mysql-innodb-tables-without-ibdata1-file/
  2. https://www.cnblogs.com/aeolian/p/10138334.html
  3. https://www.percona.com/blog/2014/01/02/recover-table-structure-frm-files-mysql-utilities/

步骤

  1. 备份var目录, 初始化数据库mysqld --initialize-insecure
  2. 通过mysqlfrm可以从frm中获取表结构
  3. 新建空的数据库, 导入上述表结构
  4. 删除对应的表空间, 将表对应的ibd文件复制到数据目录下
  5. 重新插入表空间

通过mysqlfrm可以从frm中获取表结构

下载地址: https://downloads.mysql.com/archives/utilities/
https://github.com/mysql/mysql-utilities/releases

使用

# 源码安装
python setup.py install

# 查看表结构
# 新增mysql实例来恢复, 能输出编码
# --port 必须和3306不同
mysqlfrm --server=root:rootpassword@localhost:3306 wehospital:t_bind.frm --port=3307

# 通过参数--diagnostic 来恢复
mysqlfrm --diagnostic .t_bind.frm

批量导出

# 导出所有表结构到文件
mysqlfrm --server=root:rootpassword@127.0.0.1 --port 3307 ./*.frm >paycenter.sql

# 因为在命令中使用了数据库命令, 删除第一行警告
sed -i "1d" paycenter.sql

# 在创建表结构语句结尾加上;
sed -i "s/.*ENGINE=.*/&;/" paycenter.sql

问题

  • python是先编译后解释的语言, pyc类似于java的class字节码, 当py文件修改时重新生成pyc文件
  • 如何查看字符类型: type(var)
  1. raise errors.InternalError(“Unread result found”)
# /usr/local/lib/python2.7/site-packages/mysql/utilities/common/server.py line 1327 增加
cur = self.db_conn.cursor(buffered=True)
  1. ‘ascii’ codec can’t decode byte 0xe8 in position 10
importsys
reload(sys)

# sys.setdefaultencoding('utf8')
sys.setdefaultencoding('gb18030')

新建空的数据库, 导入上述表结构

CREATE DATABASE IF NOT EXISTS `paycenter` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
cat paycenter.sql |mysql -uroot -p paycenter

删除对应的表空间, 将表对应的ibd文件复制到数据目录下

单个

  1. 删除对应的表空间
-- 在数据库文件下执行
ALTER TABLE t_account DISCARD TABLESPACE;
  1. 拷贝ibd文件, 需要修改权限为mysql:mysql

批量

ls *.frm|awk -F "." '{print "ALTER TABLE " $1 " DISCARD TABLESPACE;"}'

重新插入表空间

-- 在数据库文件下执行
ALTER TABLE t_account IMPORT TABLESPACE;

mysql

  • 启动报错日志: /usr/local/mysql/var/local.err

http://www.niftyadmin.cn/n/2225477.html

相关文章

过滤器 自定义查询

{{ item.date|date:Y-m-d H:i:s }}这种筛选器的效果是打印出 年 月 日 小时 分钟 秒 <p><span class"tutime font-size-18"><a href{% url archive %}?year{{ archive | slice:":4" }}&month{{ archive | slice:"5:7" }}>…

LNMP 一键安装脚本阅读

文章目录基础笔记软件介绍版本号.user.ininginxphp.ini文件描述符系统级别用户级别安装编译安装Mysql后续处理编译安装 php工具编译安装 nginxlua 配置流程安装流程其他工具tool/*addons.sh卸载流程常用命令phpnginxmysqlyumpythoniptables规则服务lnmp 脚本其他源码地址SHELL学…

云服务器安全管理

文章目录说明操作流程用户管理/etc/ssh/sshd_config配置说明操作参考说明 文档主要针对除阿里云和腾讯云外的云服务器所有操作流程都不会影响当前已登录的 ssh 连接, 所以为避免修改配置后无法连接, 在未结束前, 不要断开此次连接 操作流程 删除系统默认创建用户, 如联通云会…

oracle10g RAC Default gateway is not defined (host=rac2) (vm)

http://www.itpub.net/thread-1775304-1-1.html[more] 来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/24237320/viewspace-1060333/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。 转载于:http://blog.itpub.net/24…

linux之例行性工作排程:crontab学习

crontab - maintain crontab files for individual users —-是用来让使用者在固定时间或固定间隔执行程序之用 crontab [-u username] [-l|-e|-r] 选项与参数&#xff1a; -u &#xff1a;只有 root 才能进行这个任务&#xff0c;亦即帮其他使用者建立/移除 crontab 工作排…

xxx is not in the sudoers file. This incident will be reported.

sudo是linux系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具&#xff0c;如halt&#xff0c;reboot&#xff0c;su等等 1.切换到root用户下 2.添加sudo文件的写权限,命令是: chmod uw /etc/sudoers 3.编辑sudoers文件 vi /etc/s…

http协议 telnet linux c http client 通讯

http协议简介 用firefox的firebug(F12)调试看看http的请求与响应 GET / HTTP/1.1 GET表示一个读取请求&#xff0c;将从服务器获得网页数据&#xff0c;/表示URL的路径&#xff0c;URL总是以/开头&#xff0c;/就表示首页&#xff0c;最后的HTTP/1.1指示采用的HTTP协议版本是1…

mac 的 excel 替换换行符

说明: 听说在 Windows 的 excel 中只要调出替换对话框, 在输入框中输入alt 0010, 就表示单元格内换行符, 但是 mac 的 excel 并不支持, 查询了很多文档, 只能实现曲线救国. 方法实现 在导入数据时, 用指定字符表示换行符, 比如CHAR, 同时建议在需要替换列后面留两个空列在替换…