解决办法
mysql要转换到另一台机器上面,最重要的要考虑以下几个问题
1、数据库使用什么存储引擎,如果是myisam的话,可以把data目录复制移走。但如果是innodb的话,千万不要用这种方法,会存在种种问题的。至于innodb引myisam的区别,百度一下详细点。
2、本地的操作系统是否引目标操作系统相同,如果是linux与windows之间的转移,因为平台的的不台,注意大小写表名字段的兼性。也可以在my.ini或者my.cnf中忽略大小写。
3、比较安全的做法,还是用mysqlmp的方法导出来,再用mysqlmp的方法导进去,这是一种比较保险安全兼性高的做法,请考虑。
实际操作实例:
停止两个数据库的mysql服务,将A数据库中的data文件夹拷贝到B数据库中,B数据库事先把原有的data文件夹改名备份,然后再重启B数据库服务,(注意这时登录密码可能是A数据库的了,需要事先知道A数据库的密码,否则迁移完数据库登录不进去)
mysql数据库从一台服务器迁移到另一台服务器上
一、应用场景
由于要把测试服务器上的数据库迁移到正式服务器上,因此需要做数据库的迁移。这里记录一下。
二、数据库迁移
1、新建数据库test
create database test;
1
2、进入数据库,创建数据表test
create table test1(id int(10) primary key, name varchar(30), age int(10));
1
3、生成.sql文件
(1)这里生成.sql文件,需要用到mysqldump,如果找到该命令的话,建立一个软连接到/usr/bin 下。例如,你的mysql 路径为:/usr/local/mysql,则执行
ln -fs /usr/local/mysql /usr/bin (PS:这里不需要进入到mysql执行命令)
(2)执行mysqldump命令
1)为某个数据库生成.sql文件
mysqldump -u 用户名 -p 数据库>你想要生成.sql文件的路径
2)只要数据库的表结构
mysqldump -u 用户名 -p -d 数据库>你想要生成.sql文件的路径
3)生成某个数据库下面对应某个表的表结构
mysqldump -u 用户名 -p -d 数据库名 表名>你想要生成.sql文件的路径
4)生成某个数据库下面对应某个表的表结构+表数据
mysqldump -u 用户名 -p -d 数据库名>你想要生成.sql文件的路径
我这里执行的命令是:
mysqldump -u xx -p pzsh>/home/pzsh/test.sql
1
然后去/home/pzsh下面看看,就会发现已经生成.sql文件了
4、使用ftp工具,把生成的.sql文件放到新服务器上去
(1)使用FTP工具下载.sql文件
(2)使用FTP工具把.sql文件上传到指定路径
(3)我这边是把.sql文件上传到新服务器的/home/pzsh目录下
5、导入到服务器
(1)进入到新服务器的mysql中
mysql -u 用户名 -p
(2)先创建数据库,按照.sql文件中的数据库名字。
create database test;
//进入到创建的数据库中
use test;
//查看当下的数据表
show tables;
//此时数据库中是没有任何表的
(3)执行source命令,导入.sql文件
source /home/pzsh/test.sql
(4)查看test数据库中的表
show tables;
此时发现我们已经把表都转移过来了。
6、如果两台服务器的数据库版本不兼容,则在root用户下执行下面的命令
mysql_upgrade -u root -p
1
输入密码即可。
end
//*********
导出单个数据库
mysqldump -u root -p database_name > outfile_name.sql
导出所有数据库
mysqldump -u root -p --all-databases > outfile_name.sql
导出数据库表
mysqldump -u root -p database_name table_name > outfile_name.sql
导入.sql文件
导入数据库
mysql -u root -p 进入mysql 执行source outfile_name.sql(包含存储路径)
b. 导入数据库表
mysql -u root -p 进入mysql
mysql>use database_name;
mysql>source outfile_name.sql(包含存储路径)
以上是命令行方式,如果操作系统时windows,可以选择用mysql客户端工具,如Sqlyog操作导出数据和导入数据。