个人笔记总结,有待改动……
一、产成二进制日志的库 查看命令:show master status;
binlog-do-db=
binlog-ignore-db=
例:假设服务器上有mysql、a、b、c四个库,测试以下配置:
1、修改my.cnf文件,目的:只记录a和b两个库的日志
binlog-do-db=a,b
结果:所有库都不会记录日志(因为不存在"a,b"这个库,被看做一个库了,所以如果想指定多个库,应该分别指定)
2、修改my.cnf文件,目的:只记录a和b两个库的日志
binlog-do-db=a
binlog-do-db=b
结果:只记录a和b的日志
等同于:
binlog-ignore-db=mysql
binlog-ignore-db=c
3、修改my.cnf文件,目的:测试a库同时存在于do与ignore中会不会记录日志
binlog-do-db=a
binlog-do-db=b
binlog-ignore-db=a
结果:同样记录a和b的日志。如果两个语句同时做了配置,存在数据库冲突,则do的优先级大于ignore(仅测试用,生产中不会故意出现这种情况)
4、修改my.cnf文件,目的:测试如果一个库如:c 不存在于do和ignore配置参数中,会不会记录日志
binlog-do-db=a
binlog-do-db=b
binlog-ignore-db=mysql
结果:不会记录c的日志
总结:
只使用do或ignore就可以控制需要记录日志的数据库。如果两个参数都做了配置,则以binlog-do-db配置生效。
二、从服务器选择要复制的库,查看命令:show slave status\G
replicate-do-db=
replicate-ignore-db=
测试结果:
只使用do或ignore就可以控制需要复制的数据库。如果两个参数都做了配置,则以replicate-do-db=配置生效。
三、my.cnf与change master to (推荐)
mysql版本为5.5.19中
以下 参数只能在my.cnf中指定,使用change master to 会报错
slave-skip-errors=all或slave-skip-errors=1501,1502
log-slave-updates (mysql.cn中--logs-slave-updates应该是change中指定,配置文件中未具体指明参数)
report-host=156 或 report-host=example.example.com
binlog-do-db=dbname --只用do即可
binlog-ignore-db=dbname
replicate-do-db=dbname --只用do即可
replicate-ignore-db=dbname
skip-slave-start ---(告诉从服务器当服务器启动时不启动从服务器线程。使用START SLAVE语句以后手动启动线程)
change语句(注意引号的使用):
change master to master_host='192.168.2.155',master_user='sync156',master_password='123',master_log_file='mysql-bin.000017',master_log_pos=107,master_port=3306,master_connect_retry=9;
或
change master to\
master_host='192.168.2.155',\
master_user='sync156',\
master_password='123',\
master_log_file='mysql-bin.000017',\
master_log_pos=107,\
master_port=3306,\
master_connect_retry=9;
change语句也可以直接配置在my.cnf文件中(有时会问题,不建议使用):
[mysqld]
server-id=2
master-host=db-master.mycompany.com
master-port=3306
master-user=pertinax
master-password=freitag
master-connect-retry=60
report-host=db-slave.mycompany.com
logs-slave-updates
slave-skip-errors=all不加此参数,遇到错误会导致复制中止,show slave stauts\G查看是否有错误如error:1052,解决:
stop slave
SETGLOBAL SQL_SLAVE_SKIP_COUNTER = 1 --跳过接下来1个错误
start slave
重启mysql后,不论binlog记录所有库,还是某个库,binlog文件都跳到下一个,pos为107
reset master;
---清除binlog日志,执行后show master status;看到log_file=000001 pos=107
reset slave;
--- 删除master.info,建议执行过此命令后重启mysql服务并退出mysql登陆界面,重新登陆。如果不重启,再指定master参数时,没有指 定的按照reset slave之前的参数生效、加载到master.info文件中(包含show slave status\G看到的信 息,mysql每次启动如果此文件存在则读取此文件主服务器信息,不会加载my.cnf中的配置参数)
server-id即使不是链式复制,a-b和a-c两个主从复制时,server-id也不能相同
flush tables with read lock;此命令为所有数据库上锁为只读状态,unlock tables;或退出会话重新登陆后锁失效。