今天把Mysql數據庫從服務器A遷移到了服務器B。把過程和遇到的問題記錄一下,備忘。
說明:
用的直接拷貝遷移數據文件的方式。在Ubuntu 16.04上操做。以user數據庫遷移爲例。mysql
1.要先確認目標服務器上的mysql和源服務器上的版本
目標服務器版本最好大於源服務器上的,一致最好。確保源服務器上支持的特性,目標服務器上都支持。假如目標服務器mysql服務器版本號小於源服務器,特別注意下數據庫引擎目標服務器是否支持。sql
2.在源數據庫上查詢數據文件目錄地址 數據庫
mysql> show variables like '%dir%'; +-----------------------------------------+----------------------------+ | Variable_name | Value | +-----------------------------------------+----------------------------+ | basedir | /usr | | binlog_direct_non_transactional_updates | OFF | | character_sets_dir | /usr/share/mysql/charsets/ | | datadir | /var/lib/mysql/ | | ignore_db_dirs | | | innodb_data_home_dir | | | innodb_log_group_home_dir | ./ | | innodb_max_dirty_pages_pct | 75 | | innodb_max_dirty_pages_pct_lwm | 0 | | innodb_undo_directory | . | | lc_messages_dir | /usr/share/mysql/ | | plugin_dir | /usr/lib/mysql/plugin/ | | slave_load_tmpdir | /tmp | | tmpdir | /tmp | +-----------------------------------------+----------------------------+
其中datadir項中的值就是數據目錄地址。要遷移的數據庫文件,就在此目錄下同名目錄。例如咱們要遷移user數據庫,那麼在此目錄下,就存在user目錄,這就是數據庫對應的數據。
3.暫停目標服務器和源服務器上mysql服務服務器
sudo service mysql stop
4.將數據庫文件夾拷貝到目標服務器上
可使用FTP,將數據庫目錄拷貝到目標服務器的對應數據目錄。數據目錄查詢方法同步驟一。通常默認爲/var/lib/mysql/。code
5.修改數據庫目錄的全部者
將拷貝的數據庫目錄,修改全部者爲mysql同步
sudo chown -R mysql:mysql user
6.開啓mysql服務io
sudo service mysql start
注意:
若寫數據庫操做時報:Table is read only,查看數據庫目錄的全部者是否修改了mysql。若還不行,試試:innodb
mysqladmin -u root -p flush-tables