mysql主从配置
发布日期:2021-08-30 07:11:49 浏览次数:6 分类:技术文章

本文共 2928 字,大约阅读时间需要 9 分钟。

主从形式:一主一从,主主复制,联级复制,一主多从--扩展系统读取性能,多主一从--5.7开始支持

用途:实时灾备的故障切换,读写分离,备份

主从原理:

主:log dump线程传binlog;
从:i/o线程接受读取binlog,并写入relay log文件,sql线程从relay log 文件中读取binlog并持久化

问题及解决:

主库宕机后,数据丢失---->半同步复制
主库写压力大,因从库只有一个sql 线程来持久化,复制可能延迟---->并行复制

半同步复制原理:

事务在主库写完binlog后需要从库返回一个已接受,才放回给客户端;
5.5集成到mysql,以插件的形式存在,需要单独安装
确保事务提交后binlog至少传输到一个从库
不保证从库应用完成这个事务的binlog
性能有一定的降低
网络异常或从库宕机,卡主库,直到超时或从库恢复

并行复制原理:

从库多线程apply binlog
在社区5.6中新增
库级别并行应用binlog,同一个库数据更改还是串行的
5.7版本并行复制基于事务组

部分数据复制

联级复制(常用)
A->B->C
B中添加参数log_slave_updates
B将把A的binlog记录到自己的binlog日志中

复制的监控

show slave status

复制出错处理

常见:1062(主键冲突),1032(记录不存在),1007(已创建数据库)
解决:手动处理,跳过复制错误:set global sql_slave_skip_counter=1
或者可以选择忽略这些错误 slave-skip-errors=1062,1032,1007

mysql主从复制是mysql高可用性,高性能(负载均衡)的基础

简单,灵活,部署方式多样,可以根据不同业务场景部署不同复制结构
复制过程中应该时刻监控复制状态,复制出错或延时可能给系统造成影响
mysql主从复制目前也存在一些问题,可以根据需要部署复制增强功能


主从实践:

主从复制要求mysql版本一致
1、修改主服务器master

vi /etc/my.cnf       [mysqld]       log-bin=mysql-bin   //[必须]启用二进制日志       server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

2、修改从服务器slave

vi /etc/my.cnf       [mysqld]       log-bin=mysql-bin   //[不是必须]启用二进制日志       server-id=226      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

然后重启两台服务器的mysql

3、配置主服务器

mysql>GRANT REPLICATION SLAVE ON *.* to 'fangxslave'@'100.168.50.211' identified by 'fangxslave';  # 一般不用root帐号,主从用户用具体IP代替,加强安全。
mysql>show master status;  #查询日志节点   +------------------+----------+--------------+------------------+   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |   +------------------+----------+--------------+------------------+   | mysql-bin.000004 |      308 |              |                  |   +------------------+----------+--------------+------------------+   1 row in set (0.00 sec)   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

4、配置从服务器

mysql>change master to master_host='100.168.50.203',master_user='fangxslave',master_password='fangxslave',master_log_file=' mysql-bin.000004',master_log_pos=308;   #注意不要断开,308数字前后无单引号。
Mysql>start slave;    启动从服务器复制功能

如果有报错为ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

使用reset slave可解决

5、检查复制状态

从服务器操作show slave status\G

*************************** 1. row ***************************              Slave_IO_State: Waiting for master to send event              Master_Host: 192.168.2.222  //主服务器地址              Master_User: fangxslave  //授权帐户名,尽量避免使用root              Master_Port: 3306    //数据库端口,部分版本没有此行              Connect_Retry: 60              Master_Log_File: mysql-bin.000004              Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos              Relay_Log_File: ddte-relay-bin.000003              Relay_Log_Pos: 251              Relay_Master_Log_File: mysql-bin.000004              Slave_IO_Running: Yes    //此状态必须YES              Slave_SQL_Running: Yes     //此状态必须YES               ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。

转载于:https://blog.51cto.com/243662875/2126015

转载地址:https://blog.csdn.net/weixin_34026276/article/details/91745077 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:spymemcached源码深入分析
下一篇:超级强悍的PHP代码编辑器PHPstorm及配置 如何下载安装

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月25日 10时18分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java按钮退出_java – 如何在此程序中添加退出按钮?怎么样“清楚”? 2019-04-21
python土味情话_Python 将土味情话语录设置为桌面壁纸 2019-04-21
bootstrap加载mysql数据库_bootstrap后台管理系统前后台实现(含数据库) 2019-04-21
幻兽天下修复版java_宠物天下四-幻兽天下 2019-04-21
java类spring加载_spring的加载机制? 2019-04-21
java计数器策略模式_java设计模式(二十一)--策略模式 2019-04-21
java负数十进制转二进制_java中负数的补码转换为十进制 2019-04-21
linux setuid函数_setuid函数解析 2019-04-21
java中asl_带你认识绕不开的ASLR 2019-04-21
java复杂性_java – 计算Big-O复杂性 2019-04-21
java泛型与接口_Java泛型用于方法,类和接口 2019-04-21
unix系统编码 java_JAVA字符编码系列三:Java应用中的编码问题 2019-04-21
java ip 范围内打卡_定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内 2019-04-21
与java线程有关的,线程多少和什么有关?大神们表示有话要说! 2019-04-21
php正则表达式 匹配数字,正则表达式之匹配数字范围 2019-04-21
php中带?错误,参考-此错误在PHP中意味着什么? 2019-04-21
php生成链接列表,根据URL链接和抛文本生成链接<a>标签的PHP函数 2019-04-21
matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数 2019-04-21
php html标签自定义属性,浅谈JS读取DOM对象(标签)的自定义属性 2019-04-21
如何使用matlab的siso,利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF... 2019-04-21