注意事项
1.mysql主从配置会产生大量日志(在网上看到的).有些人主从运营了半年日志占磁盘40多G,因为mysql默认的配置expire_logs_days为0,也就是日志过期时间为0,设置一下比较好.
2.主数据库:binlog-do-db为需要备份的数据库名,多个写多行,binlog-ignore-db为不需要备份的数据库名,多个写多行.
从数据库:replicate-do-db为复制某个库的名字,replicate-ignore-db为不复制某个库的名字.
看了看网上的评论都建议在master端不指定binlog-do-db,在slave端用replication-do-db来过滤。
3.主数据库配置:
server-id = 195 #主机标示,整数
log_bin = mysql-bin #确保此文件可写
read-only=0 #主机,读写都可以
从数据库配置:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。
server-id = 192
log_bin = mysql-bin
master-host =123.123.123.123//主数据库host 已作废
master-user =****//给从数据库使用的用户 已作废
master-pass =**** //给从数据库使用的密码 已作废
master-port =3306 //端口 已作废
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库
replicate-ignore-table=vbb.users #不复制某张库的表
replicate-do-table #赋值某张库的表
在生产环境碰见你一个问题,接口服务器不能用过程序写入数据库,上谷歌一查 发现是BINLOG_FORMAT设置问题,默认值为statement,建议配置成mixed.
CHANGE MASTER TO master_host = '{$master_database['host']}',
master_user = 'XXX',
master_password = 'XXX',
master_log_file = '{$data['File']}',//$data['File']和$data['Position']是在主数据库运行show master status获得.
master_log_pos = {$data['Position']},//注意文件名和position和主服务器上对应。
master_connect_retry = 30
启动从数据库 slave start //顾名思义,slave stop是停止主从
从数据库运行show slave status ,如果Slave_IO_Running(表示是否能接受主数据库传递的日志进程)和Slave_SQL_Running(运行mysql语句的进程)都为yes,则表示主从配置成功.
注:从数据库不要有写操作,要不然主从同步时候必然会出错,所有的操作从主数据库操作.