mysql数据库迁移遇到的问题及解决方法
一、环境:
1、测试环境:centos 6.6
原和新的数据库版本:mysql 5.5.32
2、操作:需要把原来系统里的wordpress数据库迁移到新的一台服务器上。
二、解决思路:
1、迁移方式有两种:
第一种:物理迁移,直接把原数据库的数据目录下的所有目录复制到新的数据库上
第二种:逻辑备份迁移,把原数据库先备份出来,然后再新的服务器上恢复,
三、实践遇到的问题
第一种方法:物理迁移,直接把需要备份的数据库目录打包或者几个一起打包,但mysql数据库最好是不要打包,不然会有问题,等我们成功移过去之后,可以先看看数据是否正常,如果正常我们在添加相应的用户就可以了。
如果版本一样,是可以成功的,而且可以不用停两个服务器数据库都是可以成功的。当然如果数据量比较大的话,最好是先停掉,不然会掉数据。
以下是在目标数据库操作步骤如下:
1)、停库,删除和要迁移过来一样名字的数据库目录
/etc/init.d/mysqld stop
lsof -i:3306
cd /data/mysql/data/
ls
rm wordpress/
rm -rf wordpress/
ls
2)、复制源库目录到新库的目录下
mv ~/wordpress.12-01.tar.gz
ls
mv ~/wordpress.12-01.tar.gz ./
ls
tar -zxvf wordpress.12-01.tar.gz
ls
3)、启动数据库,并登录查看移过来的数据库数据是否可以查看到。
/etc/init.d/mysqld start
mysql -uroot -poldboy123
4)、查看登录数据库的授权用户是否能够让程序正常访问 ,有时候可能用户的host变了,会导致连接不上。当连接不上的时候,我们可以用那边连接用户在DB本机和目录机用命令测试连接是否正常,如果有问题,用root用户登录进去,查看用户授权情况。
如果版本不一样,进入数据库查看不到数据,提示:
mysql> select * from clc_posts;
ERROR 1146 (42S02): Table ‘wordpress.clc_posts’ doesn’t exist
提示数据不存在,在磁盘上可以看到大小。
2、第二种方法的操作步骤如下:
首先在原服务器上备份:
mysqldump -uroot -ppassword database_name >/tmp/database_name.sql
把备份的文件复制到目标服务器,
在目录服务器上作恢复:
mysql -uroot -ppassword database_name </tmp/database_name.sql
恢复之后,然后创建一个用户授权访问它:
grant all on database_name.* to id_name@ip identified by ‘password’
然后在程序里配置数据库连接信息。
在网页上访问是正常显示的,和原来的结果也是一样的。
注:很多的时候这种移动可能是因为授权用户对应的主机作了限制,导致连接不上。
或者对整个数据库所有数据打包,操作步骤如下:
1)、原服务器打包
mysqldump -uroot -poldboy123 -A -B -F -x –events –master-data=2 |gzip >./all_sql_8.6.gz
2)、拷贝到目标服务器
scp all_sql_8.6.gz 192.168.168.238:~
3)、目标服务器解压:
gzip -d all_sql_8.6.gz
4)、还原到目标数据库:
mysql -uroot -poldboy123 -S /data/3306/mysql.sock <all_sql_8.6
5)、对相应的数据库进行主机更改使web能够正常访问:
grant all on wordpress.* to wordpress@’192.168.%.%’ identified by ‘123456’;
6)、在本地和web上进行mysql 连接测试。
7)、修改web上连接配置,一般可以不用修改web,如果web连接数据库用的不是ip,是主机名,那么我们可以更改目标服务器的主机名,然后分发hosts本地解析文件,或者DNS解析。
原文链接:mysql数据库迁移遇到的问题及解决方法,转载请注明来源!