mysql主从复制配置
一、主服务器Master配置
1、mysql配置文件(/etc/my.cnf)
a)、添加
#服务的唯一标识
server-id=1
#日志文件以binary_log为前缀,如果不给log-bin赋值,日志文件将以#master-server-hostname为前缀
log-bin = binary_log
expire_logs_days=10
max_binlog_size=200M
#需要复制的数据库,多个的话,多次配置如:
binlog-do_db=hi_db
binlog-do_db=direct
#需要忽略的数据库,多个的话,多次配置
binlog_ignore_db=mysql
binlog_ignore_db=direct
b)、重启数据库
service mysqld restart;
c)、查看master服务器状态
mysql -uroot -p
show master status;
d)、mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123';#创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';#分配权限
mysql>flush privileges; #刷新权限
二、从服务器配置
注意:从mysql5.2版本后,就不在支持在配置文件里配置master_host之类的属性,可以在登录mysql之后,用chang master to 命令指定,如:change master to master_host='192.168.1.209',master_user='slave', master_log_file='binary_log.000015', master_log_pos=120,master_password='123';
1、配置文件(/etc/my.cnf)
#服务的唯一标识
server-id=2
#并行复制线程数
slave_parallel_workers=10
2、重启mysql
service mysqld restart
3、配置slave
mysql -u -root -p
change master to master_host='192.168.1.209',master_user='slave', master_log_file='binary_log.000015', master_log_pos=120,master_password='123';
说明,master_log_file属性值和master 的show master status 的file值对应,master_log_pos和position值对应
4、启动slave
mysql -u root -p
start slave;(停止 stop slave;)
5、查看slave状态
show slave status\G;
如果出现Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则证明主从复制已经配置完成;
三、常见错误和注意事项
1、主master里配置的binlog-do_db的值,在从库里必须存在,并且表属性一致
2、binlog-do_db可以不指定,表明除了binlog_ignore_db指定的表之外,都会在复制范围内
3、Slave_SQL_Running: No
a)、程序可能在slave上进行了写操作
b)、一般是事务回滚造成的:
查看错误原因:show slave status\G;
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;
b1)、也可以手动启动,(查看master状态,设置从服务属性,从起从服务)
4、Slave_IO_Running: Connecting
原因有:1. 1、网络不通
- 2、密码不对
- 3、pos不对