实现主/从配置,网上已有好多的文章可参考,这里我贴一下我的配置,并附带个别说明

第一步,主服务器上,my.cnf

   
   
   
   
  1. [mysqld]  
  2. server-id=1  
  3. log-bin=mysql-bin  
  4. binlog-do-db=mydb  
  5. binlog-ignore-db=mysql,test 

第二步,主服务器上
service mysqld restart;

第三步,主服务器上
mysql -uroot -p'password';

   
   
   
   
  1. mysql> grant all privileges on *.* to 'bakusr'@'%' identified by '123456';   
  2. mysql> flush privileges;  
  3. mysql> flush tables with read lock;  
  4. mysql> show master status;  
  5. +------------------+----------+--------------+------------------+  
  6. | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
  7. +------------------+----------+--------------+------------------+  
  8. | mysql-bin.000001 |      106 | mydb         |                  |  
  9. +------------------+----------+--------------+------------------+  
  10. 1 row in set (0.00 sec)  
  11. File列显示日志名,而Position显示偏移量。它们表示复制坐标,从服务器应从该点开始从主服务器上进行新的更新。 

 

第四步,主服务器上
对于MyISAM存储引擎的数据库,需要备份*.frm文件、*.MYD文件、*.MYI文件
对于InnoDB存储引擎的数据库,需要上述文件的备份外还需要备份ibdata文件

   
   
   
   
  1. tar -zcvf mydb.tar.gz mydb/  
  2. scp mydb.tar.gz [email protected]:/var/lib/mysql/ 

第五步,主服务器上
取得快照并记录日志名和偏移量后,可以在主服务器上重新启用写活动
mysql -uroot -p'password';

   
   
   
   
  1. mysql> unlock tables;  

注意:以上五步,官方手册上讲“如果你有一个主服务器的数据快照,并且主服务器已经设置了服务器ID,启用了二进制日志,不需要关闭主服务器或停止对它的更新也可以设置从服务器。”

第六步,从服务器上,修改my.cnf

   
   
   
   
  1. [mysqld]  
  2. server-id=2  
  3. master-host=192.168.1.222  
  4. master-port=3306  
  5. master-user=bakusr  
  6. master-password=123456  
  7. master-connect-retry=60 

第七步,从服务器上,将master上备份的数据复制到相应的目录中
cd /var/lib/mysql
如果从服务器的用户账户与主服务器的不同,你可能不想复制mysql数据库。在这种情况下,应从归档中排除该数据库。
tar -zxvf mydb.tar.gz
mysql -uroot -p'password';

   
   
   
   
  1. mysql> unlock tables;  
  2.  
  3. mysql> slave stop;  
  4. mysql> change master to 
  5.     -> master_host='192.168.1.222',  
  6.     -> master_user='bakusr',  
  7.     -> master_password='123456',  
  8.     -> master_log_file='mysql-bin.000001',  
  9.     -> master_log_pos=106;  
  10. mysql> start slave; 

SHOW PROCESSLIST语句可以提供在主服务器上和从服务器上发生的关于复制的信息。

   
   
   
   
  1. mysql> show processlist;  
  2. +----+--------+---------------------+------+-------------+------+----------------------------------------------------------------+------------------+  
  3. | Id | User   | Host                | db   | Command     | Time | State                                                          | Info             |  
  4. +----+--------+---------------------+------+-------------+------+----------------------------------------------------------------+------------------+  
  5. | 17 | root   | localhost           | NULL | Query       |    0 | NULL                                                           | show processlist |  
  6. | 18 | bakusr | 192.168.1.223:53737 | NULL | Binlog Dump |  255 | Has sent all binlog to slave; waiting for binlog to be updated | NULL             |  
  7. +----+--------+---------------------+------+-------------+------+----------------------------------------------------------------+------------------+  
  8.  
  9. 线程18是一个连接从服务器的复制线程。该信息表示所有主要更新已经被发送到从服务器,主服务器正等待更多的更新出现。  
  10.  
  11.  
  12. mysql> show processlist;  
  13. +----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------+------------------+  
  14. | Id | User        | Host      | db   | Command | Time | State                                                                 | Info             |  
  15. +----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------+------------------+  
  16. |  6 | system user |           | NULL | Connect | 4318 | Waiting for master to send event                                      | NULL             |  
  17. |  7 | system user |           | NULL | Connect | 3877 | Has read all relay log; waiting for the slave I/O thread to update it | NULL             |  
  18. | 38 | root        | localhost | NULL | Query   |    0 | NULL                                                                  | show processlist |  
  19. +----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------+------------------+  
  20.  
  21. 该信息表示线程6是同主服务器通信的I/O线程,线程7是处理保存在中继日志中的更新的SQL线程。SHOW PROCESSLIST运行时,两个线程均空闲,等待其它更新。  
  22. 请注意Time列的值可以显示从服务器比主服务器滞后多长时间,Time列的值为从服务器SQL线程显示的秒数是最后一个复制事件的时间戳和从服务器主机的实际时间之间相差的秒数。
  23. 你可以使用它来确定最后一个复制事件的日期。注意,如果你的从服务器与主服务器连接断开一个小时,然后重新连接,在SHOW PROCESSLIST结果中,你可以立即看到从服务器SQL线程的Time值为3600。
  24. 这可能是因为从服务器执行的语句是一个一小时之前的。