这两天准备研究下sphinx,发现会用到mysql主从,于是尝试着自己配置了下mysql主从服务器,在这做下笔记。
环境:
主机A:【IP】192.168.55.123【Mysql Version】5.1.49【OS】Ubuntu10.10
从机B:【IP】192.168.55.88 【Mysql Version】5.5.9 【OS】FreeBSD8.2
注意:本例中使用A做mysql主服务器,B做mysql从服务器,网上有朋友说:”从服务器mysql版本不能低于主服务器版本”,这点尚未做验证。
第一步:建立用户,赋予从机权限,有多台从机,就执行多次
登录主机A
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘backup’@’192.168.55.88’ IDENTIFIED BY ‘123456’;
第二步:配置主机A的my.cnf文件,输入或者替换以下内容:
server-id = 1 #主机标识,整数
log-bin = /var/log/mysql/mysql-bin.log #确保此文件可写
read-only = 0 #主机,读写都允许
binglog-do-db = test #需要备份的数据库,多个写多行
binglog-ignore-db = mysql #不需要备份的数据库,多个写多行
第三步:配置从机B的my.cnf文件,输入或者替换以下内容:
server-id = 2
log-bin = /var/log/mysql-bin.log #FreeBSD上未有该文件,可手动建立并chown用户为mysql以确保此文件可写
master-host = 192.168.55.123
master-user = backup
master-pass = 123456
master-port = 3306
master-connect-retry = 60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db = test #只复制某个数据库
replicate-ignore-db = mysql #不复制某个数据库
第四步:同步数据库
有多种方法,此处用mysqldump导出A的数据库test为test.sql,然后在从机B上建立数据库test,并用mysqldump导入test.sql到test库中。
第五步:
重启A的mysql服务
service mysql restart或sudo /etc/init.d/mysql restart
重启B的mysql服务
service mysql-server restart
第六步:验证
在主机A中,msyql>show master status;
能看到大致这些内容:
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB| Binlog_Ignore_DB|
+——————+———-+————–+——————+
| mysql-bin.000002| 1352 | test | mysql |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
在从机B中,mysql>show slave status;内容省略。
最后,在主机A中,做一些