对搭建msyql从库的一些认识

发布时间:2019-08-29编辑:脚本学堂
搭建好mysql从库,但是在配置文件里面没加以下这两项:log-slave-updates #这个参数一定要加上,否则不会给更新的记录些到二进制文件里
slave-skip-errors #是跳过错误,继续执行复制操作

搭建好mysql从库,但是在配置文件里面没加以下这两项:
log-slave-updates #这个参数一定要加上,否则不会给更新的记录些到二进制文件里
slave-skip-errors #是跳过错误,继续执行复制操作

说明:log-slave-updates是如果作为主库的数据库B也是从别的库A同步过来的,那么加上这个参数之后,B库的从库C才会更新。
mysql从库默认是不记主库同步过来的binlog的,加上这个参数之后就记了。详见:http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_log-slave-updates

log-bin=mysql-bin    #这一项是打开主库的binlog日志。
一定要把
 

复制代码 代码如下:
mysql> show master status;
+------------------+-----------+-----------------+------------------+
| File             | Position  | Binlog_Do_DB    | Binlog_Ignore_DB |
+------------------+-----------+-----------------+------------------+
| mysql-bin.000002 | 316125231 | db1,db2 |                  |
+------------------+-----------+-----------------+------------------+

因为从库就是从这个binlog的这个position开始得到binlog日志的。
从库中的数据,必须和主库为以上状态时,里面的数据是一致的,不然可能同步后数据会有错误。
就像在从库中操作:
 

复制代码 代码如下:
CHANGE MASTER TO MASTER_HOST='192.168.0.1',MASTER_USER='backup',
MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=316125231;

还有就是copy数据库文件的话,如果mysql主从库之间的大版本不一致,从库中的数据是不能用的,这是就只好从主库dump数据了。

如果作为主库的数据库里面有多个数据库,并且其中某个数据库还是其他数据库的从库的时候,my.cnf里面的server-id不为1,此时不要修改server-id,就用当前的server-id就行。
然后在辅库的my.cnf里面,将server-id设置为和此server-id不一样的值就可以了。

如果遇到Slave_SQL_Running: No的问题,请参看这篇文章中介绍的方法:
http://www.jb200.com/article/4686.html

希望以上内容,可以帮助到大家。