mysql多层主从配置
服务器A、B、C,A为主库,B为从库,数据从A–>B,现在将B的数据同步到C,即A–>B–>C。由于数据量较大,表较多,之前dump了好几十个Gsource需要2,3天时间,所以采取将数据库的文件夹全部copy。
万恶的参数:log-slave-updates(先记住)
记录B服务器的mysql-bin和postition
show master status\G
通过show master status ,我的mysql-bin是204,postition是294939169
slave stop 后关闭B服务器
/home/mysql/mysql5500/bin/mysqladmin -uroot -p shutdown
关闭ps -ef|grep mysqld
查看mysql状态将B服务器mysql5500拷贝至C服务器的/home/mysql目录下
scp命令-r是文件夹的全部,-P是指定端口,这里我大概花了五个小时
scp -r -P 51422 /home/mysql/mysql5500 zmzmysql@C:/home/mysql
启动B服务器后slave start
/home/mysql/mysql5500/bin/mysqld_safe --defaults-file=/home/mysql/mysql5500/etc/my.cnf &
修改C服务器的sever_id,使之与A,B均不同,mysql/etc/my.cnf下
server_id=173
配置C服务器mysql-bin和postition
这里的用户是新建的,需要给权限,搜索主仆配置可知
`CHANGE MASTER TO` `MASTER_HOST='B',` `MASTER_USER='mysql',` `MASTER_PASSWORD='mysql',` `MASTER_PORT=5500,` `MASTER_LOG_FILE='mysql-bin.000204',` `MASTER_LOG_POS=294939169,` `MASTER_CONNECT_RETRY=10;`
启动C服务器,slave start
/home/mysql/mysql5500/bin/mysqld_safe --defaults-file=/home/mysql/mysql5500/etc/my.cnf &
show master status\G
show slave status\G
步骤错了,应该先启动mysql再去修改MASTER的配置,再slave start。
但是这么配置完slave start后发现修改A或B数据库的数据,C服务器都没变化,发现是参数log-slave-updates未设置,应在my.cnf中写入:
`log-slave-updates=1`
第一次使用markdown,感觉我的blog没什么特效,未完待续。。。
设置参数:
binlog-do-db=db_name
binlog-do-table=dbname.tblname
replicate-do-db=db_name
replicate-do-table=dbname.tblname