解決辦法
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操作導出數據和導入數據。