假设master ip: 192.168.0.1
slave ip: 192.168.0.2
mysql安装目录:/usr/local/mysql
需要同步的数据库: db
在master上:
- /usr/local/mysql/bin/mysql --password
- mysql> FLUSH TABLES WITH READ LOCK;
- shell> lvcreate -L6000M -s -n dbbak /dev/VolGroup00/LogVol00
- mysql> SHOW MASTER STATUS;
- mysql> UNLOCK TABLES;
- shell> mount /dev/VolGroup00/dbbak /mnt/dbbak/
- shell> cd /mnt/dbbak/usr/local/mysql/data/db
- shell> scp * root@192.168.0.2:/usr/local/mysql/data/db/
- shell> umount /mnt/dbbak/
- shell> lvremove /dev/VolGroup00/dbbak
这样就把master上的db数据库copy到slave上了,注意第4步,需要记录下master上的信息,形式如:
+--------------+-----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+--------------+-----------+--------------+------------------+
| data-bin.326 | 852837851 | | |
+--------------+-----------+--------------+------------------+
在slave上:
- shell> /etc/init.d/mysqld stop
- chmod 777 /usr/local/mysql/data/db/*
- /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-slave-start &
- /usr/local/mysql/bin/mysql --password
- mysql> CHANGE MASTER TO MASTER_LOG_FILE='data-bin.398',MASTER_LOG_POS=201238502 ;
- mysql> START SLAVE;
关于mysql做同步,对系统性能的提高,以及多少提高,可以看这里有个详细的FAQ,当然前提是你的应用程序已经做了select和insert/update/等写操作的应用分离.


