异地Mysql同步问题

转自:http://hi.baidu.com/mesong1/item/7ba3bfd2e2e9da9d260ae74a

异地Mysql同步问题

今儿一天在看关于双机热备的相关资料,再仔细一想,执行的时候,我们的软件必须安装在两套计算机上,那么一台从服务器上的Mysql是怎么跟主服务器上的MySql保持同步,达到备份的功能呢?

上网上溜达了几个来回,找到一个比较好的解决方法,当然在操作的过程中也遇到了不少问题,走了不少弯路,在这里整理一下具体的操作步骤:
我的具体环境如下:
主服务器是A:192.168.0.197
从服务器是B:192.168.0.176
其中A和B的数据库版本都是MySql5.0
具体的配置过程如下:
(1)在主服务器A上建立一个备份账户,我们可以使用命令:
 grant all previlegeon *.* to 'backup'@'%' identified by 'hope';
建立一个账户backup,密码是hope,给他所有的权限,任何用户可以通过密码hope来登录backup用户,并访问其中的数据。
(2)执行如下命令:
   setpassword from'backup'@'%'=old_password('hope');【据说是 因为 mysql 版本新密码算法不同,所以要执行一下,但是具体为什么不知道
(3)停一下主服务器A的服务,从“服务”中选择mysql重启一下即可。
(4)在从服务器端使用以下方法检测一下,从服务器和主服务器是否能够正常连接
    C:\>mysql -h 192.168.0.197 -ubackup -p hope
   Enterpassword: ****
   如果拒绝访问,则说明主服务器的账户权限没有设置好,好好检查一下。
【可以通过以下命令查询一下
  mysql> usemysql;
Database changed
mysql> select host,user from user;
+------+--------+
| host | user  |
+------+--------+
| %   | backup |
| %   | root |
+------+--------+
2 rows in set (0.00 sec)
如果,查询出来的host一列都为%没有什么问题了,否则,我们再调整一下
(5)将A中的数据拷贝到B服务器中,使得A和B的初始数据同步。具体方法在上一篇文章中也提到了。
主服务器A端执行
    C:\>mysqldump -h localhost -uroot -p hope >D:\hope.sql
    此时,我们可以把服务器A上的hope数据库,导出到D:\hope.sql
    将hope.sql 复制到服务器B上的C:\
    在从服务器B上完成数据库的 导入工作。
    C:\>mysql -h localhost -u root -phope < C:\hope.sql


(6)A服务器的配置进行修改,打开mysql/my.ini文件,在[mysqld]下面添加如下内容:
server-id=1
log-bin=c:\log-bin.log

[其中参数解释如下:
server-id
:为主服务器AID
log-bin
:二进制变更值]
(7)在从服务器B的mysql/my.ini文件里添加以下几行指令就行了。
[mysqld]
server-id=2
master-host=192.168.0.197
master-user=backup
master-password=hope

//
以下内容为可选 
replicate-do-db=backup
其中参数解释如下:
server-id
:从服务器BID值。注意不能和主服务器的ID值相同。
master-host
:主服务器的IP地址。
master-user
:从服务器连接主服务器的帐号。
master-password
:从服务器连接主服务器的帐号密码。
replicate-do-db
:告诉主服务器只对指定的数据库进行同步镜像。
(8)重启从服务器B至此所有设置全部完成。更新A中的数据,B中也会立刻进行同步更新。


你可能感兴趣的:(异地Mysql同步问题)