今天把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