`
no7beckham
  • 浏览: 97218 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL Master/Slave Server 架設

阅读更多
MySQL 提供 Master/Slave 機制讓您輕易的完成多個 MySQL Server 之間的資料同步,有了多個資料同步的 MySQL Server 在管理上會較有彈性,例如你可以建置備援主機或是進行負載平衡等等。但是要注意:一台 Master Server 可以擁有很多台 Slave Server;但一台 Slave Server 只可對應到一台 Master Server。

架設步驟:

    [事前準備]

       1. 確保 Master 與 Slave 之間的資料一致


    [Master Server 方面]

       1. 設定 Server-id
       2. 開啟 Binary Log
       3. 設定 Replication Slave 權限


    [Slave Server 方面]

       1. 設定 Server-id
       2. 將 Master_Host 設定為 Master Server
       3. 啟動與檢查 Slave Server 的狀態



在此範例中我們假設:

    [Master Server]

       1. IP 為 192.168.1.1
       2. server-id 為 1
       3. 進行資料同步時所使用的帳號資訊:
          帳號: slave_server
          密碼: 12345678


    [Slave Server]

       1. IP 為 192.168.1.2
       2. server-id 為 2



Master/Slave Server 架設

一、Master Server 方面


    A.設定 Server-id
    首先要設定 server-id。基本上沒有什麼特別的限制,只要 Master 和 Slave 的 server-id 不一樣即可,但其值必需為 1 至 2^32-1 之間。但為了方便識別,通常我們會把這個值設定為 IP 的最後一組數字,例如若 IP 為 192.168.1.1,則 server-id 設定為 1;若 IP 為 192.168.1.2,則 server-id 設定為 2。
    [mysqld]
    server-id=1


    B.開啟 Binary Log

        修改 MySQL Server 的系統設定檔,在 [mysqld] 下方加上 log-bin=mysql-bin,例如:
引用

        [mysqld]
        log-bin=mysql-bin

        MySQL 的 Binary Log 會將所有對於資料庫的修改操作全部記錄起來,而 Slave 與 Master 之間進行資料同步的方式很簡單,就是 Slave 會把 Master Server 的 Binary Log 拿過來執行,也就是說 Slave Server 會 "重做" 在 Master Server 上發生的各種修改操作。因此 Master Server 勿必要開啟 Binary Log 功能,否則 Master/Slave 架構無法運作。


    C.設定 Replication Slave 權限

        我們必須要在 Master Server 上做設定,讓 Slave 具有可以從 Master Server 上 Copy 資料的權限(正式的說法為 Replication Slave Priviledges),所需使用的指令如下:
        GRANT REPLICATION SLAVE ON *.* TO 'slave_server'@'192.168.1.2',IDENTIFIED BY '12345678'

        意思為:

           1. 允許 192.168.1.2 這個 IP 使用 slave_server 帳號,來進行資料同步(Replication)。
           2. slave_server 這個帳號的密碼為 12345678。


        此時您可以從 Slave Server(192.168.1.2) 使用 mysql client program 進行驗證,看是否有正確的開啟權限,例如使用以下的指令:(注意,是在 Slave Server 上進行驗證)
引用
       
        mysql -h 192.168.1.1 -u slave_server -p

        接著系統會要求您輸入密碼,若可以順利登入即表示設定成功。



二、Slave Server 方面


    A.設定 Server-id

        在 Slave 我們將其設定為 2:
引用

        [mysqld]
        server-id=2


    B.將 Master_Host 設定為 Master Server

        我們必須要明確的告訴 Slave Server 哪一台 Server 才是 Master Server,使用以下的指令即可:
        引用:
        CHANGE MASTER TO MASTER_HOST='192.168.1.1',
        MASTER_PORT=3306, MASTER_USER='slave_server',
        MASTER_PASSWORD='12345678';

        意思為:

           1. Master Server 是 192.168.1.1
           2. 使用 TCP Port 3306 連接
           3. 使用 slave_server 這個帳號登入
           4. 登入時使用的密碼為 12345678


    C.啟動與檢查 Slave Server 的狀態

        設定好後,Master/Slave 機制仍未啟動,您必須要使用以下的指令來開啟或關閉 Master/Slave 機制:

           1. START slave; (啟動 Master/Slave 機制)
           2. STOP slave; (停止 Master/Slave 機制)


        當你執行 'START slave;' 後,可使用以下的指令來檢查執行狀態:
        引用:
        SHOW SLAVE STATUS \G
        執行後應該會看到如下的報表:
引用

        mysql> SHOW SLAVE STATUS \G
        *************************** 1. row ***************************
        Slave_IO_State: Waiting for master to send event
        Master_Host: 192.168.1.1
        Master_User: slave_server
        Master_Port: 3306
        Connect_Retry: 60
        Master_Log_File: mysql-bin.000019
        Read_Master_Log_Pos: 16492717
        Relay_Log_File: www-relay-bin.000018
        Relay_Log_Pos: 16492854
        Relay_Master_Log_File: mysql-bin.000019
        Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
        Replicate_Do_DB: example
        Replicate_Ignore_DB:
        Replicate_Do_Table:
        Replicate_Ignore_Table:
        Replicate_Wild_Do_Table:
        Replicate_Wild_Ignore_Table:
        Last_Errno: 0
        Last_Error:
        Skip_Counter: 0
        Exec_Master_Log_Pos: 16492717
        Relay_Log_Space: 16492854
        Until_Condition: None
        Until_Log_File:
        Until_Log_Pos: 0
        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
        1 row in set (0.00 sec)

        重點是紅色那三行:

        Slave_IO_Running:
        是否要從 Master Server 複製 Binary Log 資料,必須為 Yes。

        Slave_SQL_Running:
        是否要執行從 Master Server 複製過來的 Binary Log 資料,必須為 Yes。

        Seconds_Behind_Master:
        Slave 的資料落後了 Master 多少秒,執行一段時間後應該會是零。



Master/Slave 的應用

vbulletin 原本即內建支援多台 MySQL Server 之間的負載平衡,只要你事先建立好 MySQL Master/Slave Server,並在 Slave Server 開放 Master Server 的權限,接下來只要在 vbb 的設定檔中做一些簡單的修改即可。

一、在 Master Server 方面


    在此我們假設 Master 使用以下的帳號資訊登入 slave:

        帳號: vbb_user
        密碼: 12345678

    修改 vbb 的系統設定檔:
引用
   
    $config['Database']['dbtype'] = 'mysql_slave';
    $config['SlaveServer']['servername'] = '192.168.1.2';
    $config['SlaveServer']['port'] = 3306;
    $config['SlaveServer']['username'] = 'vbb_user';
    $config['SlaveServer']['password'] = '12345678';



二、在 Slave Server 方面


    記得要開啟 Master 的權限:
    GRANT ALL ON example.* to 'vbb_user'@'192.168.1.1',
    IDENTIFIED BY '12345678';

    然後再使用以下的指令確認是否正常運作:
引用

    SHOW FULL PROCESSLIST;
分享到:
评论

相关推荐

    mysql master/slave介绍及配置

    Master-Slave的数据库机构解决了很多问题,特别是read/write比较高的web2.0应用: 1、写操作全部在Master结点执行,并由Slave数据库结点定时(默认60s)读取Master的bin-log 2、将众多的用户读请求分散到更多的...

    ActiveMQ Master/Slave 主从配置

    ActiveMQ支持多种高可用的主从配置模式,包括Shared File System Master/Slave、JDBC Master/Slave和Replicated LevelDB Store。文章主要介绍了使用JDBC Master/Slave模式来实现ActiveMQ的高可用配置。 在JDBC ...

    Modbus-Master-Slave-for-Arduino-master.zip_Master/Slave_arduino

    标题中的"Modbus-Master-Slave-for-Arduino-master.zip_Master/Slave_arduino"指出这是一个关于Arduino平台的Modbus主从通信库。Modbus是一种广泛使用的工业通信协议,允许不同设备之间交换数据,尤其在自动化系统中...

    Mysql-master-slave.rar_Master/Slave_slave mysql

    MySQL的主从复制是数据库高可用性和数据冗余的一种常见实现方式,它允许数据从一个服务器(主服务器)同步到一个或多个其他服务器(从服务器)。这种架构在处理大量读取操作、提供故障切换能力以及分布式系统中尤其...

    Master_Slave_步进电机_Master/Slave_stm32步进电机_stm32步进电机_

    标题中的“Master_Slave_步进电机_Master/Slave_stm32步进电机_stm32步进电机_”表明我们将讨论一个基于STM32微控制器的步进电机控制系统,其中采用主从(Master/Slave)架构。在这个系统中,主控制器(Master)负责...

    wb_master.zip_Master/Slave_wbmaster_wishbone

    本压缩包文件"wb_master.zip_Master/Slave_wbmaster_wishbone"提供了实现Wishbone主设备(Master)的接口,以便与Wishbone从设备(Slave)进行通信,并且包含了时钟模块,这对于数字电路设计至关重要。 标题"wb_...

    mater_slave_inter.gz_Master/Slave

    在电子和计算机通信领域,主从结构(Master/Slave)是一种常见的通信模式,尤其是在I2C(Inter-Integrated Circuit)总线协议中。标题“mater_slave_inter.gz_Master/Slave”暗示了我们即将讨论的内容与I2C主从通信...

    64143308_LOGO_Set9_Master_Slave_CODE_v21_Master/Slave_siemens_

    8配合主/从(Master/Slave)通信模式构建智能楼宇控制系统,这主要基于"64143308_LOGO_Set9_Master_Slave_CODE_v21_Master/Slave_siemens_"项目。 LOGO! 8系统以其紧凑的尺寸、易于编程和强大的功能而受到赞誉。在...

    Master_Slave_Interrupt.rar_Master/Slave

    在本资源"Master_Slave_Interrupt.rar_Master/Slave"中,我们聚焦于ARM Keil开发环境下的I2C外设使用,特别是主-从模式的中断处理。 ARM Keil是ARM公司提供的一种集成开发环境(IDE),支持多种基于ARM架构的微控制...

    Master_slave_multi_machine.rar_Master-slave_Master/Slave_multi m

    标题“Master_slave_multi_machine.rar_Master-slave_Master/Slave_multi m”暗示了我们正在讨论的焦点是关于主从结构在多机器环境中的应用。 描述“主从多机通信系统问题研究建模及其实性研究”表明我们将深入探讨...

    PWM.rar_ATMEGA 8 PWM_Master/Slave

    在ATMEGA 8 PWM_Master/Slave配置中,我们探讨的是如何设置该微控制器作为PWM主从系统的中心单元。 PWM的工作原理是通过调整脉冲宽度来改变信号的平均功率,从而实现对负载的模拟控制。在ATMEGA 8中,PWM功能由硬件...

    MASTERv1-20200914T103502Z-001_Master/Slave_arduino_

    【标题】"MASTERv1-20200914T103502Z-001_Master/Slave_arduino_" 提供的是一个关于 Arduino 的主从(Master/Slave)项目,时间戳表明这个版本创建于2020年9月14日。在 Arduino 的上下文中,主从架构常用于多设备...

    GPIF_EXAMPLE1.zip_Master/Slave_cypress GPIF_gpif

    在 Cypress GPIF_EXAMPLE1.zip 文件中,我们可以找到一个关于 Master/Slave 模式的具体设计实例,这对于初学者了解和掌握 GPIF 的工作原理及应用具有很高的参考价值。 GPIF 是 Cypress 的 PSoC(Programmable ...

    tvip-axi-master_Master/Slave_axivip_tvip_vip_AMBA_

    在本项目“tvip-axi-master_Master/Slave_axivip_tvip_vip_AMBA”中,我们主要探讨的是与AXI协议相关的VIP(Verification Intellectual Property)组件,包括Master和Slave端。 VIP是验证IP的核心组件,用于在系统...

    Auto-Mode.rar_Master/Slave_gpif master

    "Auto-Mode.rar_Master/Slave_gpif master" 文件压缩包提供的是 Cypress GPIF 的配置代码,专门针对自动模式以及主从模式进行了优化。下面我们将详细探讨 GPIF、自动模式以及主从模式的相关知识点。 1. GPIF 概述:...

    i2s_master_slave_vhdl.rar_I2S vhdl_Master/Slave_i2s slave_verilo

    在这个“i2s_master_slave_vhdl.rar”压缩包中,包含的是用VHDL语言实现的I2S主从模式的代码,同时也有一个Verilog版本的I2S slave模块,这对于理解和设计嵌入式音频系统非常有帮助。 首先,我们要理解I2S总线的...

    master_slave_tx_rx_code-master.zip_Master/Slave

    在这个名为"master_slave_tx_rx_code-master.zip_Master/Slave"的压缩包中,我们很显然会找到与CC2500相关的主(Master)从(Slave)模式的传输和接收代码。这种通信模式是许多无线网络协议的基础,如I2C、SPI和UART...

    Modbus_Master_slave_STM32modrtu主从站_modbusRTU_modbus_Master/Slave

    《Modbus_Master_slave_STM32modrtu主从站_modbusRTU_modbus_Master/Slave》 在工业自动化领域,Modbus协议是广泛应用的一种通信协议,尤其在嵌入式系统如STM32微控制器中,它扮演着重要的角色。本资源主要涵盖STM...

    I2C_control.zip_I2C slave_I2C_control_Master/Slave_i2c slave_vh

    标题"I2C_control.zip_I2C slave_I2C_control_Master/Slave_i2c slave_vh"揭示了这个压缩包内容是关于I2C协议的,其中包含了主设备和从设备的实现,特别提到了`i2c slave_vh`,这可能是一个用VHDL编写的I2C从设备的...

Global site tag (gtag.js) - Google Analytics