zoukankan      html  css  js  c++  java
  • MySql 主从复制

    一、环境准备

      系统:CentOS 6.5

      防火墙已关闭:service iptables stop

      MySql:已安装配置MySql 具体方法:MySQL手动安装方法:点击查看

      主从服务器:     

        192.168.244.11 node1 主
        192.168.244.12 node2 从

    二、配置主 从服务器的MySql配置文件

      1、主节点   

    $ vim /etc/my.cnf
    [mysqld]
    #设置不同的id 主节点和从节点的不能一样
    server-id=11
    #启用二进制日志(主节点必须,从节点非必须)
    log-bin=master-bin
    sync_binlog=1
    #注意:下面这个参数需要修改为服务器内存的70%左右
    innodb_buffer_pool_size= 512M
    innodb_flush_log_at_trx_commit=1
    sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
    #设置大小写不敏感
    lower_case_table_names=1
    log_bin_trust_function_creators=1
    #不需要同步的库
    replicate-ignore-db=mysql,information_schema,db3
    #需要记录二进制日志的数据库
    binlog-do-db=db1,db2
    #不需要记录日志的数据库
    binlog-ignore-db=mysql
    #需要同步的数据库
    replicate-do-db=db1
    #默认值3600s
    slave-net-timeout=60
    

      

      2、从节点

    $ vim /etc/my.cnf
    [mysqld]
    #设置不同的id 主节点和从节点的不能一样
    server-id=12
    #启用二进制日志(主节点必须,从节点非必须)
    log-bin=master-bin
    sync_binlog=1
    #注意:下面这个参数需要修改为服务器内存的70%左右
    innodb_buffer_pool_size= 512M
    innodb_flush_log_at_trx_commit=1
    sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
    #设置大小写不敏感
    lower_case_table_names=1
    log_bin_trust_function_creators=1
    #不需要同步的库
    replicate-ignore-db=mysql,information_schema,db3
    #需要记录二进制日志的数据库
    binlog-do-db=db1,db2
    #不需要记录日志的数据库
    binlog-ignore-db=mysql
    #需要同步的数据库
    replicate-do-db=db1
    #默认值3600s
    slave-net-timeout=60
    

      配置完成以后重启两台节点的MySql 

      binlog-do-db=mysql1 #需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可
      binlog-ignore-db=mysql2 #不需要备份的数据库名,如果备份多个数据库,重复设置这 个选项即可
      log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件 里
      slave-skip-errors=1 #是跳过错误,继续执行复制操作(可选)

    三、指定同步位置

      1、首先分别在主节点和从节点上锁定表

    mysql> flush tables with read lock;
    Query OK, 0 rows affected (0.00 sec)
    mysql> show master status ;
    +-------------------+----------+--------------+------------------+
    | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +-------------------+----------+--------------+------------------+
    | master-bin.000001 |      106 | db1          | mysql            |
    +-------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    

      记录在上面查询状态中的File和Position

      2、然后在主节点和从节点上指定同步位置 

    mysql> change master to master_host='192.168.244.11',master_user='root',master_password='111111',master_log_file='master-bin.000
    001',master_log_pos=106;Query OK, 0 rows affected (0.04 sec)
    

      3、解锁主从节点  

    mysql> unlock tables;
    Query OK, 0 rows affected (0.00 sec)
    

      4、启动从节点并查看从节点的状态 

    mysql> start slave;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show slave statusG;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.244.11
                      Master_User: root
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: master-bin.000001
              Read_Master_Log_Pos: 106
                   Relay_Log_File: mysqld-relay-bin.000002
                    Relay_Log_Pos: 252
            Relay_Master_Log_File: master-bin.000001
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: db1
              Replicate_Ignore_DB: mysql,information_schema,db3
    # 如果  Slave_IO_Running 和 Slave_SQL_Running状态都是Yes那说明配置成功了
    

       注:要同步的数据库必须在从节点上存在!

    四、牛刀小试

      在主节点上插入一条数据以后,再到从节点上查看就会发现数据已经同步到了节点从节点上。

    -- 主节点
    mysql> insert into tb_test values(1,'tom');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from tb_test;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | tom  |
    +------+------+
    1 row in set (0.00 sec)
    
    -- 从节点
    mysql> select * from tb_test;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | tom  |
    +------+------+
    1 row in set (0.00 sec)
    

      而没有设置同步的数据库,则没有同步数据。

      

  • 相关阅读:
    分段和分页内存管理
    从文件/文件流的头字节中得到mime信息
    selenium中WebElement.getText()为空解决方法
    29个酷炫的Firefox配置参数
    web automation 常用技术比较
    误判心理学
    区块链+金融,带你直击实践应用中的需求和痛点
    供应链金融平台
    供应链金融的三种模式和四大趋势
    中国的支付清算体系是怎么玩的?
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5893709.html
Copyright © 2011-2022 走看看