mysql主备和主从区别?
mysql 主从 主备区别
mysql中集群和主从的区别:主从之间是通过mysql的replication来保证数据的一致性;相对mysql集群的数据同步方式来讲是异步的。因为异步,所以主从之间复制数据可能会有一点微小的延时,就会出现不一致。
主从之间是通过mysql的replication来保证数据的一致性。相对mysql cluster的数据同步方式来讲是异步的。
mysql临时设置主从?
主从同步的详细过程如下:
1. 主服务器验证连接。
2. 主服务器为从服务器开启一个线程。
3. 从服务器将主服务器日志的偏移位告诉主服务器。
4. 主服务器检查该值是否小于当前二进制日志偏移位。
5. 如果小于,则通知从服
mysql如果出现主从数据不一致情况怎么弄?
1.网络的延迟由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。
2.主从两台机器的负载不一致由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况。
3.max_allowed_packet设置不一致主数据库上面设置的max_allowed_packet比从数据库大,当一个大的sql语句,能在主数据库上面执行完毕,从数据库上面设置过小,无法执行,导致的主从不一致。
4.key自增键开始的键值跟自增步长设置不一致引起的主从不一致。
5.mysql异常宕机情况下,如果未设置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出现binlog或者relaylog文件出现损坏,导致主从不一致。
6.mysql本身的bug引起的主从不同步。
7.版本不一致,特别是高版本是主,低版本为从的情况下,主数据库上面支持的功能,从数据库上面不支持该功能。
mysql主从复制是定时任务吗?
不是。
MySQL主从复制是为了实现数据库冗余备份,将master数据库数据定时同步至slave库中。一旦master数据库宕机,可以将web应用数据库配置快速地切换到slave数据库,确保web应用的。
如何使用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 跳过一个事务