S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Mysql的实时同步 - 双机互备

Posted on 2012-07-11 07:31 S.l.e!ep.¢% 阅读(759) 评论(0)  编辑 收藏 引用 所属分类: DataBase
Mysql的实时同步 - 双机互备 Mysql的实时同步 - 双机互备. 设置方法: 步一 设 A 服务服 (192.168.1.43) 上 用户为 backup, 123456 , 同步的数据库为test; B 服务服 (192.168.1.23) 上 用户为 root, 123456, 同步的数据库为test; 步二 配置 mysql.ini: A服务器 #Replication master server-id = 10 log-bin="E:\MySQL\logs\mysql_binary_log" binlog-do-db=test # Replication slave master-host="192.168.1.23" master-user=root master-password="123456" master-port=3306 master-connect-retry=60 replicate-do-db=test B服务器 #Replication master server-id = 2 log-bin="c:\mysql5\logs\mysql_binary_log" binlog-do-db=test # Replication slave master-host="192.168.1.43" master-user=backup master-password=123456 master-port=3306 master-connect-retry=60 replicate-do-db=test ============================================================= 解释: 3)binlog-do-db=test 表示需要备份的数据库是test这个数据库, 如果需要备份多个数据库,那么应该写多行,如下所示: binlog-do-db=backup1 binlog-do-db=backup2 binlog-do-db=backup3 解释: 1) server-id=2表示本机器的序号, A,B的server-id 不能相同; 2)log-bin表示打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进行replication的前提; 其中mysql_binary_log是日志文件的名称,mysql将建立不同扩展名,文件名为mysql_binary_log的几个日志文件. 3) master-host="192.168.1.23" 表示A做slave时的master为192.168.1.23; 4) master-user=root 这里表示master上开放的一个有权限的用户,使其可以从slave连接到master并进行复制; 5) master-password=123456 表示授权用户的密码; 6) master-port=3306 master上MySQL服务Listen3306端口; 7) master-connect-retry=60 同步间隔时间; 8) replicate-do-db=test 表示同步backup数据库; 最后重新启动两台机器的mysql. ------------------------------------------------ 查看状态 及调试 1,查看master的状态 SHOW MASTER STATUS; Position 不应为0 2,查看slave的状态 show slave status; Slave_IO_Running | Slave_SQL_Running 这两个字段 应为 YES|YES. show processlist; 会有两条记录与同步有关 state为 Has read all relay log; waiting for the slave I/O thread to update it 和s Waiting for master to send event . 3,错误日志 MySQL安装目录\data\Hostname.err 4,CHANGE MASTER TO 如果A 的 Slave 未启动 ,Slave_IO_Running 为No. 可能会是B的master 的信息有变化, 查看B SHOW MASTER STATUS; 记录下 File,Position 字段. 假设为'mysql_binary_log.000004',98 ; 在A 下执行: Stop Slave; CHANGE MASTER TO MASTER_LOG_FILE = 'mysql_binary_log.000004', MASTER_LOG_POS = 98 ; Start Slave; 5,SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; 如果A的Slave_SQL_Running 为No. Err文件中记录: Slave: Error 'Duplicate entry '1' for key 1' on query.... 可能是master 未向slave 同步成功,但slave中已经有了记录。造成的冲突. 可以在A上执行 SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; 跳过几步。再 restart salve; 就可以了。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理