MySQL实现主从复制

MySQL实现主从复制
主从复制的概念

实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的3306端口,通过网络发给MYSQL-B。
MYSQL-B收到后,写入本地日志系统B,然后一条条的将数据库事件在数据库中完成。MYSQL-A变化,MYSQL-B也会变化。即MYSQL复制。

一、前提条件
一主一从(主机本地,从机虚拟机)

新建了一台虚拟机,从机
MySQL实现主从复制
配置jdk环境变量:
https://blog.csdn.net/xsh096011/article/details/105660305

linux安装配置MySQL:(建议安装旧版本MySQL,新版本有其他问题)
https://blog.csdn.net/xsh096011/article/details/105660305

二、前期准备
主机ping从机;从机ping主机(保证主从机在同一网络下)
主机、从机关闭防火墙

linux下关闭防火墙:systemctl stop firewalld;
开启防火墙:systemctl start firewalld;
开机禁用:systemctl disable firewalld;

三、主从配置
MySQL实现主从复制
添加server_id =1(主服务器id)
开启二进制日志功能:在my.ini中添加如下语句:log-bin=“mysql安装路径\log\binlog.log”;
主机主要配置这两项,其他配置可选;

从机配置
MySQL实现主从复制
注意:(basedir、datadir为linux下安装mysql路径,每个人路径不同)

每个参数含义如下:
MySQL实现主从复制

四、windows主机上建立账户并授权slave

主机登录mysql
MySQL实现主从复制
MySQL实现主从复制
mysql新版本需要按照如下命令建立账户授权slave:

创建账户:create user ‘用户名’@’访问主机’ identified by ‘密码’;
赋予权限:grant 权限列表 on 数据库 to ‘用户名’@’访问主机’ ;(修改权限时在后面加with grant option,with grant option这个选项表示该用户可以将自己拥有的权限授权给别人)
MySQL实现主从复制
MySQL实现主从复制
输入FLUSH PRIVLIEGES;刷新
查询master状态:show master status;
记录下File和Position值;
MySQL实现主从复制

五、Linux从机上配置需要复制的主机
(注意:MASTER_HOST的值,我的就是因为MASTER_HOST原来查错了导致主从配置失败)

从机Linux登录:
MySQL实现主从复制
Linux从机配置需要复制的主机
MySQL实现主从复制
在从服务器上登录主服务器slave账号测试:
mysql -u用户名 -p密码 -h主机IP;
(Slave_IO_Running=Connecting可通过如上命令测试下)
MySQL实现主从复制
MySQL实现主从复制

六、主从测试
主机创建mydb59;建表dog,插入一条记录;
MySQL实现主从复制
从服务器查询到一条记录;

MySQL实现主从复制
MySQL主从复制配置测试成功!


踩到的坑:
MySQL实现主从复制
MySQL实现主从复制
注意,修改my.ini文件要写的格式和原配置文件格式同,否则识别不出来;

ERROR 1410 (42000): You are not allowed to create a user with GRANT

解决:
使用mysql:use mysql;
修改host:update user set host=’%’ where user=‘root’;
执行:Grant all privileges on test.* to ‘root’@’%’;
MySQL实现主从复制

ERROR 1396 (HY000): Operation CREATE USER failed for ‘xxxx’@'IP '问题

使用mysql的drop指令可解决此问题,,输入以下指令:
use mysql;
drop user ‘xssScaner_user’@‘localhost’;
flush privileges;
然后再执行创建用户的指令:

MySQL实现主从复制

MySQL实现主从复制
原因:
新版mysql版本已经将创建账户和赋予权限的方式分开

解决办法:
创建账户:create user ‘用户名’@’访问主机’ identified by ‘密码’;
赋予权限:grant 权限列表 on 数据库 to ‘用户名’@’访问主机’ ;(修改权限时在后面加with grant option)
MySQL实现主从复制
MySQL实现主从复制
Slave_IO_Running和Slave_SQL_Running必须同时为Yes,否则主从配置失败

Mysql主从同步时Slave_IO_Running:Connecting ; Slave_SQL_Running:Yes的情况故障排除:
MySQL实现主从复制
我的是因为MASTER_HOST值输错导致;

参考博客:
https://blog.csdn.net/mbytes/article/details/86711508