• 搭建mysql主从复制(主主复制)


    1:设主库允许远程连接(注意:设置账号密码必须使用的插件是mysql_native_password,其他的会连接失败)

    #切换到mysql这个数据库,修改user表中的host,使其可以实现远程连接
    mysql>use mysql;
    mysql>update user set host ="%" where user ="root";
    #改完之后一定要刷新信息
    mysql>flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2:主库开启bin-log日志在my.cnf的[mysqld]下添加

    #修改主服务器Master
    #修改配置文件
    vim /etc/my.cnf
    #主服务器唯一ID,这个id可以随便修改,只要不跟从服务器重复,注意连接是-,不是_
    server-id=1
    #启用二进制日志
    log-bin=mysql-bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2-1:重启主库mysql

    [root@localhost ~]# systemctl retart mysql
    
    • 1

    2-2:查看主库server 相关信息

    mysql>  show global variables like '%server%';
    +---------------------------------+--------------------------------------+
    | Variable_name                   | Value                                |
    +---------------------------------+--------------------------------------+
    | character_set_server            | utf8mb4                              |
    | collation_server                | utf8mb4_0900_ai_ci                   |
    | innodb_dedicated_server         | OFF                                  |
    | innodb_ft_server_stopword_table |                                      |
    | server_id                       | 1                                    |
    | server_id_bits                  | 32                                   |
    | server_uuid                     | b434ab49-df79-11ee-9c39-0242ac110002 |
    +---------------------------------+--------------------------------------+
    7 rows in set (0.00 sec)
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2-2:查看主库是否开启bin-log日志

    mysql>  show global variables like '%log%';
    
    • 1

    在这里插入图片描述

    2-3:查看主库的最新状态

    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000004 |      157 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    
    mysql> FLUSH LOGS;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000005 |      157 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2-4:查看全部的二进制文件,可以选择一步一步恢复

    mysql> SHOW BINARY LOGS;
    +------------------+-----------+-----------+
    | Log_name         | File_size | Encrypted |
    +------------------+-----------+-----------+
    | mysql-bin.000001 |       204 | No        |
    | mysql-bin.000002 |       204 | No        |
    | mysql-bin.000003 |       204 | No        |
    | mysql-bin.000004 |       204 | No        |
    | mysql-bin.000005 |       157 | No        |
    +------------------+-----------+-----------+
    5 rows in set (0.00 sec)
    
    mysql>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3:从库开启bin-log日志在my.cnf的[mysqld]下添加

    #修改从服务器slave
    修改配置文件:vim /etc/my.cnf
    #从服务器唯一ID,注意连接是-,不是_
    server-id=2
    #启用中继日志
    relay-log=mysql-relay
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3-1:查看主库是否开启bin-log日志,从库也是一样

    在这里插入图片描述

    4:在主库创建一个账号slave,密码123456,并且授权连接

    mysql>GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';
    
    • 1

    4-1:在从库指定主库(添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息,注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。如果需要设置主主就是主库也执行如下的命令,ip,账号,密码换成从库的)

    mysql> change master to master_host='192.168.11.47',master_user='root',master_password='root',master_log_file='mysql-bin.000005',master_log_pos=157;
    Query OK, 0 rows affected, 8 warnings (0.01 sec)
    
    • 1
    • 2

    4-2:主主设置

    mysql> change master to master_host='192.168.11.47',master_user='root',master_password='root',master_log_file='mysql-bin.000005',master_auto_position=1;
    Query OK, 0 rows affected, 8 warnings (0.01 sec)
    
    • 1
    • 2
    
    ## 5:检查从库复制功能状态(注意:Slave_IO_Running,Slave_SQL_Running,两个线程必须为yes状态,否则主从复制搭建不成功)
    
    ```bash
    show slave status \G;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5-1:先停止从库的复制功能

    mysql>stop slave;
    
    • 1

    5-2:再启动从库的复制功能

    mysql>start slave;
    
    • 1

    5-3:再查看从库的状态

    show slave status \G;
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    Kubernetes 可观测性:利用 4 个开源工具
    Mac M1 问题记录
    精品基于Uniapp+SSM实现的Android的餐饮管理系统
    【算法篇】刷了两道大厂面试题,含泪 ”重学数组“
    移动魔百盒CM311-1sa_ZG代工_S905L3A 安卓9.0 鸿蒙动画_线刷固件包
    Spring 事务失效的场景
    springboot第36集:kafka,JSAPI支付,nginx,微服务Feign与flutter安卓App开发2
    智能制造APS,赋能「钣金行业」提升数字化战斗力!
    基础会计学知识点汇总
    APS计划排产在卫浴行业的应用
  • 原文地址:https://blog.csdn.net/qq_19891197/article/details/136612537