Linux环境下数据库的复制

这里介绍的是两台mysql服务器之间数据目录的复制问题:

A: 192.168.109.180

B: 192.168.109.191

<!--[if !supportLists]-->l        <!--[endif]-->假设服务器A上有career数据库,而服务器B尚没有

ssh –l root 192.168.109.180 password:******** 登录A

ssh –l root 192.168.109.191 password:********  登录B

cd  /usr/local/var

scp –r root@192.168.109.180:/usr/local/var/career career

到此career数据库已经复制到服务器B上

cd  career

chown mysql  .

chgrp mysql  .

这样在服务器B上就可以访问career数据库了。

<!--[if !supportLists]-->l       <!--[endif]-->假设服务器B上已经建了career数据库,但是里面没有任何表

这样也可以直接复制数据库目录里面得所有表

登录B後,cd /usr/local/var/career

scp  root@192.168.109.180:/usr/local/var/career/*  .

然后就可以直接访问career中得表了。

<!--[if !supportLists]-->l       <!--[endif]-->假设服务器B上已经建了career数据库,但是里面也建了相应得表,但是里面没有任何数据或者里面已经有数据,这时候如果采用scp的复制方式直接覆盖,必须注意一点:

上面两种情况mysql服务器(A)并不需要关闭,而这时候必须在scp之前关闭A和B 的mysql服务器,即

A:(192.168.109.180)

   mysqladmin –fefaults-file=/etc/my5.cnf –u root –p shutdown

   (现在A上mysql-4和mysql-5在同时运行)

B: (192.168.109.191)

   pkill mysql

   cd /usr/local/var/career (里面已经有建好的表)

   scp root@192.168.109.180:/usr/local/var/career/*  .

   完成直接覆盖后,重新启动mysql服务器

   cd ../../bin

   ./mysqld_safe –user=mysql &

   mysql

   use career

   select count(*) from position 完成测试,测试成功。