mysql 主从复制讲解_mysql主从复制 详解
操作系统环境:CentOS5.5
1.MySQL 主从流程图
2.MySQL 主从说明
a.主服务器一定要开启二进制日志文件.
b.MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句。主服务器创建一个线程将二进制日志中的内容发送到从服务器。该线程可以识别为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程。从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,是从服务器创建用于读取中继日志并执行日志中包含的更新。
3.主机信息
mysql(主):192.168.96.12
mysql(备):192.168.96.2
4.在主机跟备机上安装mysql
这里使用的是mysql5.5的源码安装.
地址:http://blog.csdn.net/m582445672/article/details/7649999
5.配置主机上的my.cnf文件.
[mysqld]
server-id = 1 # 服务的唯一标识符
log-bin=mysql-bin # 开启二进制日志,默认路径在data/下
binlog_format=mixed # 二进制文件的格式
# 这里有3种格式
# binlog_format=statement 将主库输入的SQL语句,直接写入二进制文件中
# binlog_format=row 将主库修改的行写入二进制文件中
# binlog_format=mixed 以上二种的混合模式
# 在不同二进制格式下,对存储过程,函数,触发器,事件的数据复制可以参考
# 地址:http://blog.csdn.net/m582445672/article/details/7670802
#============下面参数,在本次实验中,不配置========================================
replicate-do-db = test # 需要复制的数据库 (在这个试验中,我不用这个参数)
replicate-ignore-db = mysq # 不需要复制的数据库 (在这个试验中,我不用这个参数)
replicate-ignore-db = information_schema # 不需要复制的数据库 (在这个试验中,我不用这个参数)
# 不使用replicate-do-db,replicate-ignore-db参数就代表全库都复制
# ====================================================================================
启动mysql(主)
6.在主库上面添加一个复制帐号.
GRANT REPLICATION SLAVE on *.* to 'mark'@'%' identified by 'mark' WITH GRANT OPTION;
7.配置备机的my.cnf文件
server-id = 2 # 修改成2.
启动mysql( 备 )
#====下面只做讲解,不包含在本次实验中 ======================================
当然,备机上也能开启二进制文件.但在默认情况下.主库复制过来的数据不会写入备库的二进制文件中.
所以如果想A-->B-->C这样的复制.必须有logs-slave-updates = 1
[mysqld]
log-bin=mysql-bin
binlog_format=mixed
logs-slave-updates = 1
# ======================================================================
8.备机连接主机
a.先查看当前主机二进制的位置
mysql>show master status;
b.在备机上执行命令连接主机
mysql> change master to master_host="192.168.96.12", master_port=3306, master_user="mark", master_password="mark", master_log_file="mysql-bin.000004", master_log_pos=107 , master_connect_retry=10;
c.备机上启动IO线程和SQL线程
mysql>start slave;
d.在备机上查看主从状态
mysql>show slave status\G
9.测试主从复制
在主机上创建一个alex的数据库.
主机:
备机:
到这里,主从配置完成
10.主从复制几个非常重要的文件
a.master.info
用于记录连接到哪个服务器,账号和密码
还有记录复制到主服务器的哪个二进制文件和复制到二进制文件的哪个位置
从服务器的IO线程会先把所有的从主服务复制过来的数据全部都放到relay-log.info里面。
并且记录复制到的位置.IO线程只管复制
其余的行可以去看官方文档,上面有详细的介绍
b.relay-log.info
这个是在从服务器的中续日志,记录了写了多少数据到从服务里面.
./ip_lb-relay-bin.000002 # 中继日志的位置
336 # 复制到哪一行
mysql_bin.000004 #这个中继日志中对应主服务器2进制的log的文件名
190 # 对应的位置
特别注意,这里的如果复制到某一句有错,之后的二进制SQL就不会在继续复制了
这里的mysql_bin.000004 190 会在中继日志中有记录的.
SQL线程读取中序日志里面的信息,由relay-log.info信息记录.
11.从服务器复制信息
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event # IO的线程的状态
Master_Host: 192.168.96.12 # 链接主服务器的IP
Master_User: mark # 主服务器用户名
Master_Port: 3306 # 主服务器密码
Connect_Retry: 10 # 主从断开后,多少秒重新链接
Master_Log_File: mysql-bin.000004 # 从服务器I/O 线程当前读取的主服务器二进制日志文件的名字
Read_Master_Log_Pos: 190 # 从服务器I/O 线程从当前的主服务器二进制日志中读取的位置起点。
Relay_Log_File: ip_lb-relay-bin.000002 # 从服务器SQL 线程当前读取并执行的中继日志文件的名字
Relay_Log_Pos: 336 # 从服务器SQL 线程当前从中继日志中读取执行的位置起点。
Relay_Master_Log_File: mysql-bin.000004 # 从服务器中的SQL进程中正在执行的语句的位置
Slave_IO_Running: Yes # 从服务器的IO线程运行是否开启
Slave_SQL_Running: Yes # 从服务器的SQL线程运行是否开启
Replicate_Do_DB: # 主从复制的数据库名
Replicate_Ignore_DB: # 主从不需要复制的数据库名
Replicate_Do_Table: # 主从复制的表
Replicate_Ignore_Table: # 主从不需要复制的表
Replicate_Wild_Do_Table: # 可以跨库复制的表
Replicate_Wild_Ignore_Table: # 不能跨库复制的表
Last_Errno: 0 # 最后复制的错误号...0表示没有错误
Last_Error: # 最后复制的错误信息
Skip_Counter: 0 # 最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值。(这个值表示跳过多少个事件在来执行SQL)
Exec_Master_Log_Pos: 190 # SQL线程执行到主服务器log-bin文件的位置.如果这个值与Read_Master_Log_Pos一样.则可以证明
Relay_Log_Space: 492 # 所有原有的中继日志结合起来的总大小。
Until_Condition: None # 在START SLAVE语句的UNTIL子句中指定的值
Until_Log_File: # 在START SLAVE语句的UNTIL子句中指定的值
Until_Log_Pos: 0 # 在START SLAVE语句的UNTIL子句中指定的值
Master_SSL_Allowed: No # 这些字段显示了被从属服务器使用的参数。这些参数用于连接主服务器。
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0 # 本字段是从属服务器“落后”多少的一个指示。当从属SQL线程正在运行时(处理更新),
# 本字段为在主服务器上由此线程执行的最近的一个事件的时间标记开始,已经过的秒数。
# 当此线程被从属服务器I/O线程赶上,并进入闲置状态,等待来自I/O线程的更多的事件时,本字段为零。
# 总之,本字段测量从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。
# 如果主服务器和从属服务器之间的网络连接较快,则从属服务器I/O线程会非常接近主服务器,
# 所以本字段能够十分近似地指示,从属服务器SQL线程比主服务器落后多少。
# 如果网络较慢,则这种指示不准确;从属SQL线程经常会赶上读取速度较慢地从属服务器I/O线程,
# 因此,Seconds_Behind_Master经常显示值为0。即使I/O线程落后于主服务器时,也是如此。
# 换句话说,本列只对速度快的网络有用。
# 即使主服务器和从属服务器不具有相同的时钟,时间差计算也会起作用(当从属服务器I/O线程启动时,计算 # 时间差。并假定从此时以后,时间差保持不变)。
# 如果从属SQL线程不运行,或者如果从属服务器I/O线程不运行或未与主服务器连接,
# 则Seconds_Behind_Master为NULL(意义为“未知”)。
# 举例说明,如果在重新连接之前,从属服务器I/O线程休眠了master-connect-retry秒,则显示NULL,
# 因为从属服务器不知道主服务器正在做什么,也不能有把握地说落后多少。
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
mysql 主从复制讲解_mysql主从复制 详解相关推荐
- mysql正则表达式讲解_MySQL 正则表达式详解
MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正 ...
- mysql 流复制_MySQL系列详解六:MySQL主从复制/半同步演示-技术流ken
前言 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器.在 ...
- mysql 实例复制_MySQL 复制详解及简单实例
MySQL 复制详解及简单实例 主从复制技术在MySQL中被广泛使用,主要用于同步一台服务器上的数据至多台从服务器,可以用于实现负载均衡,高可用和故障切换,以及提供备份等等.MySQL支持多种不同的复 ...
- mysql status改变_mysql 配置详解mysql SHOW STATUS 详解
1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程. back_log ...
- mysql配置文件说明_mysql配置文件详解说明
mysql配置文件http://www.doczj.com/doc/ef8ad6026c175f0e7cd1371f.htmlf详解说明 MySQL配置文件http://www.doczj.com/d ...
- mysql怎么约束_MySQL 约束详解
MySQL 约束详解 MySQL 中的约束是用来保证数据的完整性的机制.数据完整性一般有以下三种形式: 实体完整性:保证表中有一个主键. 域完整性:保证数据每列的值满足特定条件. 引用完整性:保证两张 ...
- mysql 主从复制讲解_MySQL主从复制详解
前言: 在MySQL中,主从架构应该是最基础.最常用的一种架构了.后续的读写分离.多活高可用架构等大多都依赖于主从复制.主从复制也是我们学习MySQL过程中必不可少的一部分,关于主从复制的文章有很多, ...
- mysql字符集解释_MySQL字符集详解
一.MySQL字符集编码简单介绍 在使用MySQL时要注意6个需要编码的地方:系统的编码.客户端.服务端.库.表.列.字符集编码不仅影响数据存储,还影响client程序和数据库之间的交互.在mysql ...
- mysql 连接字符集_MySQL字符集详解
一.MySQL字符集编码简单介绍 在使用MySQL时要注意6个需要编码的地方:系统的编码.客户端.服务端.库.表.列.字符集编码不仅影响数据存储,还影响client程序和数据库之间的交互.在mysql ...
最新文章
- redis 运维常用命令
- 大数据为何让传统银行焦虑?
- vue笔记(一)基本使用、数据检测
- 这半年来的飞秋官网磕磕碰碰
- react里面的this_React 为啥要绑定this
- 小米获京东自营安卓平板销量冠军 小米平板5 Pro全版本降100元
- 简述html文件的基本标记组成_HTML是什么呢?
- python gui界面设置数据储存在哪里_Python写GUI
- jquery中has方法
- MATLAB图像处理基础知识1 imhist
- 期货程序化交易接口CTP回测框架的选择
- 如何生成serialVersionUID
- 3DGPS数据图和3D圆轨道图
- java+mysql 基于jsp820志愿者管理系统sql
- css背景图片高斯模糊_CSS3 filter(滤镜) 制作图片高斯模糊无需JS
- 移动通讯技术的发展历史
- ffmpeg分离视频音频流
- AspectJ 学习笔记
- 晚上几点睡觉算熬夜?没有睡够,“白天补觉”有效果?终于知道了
- Camtasia2020视频录制软件的安装及pj顶级屏幕录像视频编辑软件