mysql 复制(主从复制)
一、概述
让一台服务器的数据与其他服务器数据保持同步。一台主库的数据可以同步到多台备库上,而备库本身也可以配置成其他服务器的主库。
主要应用:
1) 数据分布
2) 负载均衡
3) 伪备份。在备份基础上能增加更安全的技术补充
4) 高可用性和故障切换。避免mysql单点失败
5) 升级测试。升级数据库前,将数据复制到备库,使得查询能够在备库按照预期执行。
支持两种复制方式
1) 基于语句的复制
2) 基于行的复制
两种方式复制原理一样:在主库上记录二进制日志、在备库重放日志 实现异步的数据复制。异步代表在同一时间点备库的数据与主库不一致,几秒,几分甚至几个小时的延迟。
复制是向后兼容,即备库数据库版本高于主库 而不能是 低于主库
关于开销:
1) 启用二进制日志带来的开销;
2) 每个备库也会对主库增加一些I/O开销
3) 锁竞争也会阻碍事务的提交
二、复制的工作原理
1. 在主库上把数据更改记录到二进制日志 (binary log) 中。
2. 备库将主库上的日志复制到中继日志 (relay log) 中。
3. 备库读取中继日志中的事件,将数据放入备库中。
三、配置复制
1. 创建复制账号
建议为每台数据库服务器创建相同账号。
mysql> grant replication slave,replication client on *.* to repl@'192.168.0.%' identyfied by 'password';
2. 配置主库
vi /etc/my.conf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id= //[必须]服务器唯一ID,默认是1,一般取IP最后一段
3. 配置备库
vi /etc/my.conf
[mysqld]
log-bin=mysql-bin //[非必须]启用二进制日志
server-id= //[必须]服务器唯一ID,默认是1,一般取IP最后一段
4. 分别重启数据库
/etc/init.d/mysql restart
5. 登录主服务器的mysql,查询master的状态
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin. | | | |
+------------------+----------+--------------+------------------+
row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
记下file 和 position 用于配置备库
6. 配置备库
mysql>change master to master_host='192.168.145.10',master_user='repl',master_password='password',
master_log_file='mysql-bin.000004',master_log_pos=; //注意不要断开,308数字前后无单引号。
7. 启动从服务器复制功能
Mysql>start slave;
8. 检查从服务器复制功能状态
mysql> show slave status\G *************************** . row *************************** Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.145.10 //主服务器地址
Master_User: repl//授权帐户名,尽量避免使用root
Master_Port: //数据库端口,部分版本没有此行
Connect_Retry:
Master_Log_File: mysql-bin.
Read_Master_Log_Pos: //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.
Relay_Log_Pos:
Relay_Master_Log_File: mysql-bin.
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
...... 注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
参考:
1) 高性能mysql第三版
2) itwork的blog
mysql 复制(主从复制)的更多相关文章
- Mysql的AB复制(主从复制)原理及实现
Mysql复制(replication)是一个异步的复制,从一个Mysql 实例(Master)复制到另一个Mysql 实例(Slave).实现整个主从复制,需要由Master服务器上的IO进程,和S ...
- MySQL(mariadb)主从复制模式与复制过滤
在前一篇文章<mysql多实例与复制应用>中只对mysql的复制做了简单的介绍,本篇内容专门介绍一下mysql的复制. MySQL复制 mysql复制是指将主数据库的DDL和DML操作通过 ...
- 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)
主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...
- 【3.1】【mysql基本实验】mysql复制(主从复制/异步复制/半同步复制,一主一从)
关键词:mysql复制(异步复制),mysql异步复制 核心原理: mysql 复制流程原理 一个事务在 mysql异步复制中的流程与生命周期 一个事务,在传统半同步的复制流程 #mysql主从基本实 ...
- MySQL复制环境(主从/主主)部署总结性梳理
Mysql复制概念说明Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves) ...
- MySQL 数据库主从复制架构
前文<MySQL 数据库事务与复制>分析了 MySQL 复制过程中如何保证 binlog 和事务数据之间的一致性,本文进一步分析引入从库后需要保证主从的数据一致性需要考虑哪些方面. 原生复 ...
- MySQL 复制介绍及搭建
MySQL复制介绍 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard. M ...
- mysql的主从复制是如何实现的
前言 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为 ...
- 转mysql复制主从集群搭建
最近搭了个主从复制,中间出了点小问题,排查搞定,记录下来 1环境:虚拟机:OS:centos6.5Linux host2 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 ...
- MySQL复制的基本概念和实现
MySQL的复制的概念是完成水平扩展的架构 MySQL性能方面的扩展方式有scale on(向上扩展,垂直扩展) scale out(向外扩展,水平扩 ...
随机推荐
- Playbooks 中的错误处理
Topics Playbooks 中的错误处理 忽略错误的命令 控制对失败的定义 覆写更改结果 Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算. ...
- java - 只输出不含中文标点符号的中文
String a ="12dss显示,‘:()中文只"; StringBuffer b = new StringBuffer(); for(int i = 0;i<a.len ...
- 1.4 Application应用
使用celery第一件要做的最为重要的事情是需要先创建一个Celery实例,我们一般叫做celery应用,或者更简单直接叫做一个app.app应用是我们使用celery所有功能的入口,比如创建任务,管 ...
- localtime 的性能问题及其替代者
在系统从redhat5升到redhat6的过程中,服务的性能差了很多.经过定位发现是程序中频繁调用localtime/localtime_r所致. 而调用localtime_r 的实现中,对时区进行了 ...
- 初次用SqlServer查看本地的Excel文件时需要注意的地方
日常用到通过SqlServer 读取Excel文件的案例 ,记录下来 文件路径 :C:\Users\Administrator\Desktop\icd10.xls 1.查询语句: SELECT *F ...
- solr java api 使用solrj操作zookeeper集群中的solrCloud中的数据
1 导入相关的pom依赖 <dependencies> <dependency> <groupId>org.apache.solr</groupId> ...
- 04-nginx日志管理
做了几年PHP,老板.经理没说让我管过日志这东西.一般牵涉到日志运维这主要是运维的工作.但是这一章节主要是以拔高性质为主.分析日志的管理方式.PHP程序员不能光靠PHP成为高手,PHP不就if els ...
- map两种插入方法解析(insert() 与 下标[]操作)
insert 含义是: 如果key存在,则插入失败,如果key不存在,就创建这个key-value. 实例: map.insert((key, value)) 利用下标操作的含义是: 如果这个key存 ...
- 507. Perfect Number 因数求和
[抄题]: We define the Perfect Number is a positive integer that is equal to the sum of all its positiv ...
- 19-字符串匹配(kmp || substr,find)
链接:https://www.nowcoder.com/acm/contest/77/C来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...