MYSQL的master/slave数据同步配置

Apache+Mysql 2007/08/27 00:10 posted by Chaing

用户插入图片
关于mysql的master/slave的服务器配置,网上已经有很多文章,可以参考这里,但在应用的时候如果mysql读写很频繁,数据量大的花会经常碰到同步出错信息,这时就需要重新做同步.或者需要再增加一个slave的时候,也需要做相关操作.下面的方法会让你迅速的完成这些操作,条件是你的服务器上做了lvm,关于lvm可以参考这个中文文档:一份非常内行的Linux LVM HOWTO.

假设master ip: 192.168.0.1
slave ip: 192.168.0.2
mysql安装目录:/usr/local/mysql
需要同步的数据库: db

在master上:

  1. /usr/local/mysql/bin/mysql --password
  2. mysql> FLUSH TABLES WITH READ LOCK;
  3. shell> lvcreate -L6000M -s -n dbbak /dev/VolGroup00/LogVol00
  4. mysql> SHOW MASTER STATUS;
  5. mysql> UNLOCK TABLES;
  6. shell> mount /dev/VolGroup00/dbbak /mnt/dbbak/
  7. shell> cd /mnt/dbbak/usr/local/mysql/data/db
  8. shell> scp * root@192.168.0.2:/usr/local/mysql/data/db/
  9. shell> umount /mnt/dbbak/
  10. shell> lvremove /dev/VolGroup00/dbbak

这样就把master上的db数据库copy到slave上了,注意第4步,需要记录下master上的信息,形式如:
+--------------+-----------+--------------+------------------+
| File               | Position    | Binlog_do_db  | Binlog_ignore_db |
+--------------+-----------+--------------+------------------+
| data-bin.326   | 852837851  |                     |                           |
+--------------+-----------+--------------+------------------+

在slave上:
  1. shell> /etc/init.d/mysqld stop
  2. chmod 777 /usr/local/mysql/data/db/*
  3. /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-slave-start &
  4. /usr/local/mysql/bin/mysql --password
  5. mysql> CHANGE MASTER TO MASTER_LOG_FILE='data-bin.398',MASTER_LOG_POS=201238502 ;
  6. mysql> START SLAVE;

根据前面master上开始运行的:SHOW MASTER STATUS;得到的信息执行第5步. 这样对业务的影响主要是lvcreate -L6000M -s -n dbbak /dev/VolGroup00/LogVol00,做这个lvm 逻辑卷的时间.这个时间会非常短,基本对业务影响不大.
关于mysql做同步,对系统性能的提高,以及多少提高,可以看这里有个详细的FAQ,当然前提是你的应用程序已经做了select和insert/update/等写操作的应用分离.
引用 0 , 回复 0  view 1358

Trackbas address :: http://chaing.blog.sitepart.net/trackback/14