MySQL主从同步配置
mmj 16.09.29
1.确认运行环境
1.1确认主从IP
主服务器(master):192.168.3.10
从服务器(slave):192.168.3.18
1.2确认数据库版本
都为5.5.31
2.主服务器上配置
2.1修改MySQL配置文件
路径: /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是需要同步的数据库
2.2重启service
在命令行:sudo/etc/init.d/mysql restart
(Win中可以在服务中停止,再开启服务)
如果重启失败:说明设置的参数不正确(检查大小写,空格,单词拼写)
2.3注册用户
2.3.1注册可访问主库文件的用户
root登录输入:grantreplication slave on *.* to 'slave'@'%' identified by '123456';
给所有ip分配一个访问二进制文件权限的用户slave.
2.3.2 从库连接测试
在从库上进行测试 slave用户是否能连接到主库的mysql:mysql -h 192.168.3.10 -uslave -p123456
2.4展示主库日志信息
(前提:在此时数据库不能进行数据交互。否则就要进行锁表)
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
3.从服务器上配置(Windows也适用)
3.1修改MySQL配置文件
路径:/etc/mysql/my.cnf (win上是my.ini)
server_id=2
log-bin=mysql-bin
replicate-do-db=tt
replicate-ignore-db=mysql
保证server-id和主库不同
3.2重启server= 2.2步骤
3.3设置同步
3.3.1重置同步
清除此前可能进行的同步配置 :mysql> reset slave;
3.3.2停止同步
停止同步,默认同步是开启的:mysql>slavestop;
3.3.3配置同步
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位置节点。
3.3.4开启同步
重新开启同步 :mysql>slavestart;
3.4查看同步状态
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重置同步