背景
问题介绍
现在有一个linux系统的机器上数据需要移植到另外一个linux系统上。老机器称A机器,新机器称B机器。
前期调研
鉴于网上资料很多都是相同内容,而数据库的数据一般都很重要,这些方法都要先自己试验成功之后才会使用。
主要是有三种方法 1、直接拷贝数据文件
2、使用mysqldump来导入导出
3、采用专用工具
前两种方法是比较常见,因此在试用了第一种方法成功之后就采用了第一种方法
环境
A机器:cenos6.5、mysql是5.5
B机器:cenos7、mysql是5.5
开始工作
移植前的准备
1、找到mysql数据库数据文件的位置
find / -name 'mysql'
找到所有mysql的目录查看A、B机器的数据文件的位置。
一般mysql5.5默认的位置是/var/lib/mysql
2、
df -h
查看linux系统中内存大小,是否能符合移植的需要。目前需要移植的数据在110G左右,给B机器分配足够的内存存储
3、初步了解数据文件的格式
1)从文件的扩展名是myisam类型的。
.frm 是描述表结构的文件
.MYD 是表的数据文件
.MYI 是表数据文件中任何索引的数据树。
2)而有些数据文件没有.MYD是数据存储在ibdata1。
因此我们所要做的是将整个/var/lib/mysql整个目录拷贝到B机器上
准备移植
1、首先关闭A、B机器的mysql服务
service mysql stop
也可以采用脚本
/etc/inint.d/mysqld start
2、备份B机器的mysql数据(以防移植后出现问题)
3、使用scp指令传输文件
scp -r root@192.168.1.1:/var/lib/mysql /var/lib
其中192.168.1.1是A机器的ip地址
由于文件110G左右,传输速度基本稳定在10M左右,传输时间基本可以接受。
4、这个时候从A机器拷贝的mysql 数据文件由于是在root权限下执行的,因此数据文件的权限是root,需要将权限改为mysql
chown -r mysql:mysql
不然这里会报错,错误信息也会有很多因素导致。
5、若复制后的文件中有mysql-bin-xxx格式的文件,会导致启动mysql服务失败,若有,需删除。
6、确认不缺失mysql数据库的前提下,开启mysql服务
service mysql start
至此移植工作完成。
后续检验
可以关闭B机器的防火墙后使用navicat来可视化查看表信息,也可以在linux系统下查看
mysql
或者
mysql -uroot -p
进入mysql命令行
show databases; 显示数据库
use database; 使用数据库
select database();显示当前使用数据库
show tables; 显示数据库中的tables
select * from 表名 显示table中的内容
因为是近两个星期之后写下的博客,当时有很多资料都没有保存。