2011-09-11, 01:29 AM | #1 | |
注册日期: 2003-10-22
帖子: 11,053
积分:6
精华:24
现金:14348金币
资产:29325305金币
|
Mysql的实时同步 - 双机互备
设置方法: 步一 设 A 服务服 (192.168.1.43) 上 用户为 backup, 123456 , 同步的数据库为test1; B 服务服 (192.168.1.23) 上 用户为 root, 123456, 同步的数据库为test1; 步二 配置 mysql.ini: A服务器 #Replication master server-id = 1 log-bin binlog-do-db=test1 # Replication slave master-host="192.168.1.23" master-user=root master-password="123456" master-port=3306 master-connect-retry=60 replicate-do-db=test1 B服务器 #Replication master server-id = 2 log-bin binlog-do-db=test1 # Replication slave master-host="192.168.1.43" master-user=backup master-password=123456 master-port=3306 master-connect-retry=60 replicate-do-db=test1 ============================================================= 解释: 3)binlog-do-db=test1 表示需要备份的数据库是test1这个数据库, 如果需要备份多个数据库,那么应该写多行,如下所示: 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; 就可以了。 个人补充: 帐号一般不要用root,在mysql中,输入 grant replication slave on *.* to ‘用户名’@192.168.1.23 identified by ’123456’; 生成一个只允许服务器IP访问的账号,或者用phpmyadmin生成也一样。 如果系统是linux系统,要把 bind-address = 127.0.0.1 这个IP改为互联网IP,不然mysql不能远程访问。 修改了设置,网上说要删除 (/var/lib/mysql)master.info,但我在ubuntu11.04,找不到这个文件,不过也能正常。 查看连接成不成功,可以用phpmyadmin中的状态来观察,更直观点,如下图 mysql_stat.jpg 经过这样设置后,两个主机上的同一套论坛,无论那个论坛发贴,另一论坛1,2秒后,就会出现同样的文章,至于附件之类,用同步软件监测一下,同步过去,同步镜像的网站就成功了。 |
|
|
||
|