08 May 2015

版本:mysql5.6 os:centos6.5 主服务器:(192.168.1.1),从服务器:(192.168.1.2)

图1

配置主服务器

  • 修改/etc/my.cnf文件

  • 在[mysqld]下面增加:

      server-id=1
      log-bin=mysqlmaster-bin.log
      sync_binlog=1
      innodb_buffer_pool_size=8192M #建议配置为内存的70%
      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
      read-only=0
      binlog-do-db=dbname #要同步的数据库,可以配置多个
      binlog-do-db=dbname2
    
  • 重启mysql服务:

      sudo /etc/init.d/mysqld restart
    

##配置从服务器

  • 修改/etc/my.cnf文件 在[mysqld]下面增加:

        server-id=2
        log-bin=mysqlslave-bin.log
        sync_binlog=1
        innodb_buffer_pool_size=8096M  #建议配置为内存的70%
        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
    
  • 重启mysql服务:

       sudo /etc/init.d/mysqld restart
    
  • 主数据库上增加从数据库账户

  • 登录数据库,执行:

      mysql> GRANT REPLICATION SLAVE ON . to ‘username’@’192.168.1.2’ identified by ‘password’;  -锁表(禁止再插入数据以获取主数据库的的二进制日志坐标): 
    

    FLUSH TABLES WITH READ LOCK;

    获取主数据库二进制日志状态:

    mysql> SHOW MASTER STATUS \G;
    *************************** 1. row ***************************
    File: mysqlmaster-bin.000001
    Position: 336
    Binlog_Do_DB: td
    Binlog_Ignore_DB: 
    Executed_Gtid_Set: 
    1 row in set (0.00 sec)
    
  • 在从数据库服务器中导出主数据库的数据库数据:

      mysqldump -uroot -peasecredit2015 -h192.168.1.1  --all-databases  --triggers --routines --events >all.sql
    

-然后导入到 从数据库自己的数据库中:

    mysql -uroot -peasecredit2015 <all.sql
  • 给从数据库设置复制的主数据库信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值)

      mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.1',MASTER_USER='username',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysqlmaster-bin.000001',MASTER_LOG_POS=336;
    
  • 在从服务器:启动从数据库的复制线程

        mysql> START slave;
    
  • 接着查询数据库的slave状态:

        mysql> SHOW slave STATUS \G
    
  • 如果下面两个参数都是Yes,则说明主从配置成功!

        Slave_IO_Running: Yes        
        Slave_SQL_Running: Yes
    

##测试

  • 在主数据库上创建一个test表,并插入数据,查看从服务器也有更新即可。




Fork me on GitHub