linux中mysql数据库数据的移植问题

来源:互联网 发布:购物卡网络直销平台 编辑:程序博客网 时间:2024/06/05 20:27

背景

问题介绍

现在有一个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;        显示数据库中的tablesselect * from 表名   显示table中的内容

因为是近两个星期之后写下的博客,当时有很多资料都没有保存。
新手入手linux系统和mysql,很多东西都不懂。。。。

原创粉丝点击