其实迁移数据库,一般用sql文件就行,把A服务器数据库的表结构和数据等等导出,然后导入到B服务器数据库,
但是这次数据文件过大,大约有40个G,使用命令行导入,效果不是很好,经常在执行过程中报错、卡死。
最后参考网上的帖子,复制源数据库的data目录下的文件,完成数据迁移。
步骤如下:
1.首先要确定data目录在哪里
这个问题困扰了我很久,因为网上的帖子大部分只是说拷贝mysql数据库目录下的data文件夹中的数据,但是data目录到底在哪里,并未说明,我开始是拷贝的MySQL安装目录中的data文件夹,但是显然这是错误的,拷贝后并未出现需要的数据库。
2.我是整个数据库目录进行迁移的 原目录 /var/lib/mysql 直接 mv或者cp过去(先停止mysqd 服务)
比如cp到 /mnt/vdb/mysql目
3.找到my.cnf配置文件
如果/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错误就说明应该还有没有改到。。
4.复制数据存在风险,请提前备份哦!!