前不久因为速度问题,在LA又买了一个月付的vps,结果速度还是不咋地(好吧其实怎么换速度都还是那样慢= =),所以现在就有两个vps了哇哈哈哈。。。
之前的vps要到12月才到期,所以打算把它当成一个backup来用。原来上面有个5个站,现在迁移了3个过去,效率是不是很低呢哇哈哈。。。既然要当backup,主要是做好网页代码和数据库的同步,今天先搞数据库的。
mysql本身就提供了master-slave的同步功能,有两种方式进行同步,分别是双向和单向的。由于我的域名只解析到一个固定的ip,所以我只要单向同步就好了。假设主mysql的ip是:192.168.0.100 ,从mysql的ip是:192.168.0.200
首先配置master端 :
(1)修改mysql配置文件(win:my.ini , linux:my.cnf)
server-id=1 #master标志号
log-bin=mysql-bin #设置记录日志程序
binlog-do-db=test #要同步的数据库,多个数据库重复此参数多行
binlog-ignore-db=mysql #不要同步的数据库,多个数据库重复此参数多行
(2)给master mysql新增一个备份专用的账号
mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.200' IDENTIFIED BY 'lalala';
其中backup是账号,lalala是密码,@ 后面指定slave mysql的ip地址(当然也可以任意地址,不过要注意安全o~)
(3)重启mysql,检查配置是否出错
(4)主从数据库在设置同步时需要保证两个数据库内容一致,所以先进行锁表操作(此时网站无法写入数据库,注意影响!):
mysql> FLUSH TABLES WITH READ LOCK;
(5)记录数据库的同步点:
mysql> SHOW MASTER STATUS;
这里的 File 和 Position 对应的值之后要用到。
(6)导出需要同步的数据库的数据,准备导入到slave mysql
接下来配置slave端:
(1)把master mysql的数据导入slave mysql中。
(2)修改mysql配置文件(win:my.ini , linux:my.cnf)
server-id=2 #slave标志号,不能与master编号一样
replicate-do-db = 要同步的库1
replicate-do-db = 要同步的库2
#replicate-do-table = 某库.要同步的表1
#replicate-do-table = 某库.要同步的表2参数多行
(3)设置MASTER参数,MASTER_LOG_FILE和MASTER_LOG_POS就是Master步骤3记录下的参数,这一点很重要,否则Slave找不到同步点会导致同步失败。
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.0.100',
MASTER_USER='backup',
MASTER_PASSWORD='lalala',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=796,
MASTER_CONNECT_RETRY=10;
(4)启动同步服务
mysql> START SLAVE;
到这配置就大功告成了,这时在master mysql上插入一条新数据,slave mysql 10s内就会同步修改了