文中配置的是基本的一主一从
主机从机数据库均为mysql5.7
文章内容包括
- 文中配置主从复制的方式
- 遇到的的问题
配置主从复制 一主一从的方式
原理图:
slave会从master读取binlog来进行数据同步
master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events
slave将master的binary log events拷贝到它的中继日志(relay log)
slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的
复制的基本原则
每个slave只有一个master
每个slave只能有一个唯一的服务器ID
每个master可以有多个salve
一主一从常见配置步骤
主机修改my.ini配置文件添加
server-id=1#主服务器唯一ID
log-bin=usr/local/mysql/mysqlbin#启用二进制日志
binlog-ignore-db=mysql#设置不要复制的数据库
binlog-do-db=需要复制的主数据库名字#设置需要复制的数据库
binlog_format=STATEMENT#设置logbin格式(默认STATEMENT)
mysql主从复制起始时,从机不继承主机数据,所以在复制主机数据前,先建立主从复制关系,不用直接现在主机上创建库和表
从机配置文件修改my.cnf的[mysqld]栏位下
server-id = 2
relay-log=mysql-relay
-
因修改过配置文件,请主机+从机都重启后台mysql服务
-
主机从机都关闭防火墙,如果除了本地开发环境以外配置防火墙出入规则即可
-
主机上建立帐户并授权slave
GRANT REPLICATION SLAVE ON . TO ‘zhangsan’@‘从机器数据库IP’ IDENTIFIED BY ‘123456’; -
查询master的状态
show master status; -
记录下File和Position的值
-
执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
从机上配置需要复制的主机
在从机mysql命令行下执行从机指定的主机的相关配置信息
CHANGE MASTER TO MASTER_HOST='192.168.139.1',#主机的ip
MASTER_USER='zhangsan',#主机开放用户 HOST作用域必须为%
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.具体数字',MASTER_LOG_POS=具体值; #就是上面主机记录下File和Position的值
启动从服务器复制功能
start slave;
以列式的形式展示slave 状态信息
show slave status\G;
下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
stop slave; 如何停止从服务复制功能
如何重新配置主从
- stop slave;#停止slave
- reset master;#重置master
- 从机指定的主机的相关配置信息
- start slave#启动从服务器复制功能
- show slave status\G#以列式的形式展示slave 状态信息
测试 主机新建库、新建表、insert记录,从机复制
新建库会主从复制
创建表会主从复制
插入数据主从复制
遇到的问题 从机连接不上主机数据库
Slave_IO_Running: Yes 这里状态值一直是Connecting
以下图当我测试ping 127.0.0.1 都超时的情况下 就在想linux一定连不上主机这一台服务器
通过驱动精灵检测驱动,检测后确实有两个驱动异常,安装后,又把网卡驱动重装了,电脑重启这个问题解决了 可以ping通127.0.0.1 并且能ping通本机的192.168.139.1 192.168.43.207 这几个网卡的ip
通过在从机里面ping 主机192.168.43.207 断定 linux也可以访问主机(这里是一个大坑)
最终检查了很多次配置和尝试主机数据库新建了很多用户供从机连接都没有解决
最终想到了通过mysql -u -p -h 192.168.139.1 可以指定连接一台机器的数据库
如下图我首先测试了之前一直配置连接的主机的ip地址192.168.43.207 发现不能连上
然后测试了跟虚拟机在同一个网段下的ip192.168.139.1 连接数据库就成功了
问题就迎刃而解了
重新执行以下步骤
- stop slave;#停止slave
- reset master;#重置master
- CHANGE MASTER TO MASTER_HOST=‘192.168.139.1’,#主机的ip
MASTER_USER=‘zhangsan’,#主机开放用户 HOST作用域必须为%
MASTER_PASSWORD=‘123456’,
MASTER_LOG_FILE=‘mysqlbin.00000001’,MASTER_LOG_POS=639; #就是上面主机记录下File和Position的值 - start slave#启动从服务器复制功能
- show slave status\G#以列式的形式展示slave 状态信息
主从复制关系建立成功