MySQL高级--主从复制

  1. 主从复制的基本原理:
    • slave会从master读取binlog来进行数据同步
    • 三步骤+原理图:
      • MySQL高级--主从复制
      • MySQL复制过程分成三步:

        1.  master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;

        2.  slave将master的binary log events拷贝到它的中继日志(relay log) ;

        3.  slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是 异步的且串行化的    

  2. 复制的基本原则
    • 每个slave只有一个master
    • 每个slave只能有一一个唯一的服务器ID+日复制的基本原则
    • 每个master可以有多个salve  
  3. 复制的最大问题
    • 延时  
  4. 一主一从常见配置
    1. mysql版本一致且后台以服务运行
      • 主机从机能够相互ping 通
      • 主机ip:172.29.95.254
      • 从机ip:192.168.56.130
      • MySQL高级--主从复制
      •   MySQL高级--主从复制 

    2. 主从都配置在【mysqld】节点下,都是小写
      • MySQL高级--主从复制
           
    3. 主机修改my.ini配置文件
      1. 主服务器唯一ID(必选):
        • server-id=1
      2. 启动二进制日志(必选):
        •  log-bin=自己的本地的路径/mysqlbin
        • log-bin=D:/qq/mysql/mysql-5.5.28-win32/data/mysqlbin
      3. 启用错误日志(可选):
        • log-err=自己的本地路径/mysqlerr
        • log-err=D:/qq/mysql/mysql-5.5.28-win32/data/mysqlerr
      4. 根目录(可选):
        • basedir="自己本地路径"
        • basedir="D:/qq/mysql/mysql-5.5.28-win32/"
      5. 临时目录(可选):
        • tmpdir="自己的本地路径"
        • tmpdir="D:/qq/mysql/mysql-5.5.28-win32/"
      6. 数据目录(可选):
        • datadir="自己的本地路径/Data/"
        • datadir="D:/qq/mysql/mysql-5.5.28-win32/Data/"
      7. read-only=0
        • 主机,读写都可以
      8. 设置不要复制的数据库(可选):
        • binlog-ignore-db=mysql
      9. 设置需要复制的数据库名字(可选):
        • binlog-do-db=需要复制的数据库名字
      10. 如图所示:
        • MySQL高级--主从复制
                              
    4. 从机修改my.cnf配置文件
      1. 从机服务器唯一ID(必选):
        • 打开配置文件:vim /etc/my.cnf
        • 注释:server-id =1
          • MySQL高级--主从复制
        • 打开:server-id =2
          • MySQL高级--主从复制 
              
      2. 启动二进制日志(可选)   
    5. 因修改过配置文件,请主机+从机都重新启动mysql服务
      • MySQL高级--主从复制
      • MySQL高级--主从复制
    6. 主机从机都关闭防火墙
      • window 手动关闭防火墙
        • MySQL高级--主从复制 
      • 关闭虚拟机linux防火墙:service iptables stop
        • MySQL高级--主从复制
    7. 在windows 主机上建立账户并授权slave
      • grant replication slave on *.* to ‘zhangsan‘@‘从机器数据库IP‘ identified by ‘123456‘;
      • grant replication slave on *.* to ‘zhangsan‘@‘192.168.56.130‘ identified by ‘123456‘;
        • MySQL高级--主从复制
      • 刷新一下:flush privileges;

        • MySQL高级--主从复制 

      • 查询master的状态

        • show master status;  

        • 记录下File和Position的值(告诉从机开始复制的位置--那个文件的那个位置)

        • MySQL高级--主从复制
        • 执行完此步骤后不要在操作主服务器了mysql,防止主服务器状态值变化  
    8. 在linux主机上配置需要复制的主机
      • 在从机中配置主机命令:
        • CHANGE MASTER TO MASTER_HOST=‘172.29.95.254‘
          MASTER_USER=‘zhangsan‘,
          MASTER PASSWORD=‘123456‘,
          MASTER_LOG_FILE=‘mysqlbin.具体数字’, MASTER_LOG_POS=具体值; 

        • change master to master_host=‘172.29.95.254‘,
        • master_user=‘zhangsan‘,
        • master_password=‘123456‘,
        • master_log_file=‘mysqlbin.000004‘,master_log_pos=107;
        • MySQL高级--主从复制
      •  启动服务器的复制功能:

        • start slave;

        • MySQL高级--主从复制

      • show slave status\G

        • 下面两个参数都是yes,则说明主从配置成功

        • Slave_Io_Running:Yes

        • Salve_SQL_Running:Yes     

    9. 主机新建库,新建表,insert 记录,主从复制
    10. 如何停止从服务复制功能:stop,slave;

       

MySQL高级--主从复制

上一篇:MySQL中使用Show status


下一篇:gdb 打印每个线程的bt ps 状态等命令