转自: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:为主服务器A的ID值
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:从服务器B的ID值。注意不能和主服务器的ID值相同。
master-host:主服务器的IP地址。
master-user:从服务器连接主服务器的帐号。
master-password:从服务器连接主服务器的帐号密码。
replicate-do-db:告诉主服务器只对指定的数据库进行同步镜像。
(8)重启从服务器B。至此所有设置全部完成。更新A中的数据,B中也会立刻进行同步更新。