mysql数据库主从复制实现,和问题解决

自己测试搭建mysql数据库的主从复制,并记录下自己遇到的所有坑点。

什么是主从数据库

主从数据库详解

环境

系统:window10
mysql:5.7
主服务器:192.168.99.86
从服务器:192.168.99.181
测试主从复制的数据库名 vim

一,主数据库配置

在主服务器进行如下操作,使用mysql控制台。

  1. 停止mysql,在mysql安装目录下修改my.ini文件,添加如下配置
#=========主从复制关键配置=====================
#主库和从库需要不一致,配一个唯一的ID编号,1至32。 手动设定
server_id=1 
#二进制文件存放路径,存放在根目录data
log-bin=mysql-bin 
#需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制
binlog-do-db=vim 
#不需要复制的库,和上项同理
#binlog-ignore-db=mysql 
#=========主从复制关键配置=====================
  1. 打开mysql控制台窗口执行:
    windows打开mysql控制台方法链接
  CREATE USER 'slave'@'192.168.99.%' IDENTIFIED BY '123456';
  GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.99.%';
  FLUSH PRIVILEGES;

slave:给从服务器分配的登录账号
123456:给从服务器分配的登录密码
192.168.99.% :从服务器可以从哪里登录,从服务器ip限制

  1. 查看状态
show master status;
  1. 控制台窗口如下
    mysql数据库主从复制实现,和问题解决_第1张图片

二进制文件为mysql-bin.000007,位置为604 数据库 vim

二,从数据库配置

在从服务器进行如下操作,使用mysql控制台。

  1. 停止mysql,在mysql安装目录下修改my.ini文件,添加如下配置
#=========主从复制关键配置=====================
#主库和从库需要不一致,配一个唯一的ID编号,1至32。 手动设定
server_id=2
#二进制文件存放路径,存放在根目录data
log-bin=mysql-bin 
#需要复制的库,多个库用逗号隔开,如果此项不配置所有主库都参与复制
binlog-do-db=vim 
#不需要复制的库,和上项同理
#binlog-ignore-db=mysql 
#=========主从复制关键配置=====================
  1. 打开mysql控制台:关闭主从复制服务
slave stop;
  1. 执行同步语句
change master to master_host='192.168.99.86', master_user='slave', master_password='123456', master_log_file='mysql-bin.000007', master_log_pos=604;
  1. 启动主从复制功能
start slave;   
  1. 检查从服务器复制功能状态
 show slave status\G

主要下面两个属性需要为yes才是开启成功。
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
6. 之前控制台操作总结
mysql数据库主从复制实现,和问题解决_第2张图片

测试

在主数据库的测试表添加数据,看从数据库是否更改。通常就成功了。

下面是问题总结:
我不小心在从数据库添加了一条数据导致主键约束而无法添加数据。所以在使用从表的时候。一定不要去添加,修改从表数据。不然主从复制就会停止了。

问题复盘:
我在主数据库手动添加一条数据,我看到从数据库没有更新。
先检查从服务器复制功能状态:在从服务器mysql控制台输入

 show slave status\G

mysql数据库主从复制实现,和问题解决_第3张图片
发现报错为主键冲突:Duplicate entry ‘1’ for key ‘PRIMARY’ on query
删除从表不小心输入的数据。
然后重启主从复制服务。运行:

start slave; 

发现问题解决了。主从就配置好了。

你可能感兴趣的:(数据库,mysql,数据库,主从复制)