侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

mysql 的AB角复制

2023-12-12 星期二 / 0 评论 / 0 点赞 / 116 阅读 / 5898 字

1 原理 当主库有更新操作的时候,主库会把更新操作的sql,写如到二进制日志文件当中,并维护一个二进制日志文件的索引文件,以便日志文件轮询 在从库启动异步复制的时候,从库会开启两个I/O线程

1    原理

    当主库有更新操作的时候,主库会把更新操作的sql,写如到二进制日志文件当中,并维护一个二进制日志文件的索引文件,以便日志文件轮询
    在从库启动异步复制的时候,从库会开启两个I/O线程
    其中一个用于连接主库
    另外一个用于传输sql

注意:
    必须打开二进制日志文件
    从库必须知道主库是从那一给位置偏移量开始的
    主库和从库的数据库名称可以不一样,推荐使用一样
    主库和从库的mysql版本必须一致

2·设置主从服务器

    主服务器 192.168.125.128

    从服务器    192.168.125.129

    2.1 设置主服务器

            vim /etc/my.cnf 中添加一下两条记录并重启
                 log-bin=mysql-bin
                 server_id=1

            查看日志名称和point:

            show master status;

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      181 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 

        在mysql主服务器中建一个用户并授权:

       grant replication slave on *.* to repl@'%' identified by 'repl'

    2.2    设置mysql从服务器

            vim /etc/my.cnf 添加一下两条

                log-bin=mysql-bin
                server_id=2

            在mysql中运行help change master to

2.3    验证

        在从服务器设置好之后

            开启主从服务:start slave;

            查看当前设置状态:show slave status/G;

mysql> show slave status/G;*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.125.128                  Master_User: repl                  Master_Port: 3306                Connect_Retry: 10              Master_Log_File: mysql-bin.000004          Read_Master_Log_Pos: 181               Relay_Log_File: mysqld-relay-bin.000002                Relay_Log_Pos: 251        Relay_Master_Log_File: mysql-bin.000004             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:           Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 0                   Last_Error:                  Skip_Counter: 0          Exec_Master_Log_Pos: 181              Relay_Log_Space: 407              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 0               Last_SQL_Error: 1 row in set (0.00 sec)ERROR: No query specified

上面两条Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

都成功就说明设置成功。

注意:如果显示Slave_IO_Running: No 请检查主从服务器各自的selinux 和iptable 是否都已经关闭

在主服务器上做一个操作,比如建库,建表,再在从服务器上检查是否已经复制到从服务器上

主服务器新建库:

mysql> create database base20161110;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || base1              || base20161110       || mysql              || test               |+--------------------+5 rows in set (0.00 sec)

从服务器已经自动复制了刚才主服务器新建的数据库:

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || base20161110       || mysql              || test               |+--------------------+4 rows in set (0.01 sec)

主从服务器AB角 设置成功

广告 广告

评论区