新的之间建立复制:

   1. 配置服务器中的配置文件my.cnf,二进制日志文件和服务器ID

      [mysqld]

      log-bin=mysql-bin    ###最好与数据文件分离

      server-id=1

   2. 开启服务器

   3. 建立用于连接服务器的用户    

      CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY '密码';

      GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';

   4. 得到服务器的状态信息

      mysql> flush tables with read lock

      mysql> show master status;

   5. 在服务器上,释放读锁

      mysql> unlock tables;

   6. 配置服务器中的配置文件my.cnf,服务器ID

      [mysqld]

      server-id=2

   7. 开启服务器

   8. 在服务器上设置主配置

      mysql> CHANGE MASTER TO

           -> MASTER_HOST='主服务器IP',

           -> MASTER_USER='用户名',

           -> MASTER_PASSWORD='密码',

           -> MASTER_LOG_FILE='当前的二进制日志文件',

           -> MASTER_LOG_POS=2063;


MySQL使用3个线程进行复制:

  一个在主服务器上

 Binlog dump thread   当从服务器连接主服务器时,主服务器创造了一个线程,发送二进制日志内容到从服务器。使用SHOW PROCESSLIST,可以识别这个线程  

  两个在从服务器上

 Slave I/O thread     当在从服务器上执行START SLAVE时,从服务器创造了这个线程,连接上主服务器,请求主服务器传送更新的二进制日志,然后读取复制到从服务器上面形成中继日志。使用SHOW SLAVE STATUS\G,可以看到Slave_IO_running

 Slave SQL thread     从服务器创造了这个线程,从中继日志里读取执行事件 


问题:slave stop

    set global sql_slave_skip_counter=1

    slave start


主主复制:

      auto-increment-increment   #增长量#

      auto-incremnet-offset     #起始值# 


开启crash-safe功能

                      relay_log_info_repository=TABLE  

                      relay_log_recovery=ON

主上:

        sync_binlog = 1

        innodb_flush_log_at_trx_commit = 1

        innodb_support_xa = 1


如何阻止更新直到跟上:

   1.在主上执行

       mysql> FLUSH TABLES WITH READ LOCK;

        mysql> SHOW MASTER STATUS;

   2.在从上执行

        mysql> SELECT MASTER_POS_WAIT('log_name', log_pos);

    3.在主上执行

           mysql> UNLOCK TABLES;