目录
mysql主从介绍
主从搭建
对主机数据库进行操作
mysql主从介绍
mysql从机复制的步骤:
slave会从master读取binlog来进行数据同步
1 master主机将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
2 slave将master的binary log events拷贝到它的中继日志(relay log);
3 slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的
几种处理模式:
statement模式:不能使用函数,比如说你的主机使用函数now()记录时间但是当同步到从机的时候,他的时间就会发生变化(明显不一致),从而导致主从复制数据不一致的情况发送(个人感觉有点像RDB,直接数据同步,会有数据不一致情况);
行模式row:效率较低,记录每一行的改变,如果数据量达到一个层面就会很慢了(个人感觉有点像AOF,给从机每一行去执行);
MIXED模式:前面两种模式的结合版本;
主从搭建
修改主机的配置文件:
先找到主机mysql的配置文件my.ini,然后配置日志文件的目录与设置不需要复制的数据库和需要复制的数据库名字
然后对从机的配置文件修改:
对my.cnf文件修改
1.在主机中创建一个用户,对于本机数据库中有所有权限
#在主机本地,给远程赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'slave190401'@'%' IDENTIFIED BY '123';
查看主机数据库状态
show master status
2.重启mysql主机
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就会发送改变
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;
7.如果之前从机给主机拜大哥出现问题,需要reset一下
stop slave
reset master
然后我们再开启主从复制
start slave
8.查看从机状态(类似redis中的 info replication)
show slave status\G
对主机数据库进行操作
对主机进行操作创建mydb_190401数据库后,发现我们从机用户连接的数据库也有了
有延迟,毫秒级,完美bro
如果说你从机拜大哥的命令出现了错误,直接stop slave停止从机,然后reset master即可——>回到执行拜大哥命令前