环境说明
数据库:mysql 5.7
服务器:
Ubuntu 20.04
Centos 7
寻找目标data数据
默认data数据保存位置
/var/lib/mysql

非默认地址data路径查找
find / -iname 'performance_schema' #performance_schema为data目录默认存在文件
data数据导出导入
mysql data数据导出
目标服务器操作:
打包加密压缩mysql数据库数据存储目录mysql(linux mysql数据默认存储在/var/lib/mysql目录下)
mkdir mysql #在root下先创建一个mysql目录cp /var/lib/mysql/. /root/mysql #将data数据全部打包到创建的mysql目录中zip -r mysql.zip /root/mysql -P hgfiuewhriwughi #打包压缩
ffsend 传输mysql.zip文件
./ffsend upload mysql.zip
ffsend 接受mysql.zip文件
./ffsend download [url]
mysql data数据导入
unzip解压缩
unzip mysql.zip
关闭本地数据库服务
关闭:service mysql stop # ubantusystemctl stop mysqld.service # centos查看:service mysqld status # ubantusystemctl status mysqld # centos
删除本地/var/lib/mysql
rm -rf /var/lib/mysql
复制或移动mysql到/var/lib下去替换原MySQL位置
mv mysql /var/lib -icp mysql /var/lib -r
然后尝试开启mysql服务,发现失败
service mysql start # ubantusystemctl start mysqld.service # centos
初始化数据库
法一:卸载重新安装mysql(ubantu推荐)
卸载数据库
ubantu
参考:https://www.cnblogs.com/cure/p/14152596.html
1. 查看MySQL的依赖项
dpkg --list|grep mysql
- 卸载 mysql-common
sudo apt remove mysql-common
- 卸载 mysql-server
sudo apt autoremove --purge mysql-server
- 清除残留数据
dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P
- 再次查看MySQL的剩余依赖项(一般这时候就卸载干净了)
dpkg --list|grep mysql
- 继续删除依赖项(如果步骤 5还有剩余依赖,则继续 6)
卸载后查看/var/lib下面的MySQL相关数据文件并没有删除,且其下导过来的mysql目录数据也还在sudo apt autoremove --purge mysql-apt-config
centos7
参考:https://blog.csdn.net/typa01_kk/article/details/49057073yum remove mysql mysql-server mysql-libs compat-mysql51rpm -qa | grep -i mysql # 查看mysql的包rpm -e 上一步mysql的包
安装mysql数据库
ubantu
Ubuntu Mysql 安装卸载
安装好后登录数据库,发现成功但是需要导入数据库的密码(到这一步也就成功将目标数据库本地还原了)
centos
centos7 搭建mysql法二:复制特定文件到’data’目录(centos推荐)
参考:
https://blog.csdn.net/baidu_34831792/article/details/109044189
https://blog.csdn.net/weixin_41530957/article/details/106981918?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4.pc_relevant_antiscan_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4.pc_relevant_antiscan_v2&utm_relevant_index=9centos
关闭数据库服务
删除本地五个指定文件然后再mv过去:systemctl stop mysqld.service
打开数据库服务ibdata1, # 共享表空间 ibdata1ib_logfile0, # 事务日志ib_logfile1, # 事务日志ib_buffer_pool, # MySQL InnoDB缓冲池auto.cnf # MySQL启动时,会自动从auto.cnf 文件中获取server-uuid值,并将这个值存储在全局变量server_uuid中。如果这个值或者这个文件不存在,那么将会生成一个新的uuid值,并将这个值保存在auto.cnf文件中。注:若是ubantu采用此方法还应该覆盖第六个文件mysql.ibd
若数据库打开失败,则更改/etc/my.cnf添加一下代码systemctl start mysqld.service
[mysqld]innodb_force_recovery = 6skip-grant-tables
ubantu
关闭数据库服务
删除(rm)本地六个指定文件并导入(mv)数据库文件:service mysql stopservice mysql status
打开数据库服务发现报错ibdata1, # 共享表空间 ibdata1ib_logfile0, # 事务日志ib_logfile1, # 事务日志ib_buffer_pool, # MySQL InnoDB缓冲池auto.cnf # MySQL启动时,会自动从auto.cnf 文件中获取server-uuid值,并将这个值存储在全局变量server_uuid中。如果这个值或者这个文件不存在,那么将会生成一个新的uuid值,并将这个值保存在auto.cnf文件中。mysql.ibd注:比centos多一个mysql.ibd
这时就要更改配置文件: vim /etc/mysql/my.cnf 然后再打开数据库服务service mysql start
[mysqld]innodb_force_recovery = 6 # 强制InnoDB恢复
重置mysql密码
关闭mysql服务
service mysql stop # ubantusystemctl stop mysqld.service # centos
修改配置文件my.cnf
my.cnf配置文件的位置,centos一般在/etc/my.cnf,ubantu在/etc/mysql/my.cnf
在配置文件中,增加2行代码
[mysqld]skip-grant-tables
打开mysql服务
service mysql start
进入mysql
mysql -u root

success!!!
