mysql的主从复制
主从复制,读写分类,写找主库,读找从库,
主库
io的线程将用户写的日志记录在二进制的日志里。io线程是为了binlog日志活的。
在主库里创建主从复制账号。
从库
io线程发现主的io线程有更新就会发起信息复制,会有验证,验证通过以后,主的就会把二进制日志,复制给从的,从的就会把主的二进制日志让到中继日志
语句relay-log=relay-bin
然后从库的sql线程开始启动,将中继的二进制日志翻译成一条一条的sql命令执行。
从库要干的
1开启中继日志
relay-log=relay-bin
2主从复制验证信息录入
3server id =5(不是1就可以)
4激活主从复制
主库要干的
1打开binlog日志
2创建主从复制账号
3server id =1
具体干什么
从库找主库验证信息都会干什么
1,主库的ip,和主库的secoket进程
2主库的复制账号
3复制那个二进制文件
4二进制文件的具体位置position
从库记录复制到哪里是记录在在master.info的文件里
然后把读取过来的信息记录到中继日志
sql读中继日志的时候,会有一个记录上次读到哪里的日志叫relay-log.info文件
主从账号必须是replication slave的授权,all都不可以。
show master status; 看位置,和二进制的文件类型。
在主从复制开始之前我们要先个主库做一个全备,给从库复制过去,这样两个库的内容就一样了,然后我们在开始主从复制
在倒库之前要给主库手动锁表
flush table with read lock;
手动解锁的命令,unlock tables;
在主库创建账号 :grant replication slave on *.* 'su'@'' identified by '12323'
告诉从库主库的6条信息CHANGE MASTER TO MASTER_HOST='',MASTER_POET=3306,MASTER_USER=‘账号’,MASTER_PASSWORD=''.MASTER_LOG_FILE='',MASTER_LOG_POS=位置
start slave;开启从库
看从库的的命令:show slave status\G;
reset slave all;重置
stop slave;关闭
从库要告诉主库的6条信息
1主库的地址
2主库的端口
3主库的Z账号名
4主库账号的密码,
5主库的binlog日志到哪个了
6主库的位置。
主从复制,不能忘从库写数据,会造成sql线程宕机,想要恢复,必须先进行回滚机制。
主从复制的账号具有超级权限,
解决零时跳过宕机的命令set global sql_slave_skip_counter=1 零时跳过一次sql命令
second_behind——master=0 是主从复制的延迟。一旦大于3秒人工必须介入。
mysql 5.6版本以后哦都变成了一个小库一个线程。
5.7开始变成了一组一组的解析。
从同步出现一下错误: Slave_IO_Running: Connecting Slave_SQL_Running: Yes 解决方法: 导致lave_IO_Running 为connecting 的原因主要有以下 34个方面: 1、网络不通 2、密码不对 3、pos不对 4、端口不对
如果是sqlno最大的可能是从库的语句没有被执行吗,基本就是开发在里边执行写入或者删除了。