Chinaunix首页 | 论坛 | 博客
  • 博客访问: 187087
  • 博文数量: 52
  • 博客积分: 120
  • 博客等级: 民兵
  • 技术积分: 1189
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-03 15:41
个人简介

MySQL DBA

文章分类

全部博文(52)

文章存档

2013年(51)

2011年(1)

分类: Mysql/postgreSQL

2013-03-12 18:47:15

发布于 2011-04-11 16:42:20 


实验环境:window7 mysqlserver5.2       192.168.0.68             
虚拟机ubuntu  linux  mysql server 5.1.41          192.168.0.97
测试数据库my_db  表:t_1
 
linux下(主服务器设置):
1.修改配置文件my.cnf
[mysqld]下增加
log-bin  开启二进制
server-id=1   连接线程ID
bin-log-to-do =my_da    只记录目标库的日志
2.flush tables with readlock 加锁,然后取得数据文件,拷贝到从机中,测试时直接导出结构和数据(很小)。
3.service mysql restart 重启msyql 
在上面步骤2之前,show master status;记录日志文件名称及偏移位置
win7(从服务器设置):
my.ini中加入以下段

  1. master-host=192.168.0.97
  2. master-user=backup
  3. master-password=123
  4. master-port=3306
  5. server-id=2
  6. master-connect-retry=60
  7. replicate-do-db=my_db
# log-slave-updates  防止二次读更新,从机不写入日志 默认为off
 
初始可以这样配置,mysql优先读取master.info里面的配置,所以后期更改也没有影响,手册中有说明。
重新启动mysql DATA目录下会增加中继日志,以及master.info 等文件
从机slave信息:
  1. root@localhost--my_db--4:48:24>showslave status \G;
  2. *************************** 1. row ***************************
  3.              Slave_IO_State: Waiting for master to send event
  4.                 Master_Host: 192.168.0.100
  5.                 Master_User: backup
  6.                 Master_Port: 3306
  7.               Connect_Retry: 60
  8.             Master_Log_File: mysql-bin.000001
  9.         Read_Master_Log_Pos: 367
  10.              Relay_Log_File: devilkin-PC-relay-bin.000006
  11.               Relay_Log_Pos: 508
  12.       Relay_Master_Log_File: mysql-bin.000001
  13.            Slave_IO_Running: Yes
  14.           Slave_SQL_Running: Yes
  15.             Replicate_Do_DB: my_db
  16.         Replicate_Ignore_DB:
  17.          Replicate_Do_Table:
  18.      Replicate_Ignore_Table:
  19.     Replicate_Wild_Do_Table:
  20. Replicate_Wild_Ignore_Table:
  21.                  Last_Errno: 0
  22.                  Last_Error:
  23.                Skip_Counter: 0
  24.         Exec_Master_Log_Pos: 367
  25.             Relay_Log_Space: 1274
  26.             Until_Condition: None
  27.              Until_Log_File:
  28.               Until_Log_Pos: 0
  29.          Master_SSL_Allowed: No
  30.          Master_SSL_CA_File:
  31.          Master_SSL_CA_Path:
  32.             Master_SSL_Cert:
  33.           Master_SSL_Cipher:
  34.              Master_SSL_Key:
  35.       Seconds_Behind_Master: 0
  36. 1 row in set (0.00 sec)
状态中以下两项为YES则配置成功:
 Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
 
同步测试:
win7下:
win7下:
嘿嘿,大功告成!
 
主从服务器切换:
 
上面只是简单意义上的配置,严格的同步配置还需要注意更多的细节问题,有了同步从服务器,备份,维护等问题就方便多了,下面假设主服务器DOWN掉的情况。
 在服务器中运行:
开启二进制日志:log-bin
stop slave io_thread ;
show process list;这个地方一定要确保已经执行完成所有的更新。Has read all relay log
然后:
stop slave
reset master; 清空日志并创建新的日志;
之后调整其他应用程序入口即可完成从服务器转主服务器配置。
主服务器维护好之后,先作为从机读取从DOWN掉之后的更新,然后重新配置成主服务器。
 
 
备注:
在配置过程中,大大小小的问题都遇到过,比如权限问题,网络问题,已经配置顺序问题:在主服务器未reset master 时,从服务器进行change master 后面就出现 Slave_IO_Running: Yes
Slave_SQL_Running: Yes这两项其中一项为NO的情况。借鉴网上一些前辈的经验,总结下这两个状态为NO的处理办法:
1.阅读日志文件,这里基本上都能解决问题。至少有个方向或者思路。
2.Slave_SQL_Running: No 1.程序可能在slave上进行了写操作 2.也可能是slave机器重起后,事务回滚造成的. 一般是事务回滚造成的:
 1)mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
  mysql> slave start;
 2) 手动重新同步,这样会丢失一段时间的更新,当然也可以去日志里面恢复回来。
 slave stop;---到主服务器上show master status ,记录日志文件及偏移量,-----在从服务器上change master。
Slave_IO_Running:NO
 1) 权限问题,SLAVE未访问权限
 2)日志文件无效或者损坏,可以采取从新的时间点重新同步。
3)网络问题

阅读(1300) | 评论(0) | 转发(0) |
0

上一篇:explain 笔记

下一篇:Mysql oom killer 故障浅析

给主人留下些什么吧!~~