目录

mysql主从介绍 

主从搭建

对主机数据库进行操作 


 

mysql主从介绍 

db2 主从复制能互相复制嘛 sql主从复制_数据库

mysql从机复制的步骤: 

slave会从master读取binlog来进行数据同步

1 master主机将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
2 slave将master的binary log events拷贝到它的中继日志(relay log);
3 slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的 

几种处理模式: 

db2 主从复制能互相复制嘛 sql主从复制_大数据_02

statement模式:不能使用函数,比如说你的主机使用函数now()记录时间但是当同步到从机的时候,他的时间就会发生变化(明显不一致),从而导致主从复制数据不一致的情况发送(个人感觉有点像RDB,直接数据同步,会有数据不一致情况)

行模式row:效率较低,记录每一行的改变,如果数据量达到一个层面就会很慢了(个人感觉有点像AOF,给从机每一行去执行)

MIXED模式:前面两种模式的结合版本;

主从搭建

修改主机的配置文件:

先找到主机mysql的配置文件my.ini,然后配置日志文件的目录与设置不需要复制的数据库需要复制的数据库名字

db2 主从复制能互相复制嘛 sql主从复制_java_03

db2 主从复制能互相复制嘛 sql主从复制_数据库_04

db2 主从复制能互相复制嘛 sql主从复制_java_05

 

然后对从机的配置文件修改:

 对my.cnf文件修改

db2 主从复制能互相复制嘛 sql主从复制_数据库_06

1.在主机中创建一个用户,对于本机数据库中有所有权限

#在主机本地,给远程赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'slave190401'@'%' IDENTIFIED BY '123';

 

db2 主从复制能互相复制嘛 sql主从复制_java_07

 查看主机数据库状态

show master status

 

db2 主从复制能互相复制嘛 sql主从复制_db2 主从复制能互相复制嘛_08

2.重启mysql主机

db2 主从复制能互相复制嘛 sql主从复制_db2 主从复制能互相复制嘛_09

 3.然后在linux下重启我们的mysql从机

systemctl restart mysqld

4.然后我们查看一下mysql的status,发现running active即可

systemctl status mysqld

5.然后在window下关闭所有的防火墙

并且关闭linux下的防火墙stop

systemctl status firewalld

mysql的主从复制和redis那些是有点相像的

从机访问主机的Binary log都需要进行验证,看能不能进行访问,而我们的redis集群从机访问主机(也就是得到主机的RDB、AOF文件),也需要进行验证看是不是第一次数据加载,而这个验证就是看的id是不是相同的

Binlog_Do_DB和Binlog_Ignore_DB指的是要复制的数据库和不要复制的数据库

此时主机不要对这个Bin_Do_DB数据库进行操作,这是主从的数据库,如果变更,Position就会发送改变

db2 主从复制能互相复制嘛 sql主从复制_mysql_10

6.此时我们需要对linux下的mysql进行操作:拜主机为大哥,跟slave of有点相像

CHANGE MASTER TO MASTER_HOST='192.168.184.1',
MASTER_USER='slave190401',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysqlbin.000001',MASTER_LOG_POS=107;

db2 主从复制能互相复制嘛 sql主从复制_db2 主从复制能互相复制嘛_11

7.如果之前从机给主机拜大哥出现问题,需要reset一下  

stop slave
reset master

 然后我们再开启主从复制

start slave

8.查看从机状态(类似redis中的 info replication)

show slave status\G

db2 主从复制能互相复制嘛 sql主从复制_大数据_12

对主机数据库进行操作 

对主机进行操作创建mydb_190401数据库后,发现我们从机用户连接的数据库也有了

有延迟,毫秒级,完美bro

db2 主从复制能互相复制嘛 sql主从复制_大数据_13

 如果说你从机拜大哥的命令出现了错误,直接stop slave停止从机,然后reset master即可——>回到执行拜大哥命令前