mysql怎么主库关从库 mysql主库挂了,从库会成为主库吗

老问题,关于主从数据库的,mysql的方法一:忽略错误后,继续同步
该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
解决:
stop slave;
#表示跳过一步错误,后面的数字可变
set global sql_slave_skip_counter =1;
start slave;
之后再用mysql show slave status\G 查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
ok,现在主从同步状态正常了 。。。
方式二:重新做主从,完全同步
该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
解决步骤如下:
1.先进入主库,进行锁表,防止数据写入
使用命令:
mysql flush tables with read lock;
注意:该处是锁定为只读状态,语句不区分大小写
2.进行数据备份
#把数据备份到mysql.bak.sql文件
[root@server01 mysql]#mysqldump -uroot -p -hlocalhostmysql.bak.sql
这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失
3.查看master 状态
mysql show master status;
------------------- ---------- -------------- -------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
------------------- ---------- -------------- -------------------------------
| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |
------------------- ---------- -------------- -------------------------------
1 row in set (0.00 sec)
4.把mysql备份文件传到从库机器,进行数据恢复
#使用scp命令
[root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/
5.停止从库的状态
mysql stop slave;
6.然后到从库执行mysql命令,导入数据备份
mysql source /tmp/mysql.bak.sql
7.设置从库同步 , 注意该处的同步点,就是主库show master status信息里的| File| Position两项
change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
8.重新开启从同步
mysql stop slave;
9.查看同步状态
mysql show slave status\G 查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
好了,同步完成啦 。
MySQL 主从 , 5 分钟带你掌握MySQL 主从一直是面试常客,里面的知识点虽然基础,但是能回答全的同学不多 。
比如楼哥之前面试小米,就被问到过主从复制的原理 , 以及主从延迟的解决方案,因为回答的非常不错,给面试官留下非常好的印象 。你之前面试,有遇到过哪些 MySQL 主从的问题呢?
所谓 MySQL 主从 , 就是建立两个完全一样的数据库,一个是主库,一个是从库 , 主库对外提供读写的操作,从库对外提供读的操作,下面是一主一从模式:
对于数据库单机部署 , 在 4 核 8G 的机器上运行 MySQL 5.7 时,大概可以支撑 500 的 TPS 和 10000 的 QPS,当遇到一些活动时 , 查询流量骤然,就需要进行主从分离 。
大部分系统的访问模型是读多写少,读写请求量的差距可能达到几个数量级,所以我们可以通过一主多从的方式,主库只负责写入和部分核心逻辑的查询 , 多个从库只负责查询,提升查询性能,降低主库压力 。
MySQL 主从还能做到服务高可用,当主库宕机时,从库可以切成主库,保证服务的高可用,然后主库也可以做数据的容灾备份 。
整体场景总结如下:
MySQL 的主从复制是依赖于 binlog 的,也就是记录 MySQL 上的所有变化并以二进制形式保存在磁盘上二进制日志文件 。
主从复制就是将 binlog 中的数据从主库传输到从库上,一般这个过程是异步的 , 即主库上的操作不会等待 binlog 同步的完成 。
详细流程如下:
当主库和从库数据同步时,突然中断怎么办?因为主库与从库之间维持了一个长链接,主库内部有一个线程,专门服务于从库的这个长链接的 。
对于下面的情况,假如主库执行如下 SQL,其中 a 和 create_time 都是索引:
我们知道 , 数据选择了 a 索引和选择 create_time 索引,最后 limit 1 出来的数据一般是不一样的 。
所以就会存在这种情况:在 binlog = statement 格式时,主库在执行这条 SQL 时,使用的是索引 a,而从库在执行这条 SQL 时,使用了索引 create_time , 最后主从数据不一致了 。
那么我们改如何解决呢?
可以把 binlog 格式修改为 row,row 格式的 binlog 日志记录的不是 SQL 原文,而是两个 event:Table_map 和 Delete_rows 。
Table_map event 说明要操作的表 , Delete_rows event用于定义要删除的行为,记录删除的具体行数 。row 格式的 binlog 记录的就是要删除的主键 ID 信息,因此不会出现主从不一致的问题 。
但是如果 SQL 删除 10 万行数据 , 使用 row 格式就会很占空间的,10 万条数据都在 binlog 里面,写 binlog 的时候也很耗 IO 。但是 statement 格式的 binlog 可能会导致数据不一致 。
设计 MySQL 的大叔想了一个折中的方案 , mixed 格式的 binlog,其实就是 row 和 statement 格式混合使用,当 MySQL 判断可能数据不一致时 , 就用 row 格式,否则使用就用 statement 格式 。
有时候我们遇到从数据库中获取不到信息的诡异问题时 , 会纠结于代码中是否有一些逻辑会把之前写入的内容删除,但是你又会发现,过了一段时间再去查询时又可以读到数据了 , 这基本上就是主从延迟在作怪 。
主从延迟,其实就是“从库回放” 完成的时间,与 “主库写 binlog” 完成时间的差值 , 会导致从库查询的数据,和主库的不一致。
谈到 MySQL 数据库主从同步延迟原理,得从 MySQL 的主从复制原理说起:
总结一下主从延迟的主要原因:主从延迟主要是出现在 “relay log 回放” 这一步,当主库的 TPS 并发较高,产生的 DDL 数量超过从库一个 SQL 线程所能承受的范围 , 那么延时就产生了,当然还有就是可能与从库的大型 query 语句产生了锁等待 。
我们一般会把从库落后的时间作为一个重点的数据库指标做监控和报警,正常的时间是在毫秒级别 , 一旦落后的时间达到了秒级别就需要告警了 。
解决该问题的方法,除了缩短主从延迟的时间,还有一些其它的方法 , 基本原理都是尽量不查询从库 。
具体解决方案如下:
在实际应用场景中,对于一些非常核心的场景,比如库存,支付订单等,需要直接查询从库,其它非核心场景,就不要去查主库了 。
两台机器 A 和 B,A 为主库,负责读写,B 为从库,负责读数据 。
如果 A 库发生故障,B 库成为主库负责读写,修复故障后,A 成为从库,主库 B 同步数据到从库 A 。
一台主库多台从库,A 为主库,负责读写 , B、C、D为从库,负责读数据 。
如果 A 库发生故障,B 库成为主库负责读写,C、D负责读,修复故障后,A 也成为从库,主库 B 同步数据到从库 A 。
mysql主从库与读写分离一.mysql主从库与读写分离的实现理论
二.mysql配置
1.准备两台服务器安装mysql(也可以在一台中装两个mysql修改端口号避免冲突)
2.分别连接mysql
3.配置mysql
1.配置主库 monster
打开binary log
2.配置从库
主库授权
账号repl后面的是从库的ip地址mysql是账号repl的密码
刷新
后面master_log_pos=0 表示从零开始同步 master_log_file 是上面SHOW MASTER STATUS 下面的file文件
在从库中开启主从跟踪
查看从库状态
从库中终止主从同步 stop slave
查看 my.cnf 文件 把 server -id=1 的字段删除保留server-id=2 修改后保存 重启mysql 重新连接开启主从同步start slave
查看从库状态 发现没有错误到此主从同步配置已经完成.
【mysql怎么主库关从库 mysql主库挂了,从库会成为主库吗】关于mysql怎么主库关从库和mysql主库挂了,从库会成为主库吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读