第一种办法(简单):
使用linux下的软连接方法,具体操作如下:(以迁移到/home/mysql/目录为例)
先停止mysql:
/etc/init.d/mysqld stop
移动数据:
mv /var/lib/mysql/* /home/mysql/
创建软连接:
ln -s /home/mysql/ /var/lib/mysql/
启动mysql:
/etc/init.d/mysqld start
即可。
--------------
mv /var/lib/mysql/* /data/mysql/
ln -s /data/mysql/mysql/ /var/lib/
chown -R mysql:mysql /data/mysql/
service mysql start
第二种办法(复杂):
首先我们需要关闭MySQL,命令如下:
#service mysqld stop
然后是复制移动数据,为了安全期间,我们采用复制的命令cp,先找到mysql的原目录,一般是/var/lib/mysql,我们执行:
#cp -a mysql /home/mysql/
这样就把数据库复制到/home/mysql下面去了,注意-a这个参数一定要带着,否则有可能权限会出问题。
然后我们修改配置文件,一共有三个,下面我一一说明:
#vi /etc/my.cnf
打开之后修改datadir的目录为/home/mysql_data/mysql,把socket改成/home/mysql_data/mysql/mysql.sock,为了安全起见,你可以把原来的注释掉,然后重新加入一行,改成现在的目录。
#vi /etc/init.d/mysqld
准确的位置是/etc/rc.d/init.d/mysqld,由于这里这里有一个/etc/init.d到/etc/rc.d/init.d的映射,所以用上面的命令即可,也简单。这里主要也是修改datadir的目录为/home/mysql_data/mysql
#vi /usr/bin/mysqld_safe
这里也是修改datadir的目录
下面需要建立一个mysql.sock的链接:
#ln -s /home/mysql_data/mysql/mysql.sock /var/lib/mysql/mysql.sock
至此所有的修改都完成了,下面启动mysql
#service mysqld start
或者重启linux
#reboot
如果能正常启动,那基本上就没什么问题了。
总结需要注意事项:
1.修改datadir为新的data目录。
2.合理修改innodb_log_file_size的值为实际迁移过来的日志文件大小。
3.字符集/默认引擎的修改,要与迁移前统一。