zoukankan      html  css  js  c++  java
  • mysql主从复制配置

    我这里用两台服务器,一个Linux、一个mac使用docker容器搭建的mysql 进行演示,IP分别是15(Master)【端口为3307】,222(Slave)【端口为3308】

    注意:配置时,根据自己对应的端口进行配置,一般情况下,安装的默认都是3306端口,自行修改即可。 

    备注(mysql允许外部访问):

    mysql -u root -p 
    #选择基础信息数据库
    use mysql;
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码';
    #清除缓存,重新加载权限
    flush privileges;

    Master配置

    使用命令行进入mysql:

    mysql -u root -p

    接着输入root用户的密码(密码忘记的话就网上查一下重置密码吧~),然后创建用户:

    //192.168.22.222是slave从机的IP
    GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.22.222' identified by 'xiong@xiong';
     

    创建的这两个用户在配置slave从机时要用到。

    接下来在找到mysql的配置文件/etc/my.cnf,增加以下配置:

    # 开启binlog
    log-bin=mysql-bin
    server-id=104
    # 需要同步的数据库,如果不配置则同步全部数据库
    binlog-do-db=test_db
    # binlog日志保留的天数,清除超过10天的日志
    # 防止日志文件过大,导致磁盘空间不足
    expire-logs-days=10 

    譬如:

    配置完成后,重启mysql:

    service mysql restart

    然后继续进入mysql命令行执行:show master statusG;

    Slave配置

    Slave配置相对简单一点。从机肯定也是一台MySQL服务器,所以和Master一样,找到/etc/my.cnf配置文件,因为我这边是使用的docker的mysql搭建的服务,所以步骤如下:

    # 因为我本机docker的端口已经被占用,所以设置成了3308
    docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=xiong --privileged=true --name  slave mysql:5.6
    
    # 进入容器
    docker exec -ti slave /bin/bash

    # 修改my.cnf
    vim /etc/mysql/my.cnf

    配置以下信息:
    [mysqld]
    log-bin=mysql-bin
    server-id=3308
    expire-logs-days=10

     然后继续配置:

    CHANGE MASTER TO 
    MASTER_HOST='192.168.22.15',//主机IP
    MASTER_USER='root',//之前创建的用户账号
    MASTER_PASSWORD='xiong@xiong',//之前创建的用户密码
    MASTER_LOG_FILE='mysql-bin.000004',//master主机的binlog日志名称
    MASTER_LOG_POS=862,//binlog日志偏移量
    master_port=3307;//端口

    设置完之后需要启动:

    # 启动slave服务
    start slave;

    然后继续执行:

    show slave statusG;

    成功效果:

    mysql> show slave status G;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.22.15
                      Master_User: root
                      Master_Port: 3307
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 154
                   Relay_Log_File: mysqld-relay-bin.000003
                    Relay_Log_Pos: 333
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: Yes
                Slave_SQL_Running: 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: 154
                  Relay_Log_Space: 507
                  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: 232
                      Master_UUID: cba2fada-f0e7-11ea-9fae-00cfe04ae3a4
                 Master_Info_File: /var/lib/mysql/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
               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
    1 row in set (0.00 sec)

    如果出现以下问题:

    提示错误:Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file

    解决方法:https://blog.csdn.net/mameng1988/article/details/84142859

    测试主从复制

    在master主机执行sql:

    slave:

  • 相关阅读:
    新闻发布项目——后台JSP界面adminManage/addNews.jsp
    新闻发布项目——后台JSP界面adminManage/addNews.jsp
    新闻发布项目——后台JSP界面adminManage/addNews.jsp
    新闻发布项目——后台JSP界面adminManage/adminIndex.jsp
    新闻发布项目——后台JSP界面adminManage/adminIndex.jsp
    新闻发布项目——后台JSP界面adminManage/editNews.jsp
    新闻发布项目——后台JSP界面adminManage/editNews.jsp
    新闻发布项目——后台JSP界面adminManage/adminIndex.jsp
    新闻发布项目——后台JSP界面adminManage/editNews.jsp
    新闻发布项目——后台JSP界面adminManage/manageTopic.jsp
  • 原文地址:https://www.cnblogs.com/todarcy/p/14668063.html
Copyright © 2011-2022 走看看