zoukankan      html  css  js  c++  java
  • 三十四、主从复制搭建

    一、主从复制介绍

    全称MySQL Replication
    1、主从复制基于binlog来实现的
    2、主库发生新的操作,都会记录binlog
    3、从库取得主库的binlog进行恢复
    4、主从复制的过程是异步

    二、主从复制的前提条件

    1、主从数据库时间要一致,网络通畅未被防火墙拦截
    2、2个或以上的数据库实例
    3、server_id要不同,以便区分不同的节点
    4、主库需要开启二进制日志
    5、主库需要建立专用的复制用户
    6、人为告诉从库一些主库信息(ip、port、user、pass、二进制日志起点)
    7、后添加的从库应该从主库进行备份恢复

    三、搭建主从复制

    环境
    主服务器:10.154.0.111
    从服务器:10.154.0.112

    1、检查主从服务器参数

    mysql> select @@server_id; 
    mysql> select @@log_bin; #主库开启
    $ ping 10.154.0.112
    

    2、主库建立复制用户
    权限必须是replication slave

    $ mysql -uroot -p 
    -S /tmp/mysql.sock 
    -e "grant replication slave on *.* to repl@'10.154.0.%' identified by '123'"; 
    $ mysql -S /tmp/mysql.sock -e "select user,host from mysql.user";
    

    3、主库备份恢复到从库

    #主库备份,记得加--master-data=2 
    $ mysqldump -uroot -p -S /tmp/mysql.sock -A 
    --master-data=2 --single-transaction -R -E --triggers >/backup/full20210405.sql
    $ scp /backup/full20210405.sql 10.154.0.112:/backup/full20210405.sql
    
    #从库恢复
    $ mysql -S /tmp/mysql.sock 
    mysql> set sql_log_bin=0;
    mysql> source /backup/full20210405.sql
    mysql> set sql_log_bin=1;
    

    4、告知从库关于主库的复制信息

    #查看主库的备份,记下主库正在使用的binlog文件名跟起点信息
    $ vim /backup/full20210405.sql
    -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000041', MASTER_LOG_POS=752;
    #以上语句等同于如下
    $ grep "-- CHANGE MASTER TO" /backup/full20210405.sql
    
    #登录从库,查看帮助信息
    mysql> help change master to
    #改成如下
    mysql> CHANGE MASTER TO 
    MASTER_HOST='10.154.0.111', #主库的地址
    MASTER_USER='repl',    #复制用户
    MASTER_PASSWORD='123',   #复制密码
    MASTER_PORT=3306,     #主库端口号
    MASTER_LOG_FILE='mysql-bin.000041',  #主库正在使用的binlog
    MASTER_LOG_POS=752,          #binlog起点
    MASTER_CONNECT_RETRY=10; #重连次数
    

    5、从库开启复制线程(IO跟SQL线程)

    mysql> start slave;
    

    6、检查主从复制状态

    #在主库执行,会发现跟从库的position是一致的
    mysql> show master status G;
    
    #在从库执行,检查有如下两行YES即可
    mysql> show slave status G
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    #以上语句等同于如下
    $ mysql -S /tmp/mysql.sock -e "show slave statusG" | grep "Yes"
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    

    7、检查主从同步情况

    #主库创建数据库
    $ mysql -uroot -p -S /tmp/mysql.sock -e "create database tzwww;"
    
    #检查从库是否同步
    $ mysql -S /data/3308/mysql.sock -e "show databases;"
    

    四、如何判断主库跟从库

    #有从库信息的为主库
    mysql> show slave hosts;
    +-----------+------+------+-----------+--------------------------------------+
    | Server_id | Host | Port | Master_id | Slave_UUID                           |
    +-----------+------+------+-----------+--------------------------------------+
    |         7 |      | 3306 |         6 | 608b0578-8b03-11eb-a172-000c290d40be |
    +-----------+------+------+-----------+--------------------------------------+
    1 row in set (0.00 sec)
    
    #有从库信息的为从库
    mysql> show slave status G;
    ...省略
    

    学习来自:B站课程:MySQL主从复制介绍及搭建 P119

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    LeetCode分类专题(五)——动态规划1-子序列
    LeetCode分类专题(四)——双指针和滑动窗口1
    LeetCode分类专题(三)——二分查找1
    消息队列(一)——Kafka概述
    Java多线程(五)——synchronized关键字原理
    Java多线程(四)——volatile关键字原理
    Redis(五)——主从复制、哨兵
    Redis(四)——过期、持久化、事件
    Redis(三)——底层数据结构
    MySQL知识点
  • 原文地址:https://www.cnblogs.com/tz90/p/14617800.html
Copyright © 2011-2022 走看看