mysql 主从配置

注意事项

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,则表示主从配置成功. 

注:从数据库不要有写操作,要不然主从同步时候必然会出错,所有的操作从主数据库操作.

原文地址:https://www.cnblogs.com/tudou1223/p/4906798.html