zoukankan      html  css  js  c++  java
  • 基于 CentOS Mysql 安装与主从同步配置详解

    CentOS Mysql 安装
    Mysql (Master/Slave) 主从同步

    1、为什么要使用主从同步

    1.如果主服务器出现问题,可以快速切换到从服务器提供的服务
    2.可以在从服务器上执行查询操作,降低主服务器的访问压力
    3.可以在从服务器上执行备份,以避免备份期间影响主服务器的服务

    注意:一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询,实时性要求高的数据仍然需要从主服务器获得。

    Window 数据库主从(Master/Slave)同步安装与配置详解

    2、 CentOS安装Mysql 5.7.19

    Centos7.3 安装Mysql并修改初始密码

    Window 安装Mysql并修改初始密码

    3、测试环境

    我这里使用parallels desktop 虚拟机安装的Centos操作系统
    数据库版本: 5.7.19
    主机A:10.211.55.3(Master)
    主机B:10.211.55.4(Slave)

    service mysqld stop #停止数据库
    service mysqld start #启动数据库 
    service mysqld restart #重启数据库
    

    系统信息

    4、配置主服务器Master

    4.1 给从服务器设置授权用户(创建复制帐号)

    建立一个帐户javen,并且只能允许从 10.211.55.4 这个地址上来登陆,密码是123456。

    mysql> grant replication slave on *.* to 'javen'@'10.211.55.4' identified by '123456';
    mysql> flush privileges;
    

    4.2 主服务器Master配置

    etc/my.cnf[mysqld]下添加如下内容

    port=3306
     #[必须]启用二进制日志
    binlog-ignore-db=mysql 
    #[必须]服务器唯一ID,默认是1
    server-id= 1
    #只保留7天的二进制日志,以防磁盘被日志占满
    expire-logs-days  = 7 
    #不备份的数据库
    binlog-ignore-db=information_schema
    binlog-ignore-db=performation_schema
    binlog-ignore-db=sys
    binlog-ignore-db=gogs
    

    4.3 重启MySQL服务并设置读取锁定

    service mysqld restart
    

    在主服务器上设置读取锁定有效,确保没有数据库操作,以便获得一个一致性的快照

    mysql -u root -proot -P3306
    mysql> flush tables with read lock;
    

    4.4 查看主服务器上当前的二进制日志名和偏移量值

    mysql> show master status;
    +------------------+----------+--------------+-------------------------------------------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                      | Executed_Gtid_Set |
    +------------------+----------+--------------+-------------------------------------------------------+-------------------+
    | mysql-bin.000001 |      154 |              | mysql,information_schema,performation_schema,sys,gogs |                   |
    +------------------+----------+--------------+-------------------------------------------------------+-------------------+
    1 row in set (0.00 sec)
    

    这里的 File 、Position 是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。

    另外:如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf 没配置对。

    5、配置从服务器Slave

    5.1 修改从数据库的配置

    修改之后完整的配置如下:

    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
    
    [mysqld]
    #
    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M
    #
    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin
    #
    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    
    ##以下是添加的内容
    
    log-bin=mysql-bin
    server-id=3
    binlog-ignore-db  = mysql
    binlog-ignore-db  = information_schema
    binlog-ignore-db  = performation_schema
    binlog-ignore-db  = sys
    log-slave-updates
    slave-skip-errors=all
    slave-net-timeout=60
    
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    

    5.2 重启从数据库并设置Slave数据库

    service mysqld restart
    

    登录从数据库并做如下设置

    mysql> stop slave;  #关闭Slave
    mysql> change master to master_host='10.211.55.3',master_user='javen',master_password='123456',master_log_file='mysql-bin.000001', master_log_pos= 154;
    mysql> start slave;  #开启Slave
    

    注意:在这里指定Master的信息,master_log_file是在配置Master的时候的File选项, master_log_pos是在配置Master的Position 选项,这里要进行对应。

    5.3 查看Slave配置的信息

    mysql> show slave status G;
    *************************** 1. row ***************************
                   Slave_IO_State:
                      Master_Host: 10.211.55.3
                      Master_User: javen
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 154
                   Relay_Log_File: centos-linux-2-relay-bin.000001
                    Relay_Log_Pos: 4
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: No
                Slave_SQL_Running: No
                  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: 154
                  Relay_Log_Space: 154
                  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: 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: 0
                      Master_UUID:
                 Master_Info_File: /var/lib/mysql/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State:
               Master_Retry_Count: 86400
                      Master_Bind:
          Last_IO_Error_Timestamp:
         Last_SQL_Error_Timestamp:
                   Master_SSL_Crl:
               Master_SSL_Crlpath:
               Retrieved_Gtid_Set:
                Executed_Gtid_Set:
                    Auto_Position: 0
             Replicate_Rewrite_DB:
                     Channel_Name:
               Master_TLS_Version:
    1 row in set (0.00 sec)
    
    ERROR:
    No query specified
    
    mysql> unlock tables;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql>  start slave;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql>
    

    6、关闭掉主数据库的读取锁定

    mysql> unlock tables;
    

    7、在主数据库中创建一个表以及添加数据测试

    主库

    从库

  • 相关阅读:
    核新同花顺数据结构
    python发送各类邮件的主要方法
    Tesseract-OCR引擎 入门
    ruby函数回调的实现方法
    软件单元测试之我见
    cocos cteator中tiled模式 用图集容易出线
    入坑CCC遇到的一些坑啊
    关于委托的理解
    火狐浏览器的三个坑
    抗锯齿的BUG
  • 原文地址:https://www.cnblogs.com/zyw-205520/p/7349663.html
Copyright © 2011-2022 走看看