司主站的程序和数据库在一台服务器上,上面要求把数据单独迁移到一台服务器上运行。,因为mysql 库里没有innodb表,所以迁移起来就比较简单了。

mysql数据库迁移

实现目的:把210mysql在线转移到217上,从而实现210运行apache+php ,217只运行mysql.都是centos5.3.

mysql数据库迁移_mysql

一.先搭建217mysql最好和210 用同一个版本,这样可以减少问题。

[root@localhost htdocs]# cd /home/

[root@localhost home]# tar -zxvf mysql-5.0.40.tar.gz -C /usr/local/src/

[root@localhost home]# cd /usr/local/src/mysql-5.0.40

[root@localhost mysql-5.0.40]# useradd -M -s /sbin/nologin mysql

[root@localhost mysql-5.0.40]# yum -y install libtermcap-devel

[root@localhostmysql-5.0.40]#./configure--prefix=/usr/local/mysql

//这里默认就可以最好可以210参数一样,查看编译后的参数:

cat "/usr/local/mysql/bin/mysqlbug"|grep configure

[root@localhost mysql-5.0.40]# make

[root@localhost mysql-5.0.40]# make install

[root@localhost mysql-5.0.40]# cp support-files/my-medium.cnf /etc/my.cnf

这里最好把210的配置文件拷贝过来最好。

[root@localhost mysql-5.0.40]# /usr/local/mysql/bin/mysql_install_db --user=mysql

加载并且授权。

[root@localhost mysql-5.0.40]# chown -R root:mysql /usr/local/mysql/

[root@localhost mysql-5.0.40]# chown -R mysql /usr/local/mysql/var/

[root@localhost mysql-5.0.40]# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf

[root@localhost mysql-5.0.40]# ldconfig

[root@localhost mysql-5.0.40]# /usr/local/mysql/bin/mysqld_safe --user=mysql &

[root@localhost mysql-5.0.40]# ps -e | grep mysql 验证是否成功开启mysql

1664 pts/2 00:00:00 mysqld_safe

1690 pts/2 00:00:00 mysqld

[root@localhost mysql-5.0.40]# netstat -ntulp | grep mysql

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1690/mysqld

如果一台跑多个mysql建议不要使用下面方法:

[root@localhost mysql-5.0.40]# cp support-files/mysql.server /etc/init.d/mysqld

[root@localhost mysql-5.0.40]# chmod +x /etc/init.d/mysqld

[root@localhost mysql-5.0.40]# chkconfig --add mysqld

[root@localhost mysql-5.0.40]# chkconfig mysqld on

[root@localhost mysql-5.0.40]# export PATH=$PATH:/usr/local/mysql/bin/

[root@localhost mysql-5.0.40]# echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile

[root@localhost mysql-5.0.40]# mysqladmin -u root password 123456 //修改mysql密码

也可以不设置,一会要覆盖数据。

[root@localhost mysql-5.0.40]# mysql -u root -p

Enter password: (输入123456密码)

二.测试mysql成功开始迁移数据库。

1.先检查下210的所以数据库

mysql数据库迁移_数据库_02

mysql数据库迁移_mysql_03





2.检查用户:

mysql数据库迁移_程序_04

mysql数据库迁移_数据库_05

3.开始迁移,把217mysql服务停了。

4.我们要先把mysql库迁移过去测试下是否成功

210 数据库:

use mysql;

mysqldump -u root-p mysql> mysql.sql

然后拷贝到217的目录下

Mysql > use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql> use mysql;

mysql>source /home/houzc/mysql.sql;

也可以:

mysqldump的 用- h oldhost计算机 - ü oldusername - poldpassword olddbname | MySQL的 用- h newhost计算机 - ü newusername - pnewpassword newdbname

(在覆盖mysql库的最好时候把217的备份下)

为什么不直接tar 包过去 然后复制 /usr/local/mysql/var/ 目录下,这样服务启动会失败,因为mysql 库里面有innodb表 ,这种表不支持直接拷贝目录,还可能有其他原因。

Mysql库覆盖完成后我们重启服务器看是否成功。

5.下面接着迁移,因为在线 把库的插入权限全部关闭,不关闭会丢失这段时间的数据,要是数据库非常庞大,建议最好关闭插入权限。

210

#cd /usr/local/mysql/

# tar -czvf varmysql.tar.gz var/

因为我的服务器不能使用root用户scp

cp varmysql.tar.gz /home/houzc

scp -P 2000 /home/houzc/varmysql.tar.gz houzc@*.*.*.217:/home/houzc/

217

cd /home/houzc

tar -zxvf varmysql.tar.gz -c /usr/local/mysql/var

把所有的数据覆盖一下 ,然后启动服务,能起来就成功了。

因为myisam 表支持直接拷贝。

6.最后修改连接的php程序使所有的用户连接新的数据,

在210上

#vim/www/cms/__myadmin__/config.inc.php

把localhost改为217服务器的IP。
mysql数据库迁移_数据库_06



本地连接的全连接的新的服务器,原来远程连接的没变。

mysql数据库迁移_服务器_07

mysql数据库迁移_数据库_08

在查看库有少没,

Show databases

自己在测试下表成功不。