mysql主从挂了以后怎么自动切换?
1、可以通过使用MHA(MySQL High Availability)工具实现MySQL主从自动切换。
2、MHA可以通过对MySQL主从复制过程进行监控,一旦发现主库出现故障无法正常工作时,MHA会快速地将从库提升为新的主库。
同时,MHA还能对MySQL集群进行配置管理、切换控制、监控报警等功能。
3、除了MHA,还有Pacemaker等其他一些工具可以实现主从自动切换,这些工具的选择和应用还需要根据实际情况进行综合评估。
同时,为避免不必要的故障发生,也应该对MySQL主从挂掉后的自动切换进行必要的预案设计和测试。
mysql如何做实时的备份,也就是主从?
实现两个Mysql数据库之间同步同步原理: MySQL 为了实现replication 必须打开bin-log 项,也是打开二进制的MySQL 日志记录选项。
MySQL 的bin log 二 进制日志,可以记录所有影响到数据库表中存储记录内容的sql 操作,如insert / update / delete...什么情况会导致MySQL主从复制延迟?
1.网络的延迟由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。
2.主从两台机器的负载不一致由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况。
3.max_allowed_packet设置不一致主数据库上面设置的max_allowed_packet比从数据库大,当一个大的sql语句,能在主数据库上面执行完毕,从数据库上面设置过小,无法执行,导致的主从不一致。
4.key自增键开始的键值跟自增步长设置不一致引起的主从不一致。
如何使用mysql主从配置?
头条回答是拼字数么?哈哈。
1、原理:mysql开启binlog日志记录功能,然后主mysql上的操作都会记录到binlog,其他mysql同步这个binlog 就行了。
2、具体实施,看头条问答不行的。找专业的博客,看看。
是说怎么使用吗,主库只负责写,更新,删除,从库负责读,这样从库可以减轻主库压力,当然,虽然运维层面做好了主从,代码上怎么实现就需要开发来做了,不过,当前的大部分框架都实现了数据库主从分离
01前言
文章一切从简是米兜的一贯作风,太长的文章阅读起来感觉就费劲。如何使用mysql主从配置?我们就从简单的例子看一看,更加详细的配置可以自行google,这里过一下主从配置且能你快速上手。
MySQL主从复制工作原理图,过一下:
主服务器上面的任何修改都会保存在二进制日志Binary log里面,从服务器上面启动一个I/O thread(实际上就是一个主服务器的客户端进程),连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log里面。从服务器上面开启一个SQL thread定时检查Realy log,如果发现有更改立即把更改的内容在本机上面执行一遍。
02实验环境
两台服务器做配置测试:虚拟机中的 ubuntu (192.168.128.131) 和宿主机 xp (192.168.128.1)
分别安装有 mysql。最好版本一样(我的不一样)
机子都 ping 得通
03主服务器配置(ubuntu)
配置 mysql
#vi /etc/mysql/my.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=1 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
检查 mysql 是否允许远程连接
bind-address = 0.0.0.0 #这样表示允许所有网段连接
进入 mysql 终端
#mysql -uroot -proot
新建 mysql 用户(从服务器用到此账号配置)backup
mysql> GRANT REPLICATION backup ON *.* to 'backup'@'192.168.128.%' identified by 'backup';
刷新一下权限表
mysql> flush privileges;
重启 mysql
#service mysql restart
进入 mysql 终端查看 master 状态
mysql> show master status;
记录 file 和 position 的值,从服务器配置用到。这个时候不要去动主数据库,会影响 position 的值。
04从服务器配置(xp)
配置 mysql 的 my.ini 并重启
[mysqld]
log-bin=mysql-bin #[可选]启用二进制日志
server-id=2
登录 mysql 终端后执行
mysql> change master to master_host='192.168.128.131',
master_user='backup',
master_password='backup',
master_log_file='mysql-bin.000002',
master_log_pos=612;
启动 slave 从库
mysql> start slave;
查看 slave 从库
mysql> show slave status\G;
Slave_IO_Running 和 Slave_SQL_Running 必须都为 Yes 才算成功。
05测试
ubuntu mysql
mysql> create database test_repl;
然后查看 xp mysql 如果出现 test_repl 库则说明主从复制配置成功
mysql> show databases;
06总结
这只是最基本的配置,还有很多配置命令就不折腾了。测试时发现之前库不一致时我在主库里面添加一张表,而从库没有那个库,导致从库 slave 会报错,执行这个命令后重启从库就可以跳过这个错误。
#SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 跳过一个事务