MySQL5.6主从复制原理


一、MySQL5.6主从复制原理(亲测)

       (1)    master将数据变化记录到二进制日志(binary log)中
       (2)    slave将master的binary log拷贝到它的中继日志(relay log);
       (3)    slave读取中继日志,并且在从服务器上重放

                                  


二、主从复制实现步骤

安装环境:Ubuntu 14.04 MySQL5.6

确保主从服务器上安装了相同版本的数据库
主服务器IP 192.168.1.100
从服务器IP 192.168.1.101
1)登录主服务器,设置一个复制使用的账户,并授予REPLICATION SLAVE权限

 root@iZ23tsilmb7Z:~# mysql -uroot -proot
    
    mysql> grant replication slave on *.* to 'backup'@'192.168.1.101' identified by '12345678';
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
2)修改主数据库的配置文件,开启BINLOG并设置server-id的值,之后重启mysql
 
 root@iZ23tsilmb7Z:~# vim /etc/mysql/my.cnf 
    server-id        = 1                //去掉注释
    log_bin         = /var/log/mysql/mysql-bin.log
    # bind-address          = 127.0.0.1   //务必注释这一行
    root@iZ23tsilmb7Z:~# service mysql restart
    root@iZ23tsilmb7Z:~# mysql -uroot -proot
3)查询主服务器上当前二进制日志名和偏移量,这个操作的目的是为了在从服务器启动以后可 以从这个点进行数据库的恢复
    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      107 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
4)修改从数据库的配置文件,添加server-id参数。server-id的值是唯一的,不能和主数据库 配置相同,如果有多个从数据库,每个从数据库都必须有自己唯一的server-id值
    my.cnf
    [mysqld]
    server-id = 2
    root@iZ23yrv1t36Z:~# service mysql restart
    root@iZ23yrv1t36Z:~# mysql -uroot -proot
5) 修改从数据库连接主数据库的信息,指定复制使用的用户,主数据库服务器的IP、端口以及 开始执行复制的日志文件和位置等

    mysql> change master to
        -> master_host='192.168.1.100',
        -> master_user='backup',
        -> master_password='12345678',
        -> master_log_file='mysql-bin.000001',
        -> master_log_pos=107;
    Query OK, 0 rows affected (0.07 sec)

    mysql> start slave;
    Query OK, 0 rows affected (0.00 sec)
6)查看从服务器的状态
   
 mysql> show slave status\G;
    
    *************************** 1. row ***************************
               Slave_IO_State: Connecting to master
                  Master_Host: 192.168.1.100
                  Master_User: backup
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 107
               Relay_Log_File: mysqld-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB:
在这里主要是看:
                   Slave_IO_Running=Yes
                   Slave_SQL_Running=Yes


slave的I/O和SQL线程都已经开始运行,这两项都必须是Yes主从才能正常连接
7)在主数据库中创建表,如果从数据库中能查看的相应的表,说明主从搭建成功

注意:
1.主服务器的my.cnf文件中一定要将注释这一行,否则不能远程连接该主机
 bind-address          = 127.0.0.1
未注释时从服务器状态为:Slave_IO_Running: Connecting

  2.关闭防火墙
  • 发布时间:2019-04-05