MySQL主从复制(原理/主从延迟/配置)
2021-02-26 15:44:54 2 举报
AI智能生成
MySQL主从复制(原理/主从延迟/配置)
作者其他创作
大纲/内容
阅读导航
<b><font color="#0076b3">MySQL 语法</font><font color="#f15a23"> 👉</font></b>
<b><font color="#0076b3">MySQL 索引</font></b> 👉
<b><font color="#0076b3">MySQL 事务</font></b> 👉
<b><font color="#0076b3">MySQL MVCC</font></b> 👉
<b><font color="#0076b3">MySQL 锁机制</font></b> 👉
<b><font color="#0076b3">MySQL 调优</font></b> 👉
<b><font color="#f15a23">主从复制+慢查询</font></b>
原理
从库连接到主库后,从库有个IO线程,将<b>主库的binlog日志</b>拷贝到自己本地,写入relay日志中
接着从库中有一个SQL线程会从relay日志中读取,然后执行其中的内容,使主从数据保持一致
主备延迟怎么解决?
<b>分库</b>,把一个主库拆分成多个主库,降低主库的写并发,使得延迟时间可以忽略不计
<b>不查询</b>,插入数据成功后直接修改数据,不要查询(因为修改数据在主库,查询在从库)
还可以直连主库,不推荐,失去读写分离的意义
配置
修改配置
一主一丛
主机:vim/etc/my.cnf<br>如有必要可关闭防火墙
主服务器唯一ID:server-id=1(双主切忌冲突)
启用二进制日志:log-bin=mysql-bin
设置不要复制的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
设置需要复制的数据库:binlog-do-db=testdb(自定义)
设置binlog格式:binlog_format=STATEMENT
从机:vim/etc/my.cnf
从服务器唯一ID:server-id=2
启用中继日志:relay-log=mysql-relay
双主双从
两台主机需额外配置<br>(一主一从请忽略)
在作为从库时,有写入操作也要更新二进制日志:log-slave-updates
设置自增长字段每次递增的步长:auto-increment-increment=2
设置自增长字段的起始值:auto-increment-offset=1 和 2
双主相互复制,分别执行
CHANGE MASTER TO MASTER_HOST='另一台主机地址',<br>MASTER_USER='slave',<br>MASTER_PASSWORD='123456',<br>MASTER_LOG_FILE='MYSQL-BIN.000001',<br>MASTER_LOG_POS=154;
start slave;
show slave status\G;
重启服务使配置生效:systemctl restart mysqld
设置权限
主机
mysql -uroot -proot
mysql> :GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
mysql> :show master status;
查看File(日志名)和Position(切入点),用来配置从机
从机
CHANGE MASTER TO MASTER_HOST='10.211.55.6',<br>MASTER_USER='slave',<br>MASTER_PASSWORD='123456',<br>MASTER_LOG_FILE='MYSQL-BIN.000001',<br>MASTER_LOG_POS=154;
start slave;
show slave status\G;
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
如之前配置过主从,需重置
mysql> :stop slave;
停止从服务器的复制功能
mysql> :reset master;
重新配置主从
慢查询
查看
mysql> show variables like 'slow_query_log%';
查看<b>慢查询日志</b>的开启状态和慢查询日志保存位置
mysql> show variables like 'long_query_time';
查看慢SQL阈值,默认值是10s,可根据需求调整
日志分析工具
mysqldumpslow
[root@lishaojie]# <b>mysqldumpslow /var/lib/mysql/mysql-slow.log</b>
使用
mysqldumpslow --help
显示返回记录集最多的10个SQL
显示访问次数最多的10个SQL
显示按照时间排序的前10条里面含有左连接的查询语句
建议在使用这些命令时结合 | more 使用,否则有可能出现爆屏情况
mysqlsla(需安装)
关于作者
<b style=""><font color="#b296c7">我的博客</font></b> 👉
<b><font color="#00a650">微信公众号</font></b> 👉
<b><font color="#f15a23">GitHub 主页</font></b> 👉
0 条评论
下一页