mmj 16.09.29
主服务器(master):192.168.3.10
从服务器(slave):192.168.3.18
都为5.5.31
路径: /etc/mysql/my.cnf
添加以下内容:在[mysqld]下方
server-id=1
log-bin=mysql-bin
binlog-do-db=tt
binlog-ignore-db=js_xy
其中server-id是服务器id
log-bin=mysql-bin启用二进制日志
binlog-do-db是需要同步的数据库
在命令行:sudo/etc/init.d/mysql restart
(Win中可以在服务中停止,再开启服务)
如果重启失败:说明设置的参数不正确(检查大小写,空格,单词拼写)
root登录输入:grantreplication slave on *.* to 'slave'@'%' identified by '123456';
给所有ip分配一个访问二进制文件权限的用户slave.
在从库上进行测试 slave用户是否能连接到主库的mysql:mysql -h 192.168.3.10 -uslave -p123456
(前提:在此时数据库不能进行数据交互。否则就要进行锁表)
mysql>showmaster status;
例子:
+----------------------------+------------------+--------------+------------------+
|File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------------+------------------+--------------+------------------+
|mysql-bin.000011 | 107 |tt |js_xy |
+---------------------------+----------+--------------+------------------+
1row in set (0.00 sec)
+----------------------------+------------------+--------------+------------------+
记录下 : mysql-bin.000011 和 107
路径:/etc/mysql/my.cnf (win上是my.ini)
server_id=2
log-bin=mysql-bin
replicate-do-db=tt
replicate-ignore-db=mysql
保证server-id和主库不同
清除此前可能进行的同步配置 :mysql> reset slave;
停止同步,默认同步是开启的:mysql>slavestop;
mysql>changemaster to
master_host='192.168.3.10',
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000011',
master_log_pos=107;
master_host表示是主库的IP
master_user表示主库master上允许同步的用户
maser_password表示同步用户的密码
master_log_file表示从哪个binlog文件开始同步
master_log_pos表示从该binlog文件的那个pos节点位置开始同步.
注意:master_log_file和master_log_pos,就是我们在第四步记录的binlog文件名和pos位置节点。
重新开启同步 :mysql>slavestart;
mysql>show slave status\G;
当命令窗信息中 Slave_IO_Running 为YES同时Slave_SQL_Running 为YES
说明此时同步已经配置成功了!
如果Slave_IO_Running为NO,说明可能是从库与主库的网络不通。
如果Slave_SQL_Running为NO,说明很可能是从库与主库的数据不一致。
可能原因有:
1.防火墙
2.selinux
3.网络通不通
4.pos不对
5.配置打错
6.更改配置或其他操作以后:slavestop然后再slavestart
7. 进行3.3.1重置同步