您现在的位置: 教育资源库 >> 电脑学院 >> 网络编程 >> Mysql >> 正文

mysql多台服务器数据同步>>5151doc

mysql多台服务器数据同步
作者:佚名 文章来源:教育资源库 点击数: 更新时间:2010-9-19

这两天在搞mysql 数据同步问题,这配置很繁琐。我这里用了两台机子做测试, 都是我本地的机子.分别是
主服务器 192.168.0.118
从服务器 192.168.0.187


1. 首先在 主从服务器分别创建数据库 backup_db和backup_table表作为测试
CREATE TABLE `backup_table` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(20) character set utf8 NOT NULL,
  `sex` varchar(2) character set utf8 NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
注意主从服务器数据库结构必须一致。否则出错.

2.在住服务器的mysql按照目录找到my.ini文件,打开这个文件在文件末尾加上如下代码
#主机器的my.cnf(或my.ini)中应该配置:

server-id=1 #表示主服务器
log-bin=e:\mysqlback\ #同步事件的日志记录文件
log-bin-index =e:\mysqlback\master-log-bin.index
log-error =e:\mysqlback\master-error.log #错误日志
binlog-do-db=backup_db #提供数据同步服务的数据库(这里是刚才创建的测试数据库)

3. 配置完主服务器后 打开从服务器的my.cnf(或my.ini)文件 在文件末尾加入 如下代码

server-id=2 #表示从服务器
master-host=192.168.0.118 #主机A的地址
master-user=testuser #主机A提供给B的用户,该用户中需要包括数据库backup_db的权限
master-password=testpwd #访问密码
master-port=3306 #端口,主机的MYSQL端口
master-connect-retry=60 #重试间隔60秒
replicate-do-db=backup_db #同步的数据库

4. 完成后,然后在主从服务器的cmd 里面打开mysql控制台  授权从服务器的testuser用户来主服务器同步资源的权限
主服务器执行 GRANT FILE ON *.* TO testuser@'192.168.0.187' IDENTIFIED BY 'testpwd'
从服务器执行 GRANT FILE ON *.* TO testuser@'192.168.0.118' IDENTIFIED BY 'testpwd'

5. 重启主从服务器的mysql
从服务器 mysql>slave start ;

主服务器执行 mysql>show master status;   结果如下
mysql> show master status;
+---------+----------+--------------+------------------+
| File    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------+----------+--------------+------------------+
| .000002 |      613 | backup_db    |                  |
+---------+----------+--------------+------------------+
1 row in set (0.00 sec)

从服务器
mysql>start slave;
mysql> show slave status\G;
执行结果
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.0.118
Master_User: testuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_ mysql-bin.000016
Read_Master_Log_Pos: 173
Relay_Log_ mysqld-relay-bin.000002
Relay_Log_Pos: 98
Relay_Master_Log_ mysql-bin.000016
Slave_IO_Running: No
Slave_SQL_Running:Yes
...

执行结果 Slave_IO_Running 和 Slave_SQL_Running 必须为yes 如果你发现Slave_IO_Running: No 那么可能是权限问题
解决步骤:
mysql> show master status;
+------------------+--------------------+----------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-------------------+-----------------+------------------+
| mysql-bin.000001 | 98 | | |
+------------------+--------------------+-----------------+------------------+
mysql> slave stop;
mysql> change master to Master_Log_File='mysql-bin.000001',Master_Log_Pos=98;
mysql> slave start;

或者打开主从服务器的 phpmyadmin 找到testuser 用户 设置它们的权限 然后再分别重启,再到从服务器中mysql> show slave status\G;
发现
Slave_IO_Running: Yes
Slave_SQL_Running:Yes

这时你在 主服务器的phpmyadmin 找到 backup_db 的 backup_table表 插入一条记录, 在到从服务器中看看这张表,发现多了一条记录 ,成功了!!!


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jayxujia123/archive/2010/09/15/5885220.aspx

>>>>这篇文章来自[教育资源库]edu.5151doc.com收集与整理,感谢原作者。
本文版权归原作者所有,如需转载或摘录请注明出处:教育资源库 http://edu.5151doc.com

文章录入:魅力教师    责任编辑:5151doc 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    | 设为首页 | 加入收藏 | 联系站长 | 在线投稿 | 版权申明 | 网站登陆 |