回忆之城
生命在于折腾
posts - 575,comments - 9,trackbacks - 0
注: 从MySQL从服务器的版本不能小于主服务器的版本 

一. MySQL主服务器配置 
1.建立用户 
grant replication slave on *.* to allen@172.16.0.10 identified by '1234'; 
# grant replication slave on *.* to ‘用户名’@'主机’ identified by ‘密码’; 
# 可在Slave上做连接测试: mysql -h 172.16.0.10 -u allen -p 

2.编辑配置文件/etc/my.cnf 
# 确保有如下行 
# 如果是win32平台就是my.ini 
My.ini代码  收藏代码
  1. server-id = 1  
  2. log-bin=mysql-bin  
  3. binlog-do-db=wow  
  4. binlog-ignore-db=mysql  
  5. #binlog-do-db=需要备份的数据库名,可写多行  
  6. #binlog-ignore-db=不需要备份的数据库名,可写多行  


二.MySQL从服务器配置 
1.编辑/etc/my.cnf 
# 如果是win32平台就是编辑my.ini 
My.ini代码  收藏代码
  1. server-id=2  
  2. log-bin=mysql-bin  
  3. master-host=172.16.0.10  
  4. master-user=allen  
  5. master-password=1234  
  6. master-port=3306  
  7. replicate-do-db=wow  
  8. master-connect-retry=60  
  9. # replicate-do-db=wow  需要备份的数据库名  
  10. # replicate-ignore-db=mysql 忽略的数据库(如果需要的话)  
  11. # master-connect-retry=60 如果从服务器发现主服务器断掉,重新连接的时间差(秒)  


记得先手动同步一下主从服务器中要备份的数据库,然后重启主,从服务器。 

三.验证是否配置正确 
1. 主服务器验证 
登录mysql> show master status; 应看到如下行 
Sql代码  收藏代码
  1. +-------------------+----------+--------------+------------------+  
  2. | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
  3. +-------------------+----------+--------------+------------------+  
  4. | master-bin.000001 |      468 | wow          | mysql            |  
  5. +-------------------+----------+--------------+------------------+  

2. 从服务器验证 
登录mysql> show slave status\G; 
确保如下关键行是Yes: 
Sql代码  收藏代码
  1. Slave_IO_State: Waiting for master to send event  
  2. .....  
  3. Slave_IO_Running: Yes  
  4. Slave_SQL_Running: Yes  


四.其它 
++如果你想使用复制数据文件的方式来备份数据库 
只要在从服务器上的mysql命令行先键入slave stop;然后复制数据库文件,复制好了,再在mysql命令行键入slave start;启动从服务器,这样就即备份了数据有保证了数据完整性,而且整个过程中主服务器的mysql无需停止。 

++修改配置需要注意 
需要删除从服务器上的/var/lib/mysql/master.info文件,否则无论my.cnf如何修改都不生效。 

++主服务器上的相关命令 
show master status 
show slave hosts 
show logs 
show binlog events 
purge logs to ‘log_name’ 
purge logs before ‘date’ 
reset master(老版本flush master) 
set sql_log_bin= 

++从服务器上的相关命令 
slave start 
slave stop 
slave stop IO_THREAD //此线程把master段的日志写到本地 
slave start IO_THREAD 
slave stop SQL_THREAD //此线程把写到本地的日志应用于数据库 
slave start SQL_THREAD 
reset slave 
SET GLOBAL SQL_SLAVE_SKIP_COUNTER 
load data from master 
show slave status(SUPER,REPLICATION CLIENT) 
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //动态改变master信息 
PURGE MASTER [before 'date'] 删除master端已同步过的日志 

++产生了mysql-bin.00000x文件可以删除 
reset master; #http://bbs.chinaunix.net/thread-745343-1-1.html` 

++同步出错时,如果被同步语句确定在从库上可以被忽略 
slave stop; 
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; 
slave start; 
# 看show slave status \G中的Seconds_Behind_Master: 0为正常
posted on 2013-12-05 16:44 回忆之城 阅读(85) 评论(0)  编辑 收藏 引用 所属分类: 数据库
只有注册用户登录后才能发表评论。