zoukankan      html  css  js  c++  java
  • MySQL 单向同步复制

    1 . 介绍

    MySQL 支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其

    它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索

    引 以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接

    主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。 从

    服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

    请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你

    必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的

    更新之间的冲突。

    单向复制有利于健壮性、速度和系统管理:

    · 主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到

    从服务器作为份。

    · 通 过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的

    客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负

    荷。但 修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同

    步。如果非更新查询为主,该负载均衡策略很有效,但一般是更新查询。

    · 使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务

    器。在备份过程中主服务器可以继续处理更新。

    MySQL 提供了数据库的同步功能,这对我们实现数据库的冗灾、备份、恢复、负载均

    衡等都是有极大帮助

    2. 环境

    RHEL 6.5

    master   172.25.49.1

    slave   172.25.49.2


    配置安装

    mysql的配置安装 上一篇博客中已经讲述过了

    在server1上 源码编译安装MySQL

    1、将server1上的mysql发送到server2,以下操作在server1上进行。

     scp -r mysql/ root@172.25.23.2:/usr/local/lnmp/

    2、 /etc/init.d/mysqld start         #开启服务

    3mysql -pwestos

    create database test;

    use test

    create table westos ( 

       username varchar(25) not null,

       password varchar(35) not null

       );

    (3)select * from westos;

    (4)insert into westos value('lalalala','654321');

    (5)insert into westos value('wangjing','123456');

    (6) select * from westos;

    (7)show master status;

    (8)desc westos;

    (9) GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO zty@'172.25.49.%' IDENTIFIED BY 'westos';  ##创建同步帐户,并给予权限

    4、 vim /etc/my.cnf

     57 server-id       = 1 #必须为12321之间的一个正整数值

     58 binlog_do_db=test #二进制需要同步的数据库名

     59 binlog_ignore_db=mysql #避免同步 mysql 用户配置,以免不必要的麻烦


    mysql> show master status;
    +------------------+---------  -+--------------+------------------+
    | File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+---------  -+--------------+------------------+
    | mysql-bin.000017  |      107 | test         | mysql            |
    +------------------+----------+--------------+------------------+


     ###########################################################################

    以下操作在server2 上进行。

    1、查看server1mysql用户的ID,在server2上创建。

    groupadd -g 27 mysql

    useradd -u 27 -g  mysql -d /usr/local/lnmp/mysql/data/ -M mysql

    2、将/usr/local/lnmp/mysql/下目录用户组改为mysql

    chgrp mysql * -R

    chown mysql data/ -R

    3、 cd support-files/

    cp my-medium.cnf /etc/my.cnf

    cp mysql.server /etc/init.d/mysqld

    4vim /root/.bash_profile 

      PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin

     #添加环境变量

       source /root/.bash_profile

    5、 vim /etc/my.cnf

     57 server-id       = 2   ###每台服务器的id不能相同,从服务器 ID ,不要和主 ID 相同,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id,必须与主服务器的以及其  它从服务器的不相同。可以认为server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实例。

    mysql -pwestos                     #登陆数据库


    mysql> change master to master_host='172.25.49.1',master_user='zty',master_password='westos',master_log_file='mysql-bin.000017',master_log_pos=107;


    mysql> slave start

    mysql> show slave statusG                                                     *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 172.25.49.1
                      Master_User: zty
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000017
              Read_Master_Log_Pos: 107
                   Relay_Log_File: server2-relay-bin.000002
                    Relay_Log_Pos: 253
            Relay_Master_Log_File: mysql-bin.000017
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes                  #当出现两个yes时 说明配置成功

                  Replicate_Do_DB:
              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: 107
                  Relay_Log_Space: 411
                  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
    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





















  • 相关阅读:
    实践 Agile Web Development 4th edition 时碰到的问题汇总
    [AWDwR4] Iteration F4
    [AWDwR4] Getting AJAX to work in Rails 3 with jQuery
    [翻译]理解C#对象生命周期
    c# asp.net 正则表达式(12)
    Application对象 简单的聊天室(16)
    c# response输出文件实例(14)
    c# asp.net fileupload实例(10)
    c# asp.net 获取客户端表单的数据(15)
    c# Request对象(13)
  • 原文地址:https://www.cnblogs.com/aallenn/p/6700647.html
Copyright © 2011-2022 走看看