1.主从配置前提
在2台不同的服务器上安装好相同版本的mysql数据库(推荐5.7+版本),下面分别用172.19.15.4(主)和172.19.15.5(备)表示2台服务器的IP
2.修改主服务器master:
vi /etc/my.cnf
添加如下指令
log-bin=mysql-bin ([必须]启用二进制日志)
server-id=4 ([必须]服务器唯一ID,默认是1,一般取IP最后一段)
binlog-do-db=db db是数据库名称 这是指定只同步db数据库
3.修改从服务器slave:
vi /etc/my.cnf
添加如下指令
log-bin=mysql-bin ([不是必须]启用二进制日志)
server-id=5 ([必须]服务器唯一ID,默认是1,一般取IP最后一段)
binlog-do-db=db db是数据库名称 这是指定只同步db数据库
4.重启两台服务器的mysql
systemctl restart mysqld.service
5.在主服务器上建立帐户并授权slave: (这个账户是用来提供给从服务器连接使用的 这里的密码就是后面CHANGE MASTER时候需要使用的账号和密码 )
GRANT REPLICATION SLAVE ON *.* to 'root'@'172.19.15.5' identified by 'root'
flush privileges; #刷新权限
表示允许172.19.15.5这个服务器使用root用户密码是root去访问我当前服务器(4)上的Mysql
6.登录主服务器的mysql,查询master的状态
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 154 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
这里的 mysql-bin.000003 和 154 在从数据库配置 有用处
7、配置从服务器Slave:
change master to master_host='172.19.15.4',master_user='root',master_password='root',master_log_file='mysql-bin.000003',master_log_pos=154; (注意不要断开,154数字前后无单引号。这个file 和 pos 与主数据库保持一致)
这里的root和root不是意味着从服务器上配置数据库账号和密码 而是主服务器上配置的允许从服务器访问主服务器使用的账号和密码(就是第5个步骤配置的参数)
8.启动从服务器复制功能
start slave;
9.检查从服务器复制功能状态:
show slave status\G;
注:Slave_IO及Slavers进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误),这里需要注意如果Slave_IO_Running的状态不是YES而是Connecting 大部分情况是因为从服务器访问主服务器的账号密码不对,权限不足需要认真核对 并通过如下方法处理
mysql >stop slave //先关闭从服务器复制功能
mysql> change master to master_host='172.19.15.4’,master_user='root',master_password='handhand',master_log_file='mysql-bin.000003',master_log_pos=154;
mysql>start slave //重新启动
以上操作过程,主从服务器配置完成。
如果 从服务器需要重新绑定
stop slave
reset master
再重复进行 操作