其实迁移数据库,通常用sql文件就行,把A服务器数据库的表结构和数据等等导出,而后导入到B服务器数据库,mysql
可是此次数据文件过大,大约有40个G,使用命令行导入,效果不是很好,常常在执行过程当中报错、卡死。sql
最后参考网上的帖子,复制源数据库的data目录下的文件,完成数据迁移。数据库
步骤以下:bash
1.首先要肯定data目录在哪里服务器
这个问题困扰了我好久,由于网上的帖子大部分只是说拷贝mysql数据库目录下的data文件夹中的数据,可是data目录到底在哪里,并未说明,我开始是拷贝的MySQL安装目录中的data文件夹,可是显然这是错误的,拷贝后并未出现须要的数据库。socket
2.我是整个数据库目录进行迁移的 原目录 /var/lib/mysql 直接 mv或者cp过去(先中止mysqd 服务)工具
好比cp到 /mnt/vdb/mysql目命令行
3.找到my.cnf配置文件server
若是/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并更名为my.cnf)中。命令以下:
vi my.cnf (用vi工具编辑my.cnf文件,找到下列数据修改之) # The MySQL server [mysqld] port = 3306 #socket = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行) socket = /mnt/vdb/mysql/mysql.sock (加上此行)
[mysqld] datadir=/mnt/vdb/mysql socket=/mnt/vdb/mysql/mysql.sock
#没有就新加 [mysql] socket=/mnt/vdb/mysql/mysql.sock [client] socket=/mnt/vdb/mysql/mysql.sock [mysqldump] socket=/mnt/vdb/mysql/mysql.sock
重启服务若是发现/var/lib/mysql/mysql.sock错误就说明应该还有没有改到。。blog
4.复制数据存在风险,请提早备份哦!!