0

0

MySQL5.5 主从复制

php中文网

php中文网

发布时间:2016-06-07 15:34:07

|

1174人浏览过

|

来源于php中文网

原创

转 http://blog.csdn.net/m582445672/article/details/7731565 操作系统环境:centos5.5 1.MySQL 主从流程图 2.MySQL 主从说明 a.主服务器一定要开启二进制日志文件. b. MySQL 使用 3 个线程来执行复制功能 ( 其中 1 个在主服务器上,另两个在从服务器上。当

转 http://blog.csdn.net/m582445672/article/details/7731565

操作系统环境:centos5.5

1.MySQL 主从流程图

MySQL5.5 主从复制


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的源码安装.

   具体安装过程请查看《CentOS5.5下源码安装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             以上二种的混合模式

                                            # 在不同二进制格式下,对存储过程,函数,触发器,事件的数据复制可以参考

                                            《mysql5.5 主从复制 (触发器,函数,存储引擎,事件处理)说明

                                            # 地址: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参数就代表全库都复制

 # ====================================================================================

   MySQL5.5 主从复制

   启动mysql(主)

  
 6.在主库上面添加一个复制帐号.

   GRANT REPLICATION SLAVE on *.* to 'mark'@'%' identified by 'mark' WITH GRANT OPTION;

   MySQL5.5 主从复制


7.配置备机的my.cnf文件

ChatX翻译
ChatX翻译

最实用、可靠的社交类实时翻译工具。 支持全球主流的20+款社交软件的聊天应用,全球200+语言随意切换。 让您彻底告别复制粘贴的翻译模式,与世界各地高效连接!

下载

   server-id  =  2       # 修改成2.

   MySQL5.5 主从复制

   启动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;

      MySQL5.5 主从复制

  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; 

    MySQL5.5 主从复制
 

 c.备机上启动IO线程和SQL线程

     mysql>start slave;

 d.在备机上查看主从状态

    mysql>show slave status\G

    MySQL5.5 主从复制


9.测试主从复制

   在主机上创建一个alex的数据库.

   主机:

   MySQL5.5 主从复制

   备机:

   MySQL5.5 主从复制

   到这里,主从配置完成


10.主从复制几个非常重要的文件

    a.master.info

       用于记录连接到哪个服务器,账号和密码
       还有记录复制到主服务器的哪个二进制文件和复制到二进制文件的哪个位置
       从服务器的IO线程会先把所有的从主服务复制过来的数据全部都放到relay-log.info里面。
       并且记录复制到的位置.IO线程只管复制

      MySQL5.5 主从复制

      其余的行可以去看官方文档,上面有详细的介绍

    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信息记录.

     MySQL5.5 主从复制

11.从服务器复制信息

mysql> show slave status\G

[plain] view plaincopyprint?

  1. *************************** 1. row ***************************  
  2.                Slave_IO_State: Waiting for master to send event   # IO的线程的状态  
  3.                   Master_Host: 192.168.96.12   # 链接主服务器的IP  
  4.                   Master_User: mark    # 主服务器用户名  
  5.                   Master_Port: 3306   # 主服务器密码  
  6.                 Connect_Retry: 10     # 主从断开后,多少秒重新链接  
  7.               Master_Log_File: mysql-bin.000004  # 从服务器I/O 线程当前读取的主服务器二进制日志文件的名字  
  8.           Read_Master_Log_Pos: 190    # 从服务器I/O 线程从当前的主服务器二进制日志中读取的位置起点。  
  9.                Relay_Log_File: ip_lb-relay-bin.000002   # 从服务器SQL 线程当前读取并执行的中继日志文件的名字  
  10.                 Relay_Log_Pos: 336       # 从服务器SQL 线程当前从中继日志中读取执行的位置起点。  
  11.         Relay_Master_Log_File: mysql-bin.000004    # 从服务器中的SQL进程中正在执行的语句的位置  
  12.              Slave_IO_Running: Yes     # 从服务器的IO线程运行是否开启  
  13.             Slave_SQL_Running: Yes    # 从服务器的SQL线程运行是否开启  
  14.               Replicate_Do_DB:    # 主从复制的数据库名  
  15.           Replicate_Ignore_DB:   #  主从不需要复制的数据库名  
  16.            Replicate_Do_Table:     # 主从复制的表           
  17.        Replicate_Ignore_Table:     # 主从不需要复制的表  
  18.       Replicate_Wild_Do_Table:   # 可以跨库复制的表  
  19.   Replicate_Wild_Ignore_Table:   # 不能跨库复制的表  
  20.                    Last_Errno: 0    # 最后复制的错误号...0表示没有错误  
  21.                    Last_Error:        # 最后复制的错误信息  
  22.                  Skip_Counter: 0    # 最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值。(这个值表示跳过多少个事件在来执行SQL)  
  23.           Exec_Master_Log_Pos: 190    # SQL线程执行到主服务器log-bin文件的位置.如果这个值与Read_Master_Log_Pos一样.则可以证明    
  24.               Relay_Log_Space: 492       # 所有原有的中继日志结合起来的总大小。  
  25.               Until_Condition: None      # 在START SLAVE语句的UNTIL子句中指定的值  
  26.                Until_Log_File:                 # 在START SLAVE语句的UNTIL子句中指定的值  
  27.                 Until_Log_Pos: 0             # 在START SLAVE语句的UNTIL子句中指定的值  
  28.            Master_SSL_Allowed: No    # 这些字段显示了被从属服务器使用的参数。这些参数用于连接主服务器。  
  29.            Master_SSL_CA_File:   
  30.            Master_SSL_CA_Path:   
  31.               Master_SSL_Cert:   
  32.             Master_SSL_Cipher:   
  33.                Master_SSL_Key:   
  34.         Seconds_Behind_Master: 0    # 本字段是从属服务器“落后”多少的一个指示。当从属SQL线程正在运行时(处理更新),  
  35.                                                        # 本字段为在主服务器上由此线程执行的最近的一个事件的时间标记开始,已经过的秒数。  
  36.                                                       # 当此线程被从属服务器I/O线程赶上,并进入闲置状态,等待来自I/O线程的更多的事件时,本字段为零。  
  37.                                                       # 总之,本字段测量从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。  
  38.                                                       # 如果主服务器和从属服务器之间的网络连接较快,则从属服务器I/O线程会非常接近主服务器,  
  39.                                                      # 所以本字段能够十分近似地指示,从属服务器SQL线程比主服务器落后多少。  
  40.                                                     # 如果网络较慢,则这种指示不准确;从属SQL线程经常会赶上读取速度较慢地从属服务器I/O线程,  
  41.                                                     # 因此,Seconds_Behind_Master经常显示值为0。即使I/O线程落后于主服务器时,也是如此。  
  42.                                                     # 换句话说,本列只对速度快的网络有用。  
  43.                                                    # 即使主服务器和从属服务器不具有相同的时钟,时间差计算也会起作用(当从属服务器I/O线程启动时,计算                                                                        # 时间差。并假定从此时以后,时间差保持不变)。  
  44.                                                    # 如果从属SQL线程不运行,或者如果从属服务器I/O线程不运行或未与主服务器连接,  
  45.                                                    # 则Seconds_Behind_Master为NULL(意义为“未知”)。  
  46.                                                    # 举例说明,如果在重新连接之前,从属服务器I/O线程休眠了master-connect-retry秒,则显示NULL,  
  47.                                                    # 因为从属服务器不知道主服务器正在做什么,也不能有把握地说落后多少。  
  48. Master_SSL_Verify_Server_Cert: No  
  49.                 Last_IO_Errno: 0  
  50.                 Last_IO_Error:   
  51.                Last_SQL_Errno: 0  
  52.                Last_SQL_Error:   
  53.   Replicate_Ignore_Server_Ids:   
  54.              Master_Server_Id: 1  
  55. 1 row in set (0.00 sec)  
*************************** 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)


 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

12

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

4

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

18

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

CSS3 教程
CSS3 教程

共18课时 | 5万人学习

Vue 教程
Vue 教程

共42课时 | 7.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号