• MySQL Replication(数据同步技术)


                          MySQL Replication(数据同步技术)

    A 到 B 完成主从复制,意思是数据同步技术 从读取主的二进制日志文件,按照日志中记录对从库进行同样的操作

    复制类型:

    异步复制 :默认的复制是异步,主执行完后立刻将结果返给客户端,不关心从是否接收或处理

    全同步复制:当主执行完一个事务,从库都执行完该事务才返回给客户端。

    半同步复制:介于异步与全同步之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到日志中返回客户端(最好在低延时的网络中使用)

    一般使用异步复制的方式

    双机部署环境:

    主节点 192.168.80.24
    从节点 192.168.80.26

    ----------------

    首先要先安装mysql数据库

    1,关闭防火墙和安全机制

    systemctl  stop firewalld
    setenforce 0
    iptables -F

    2,配置ntp时间同步服务器并启动

    yum -y install  ntp
    1,主节点做
    vim /etc/ntp.conf
    server 127.127.1.0
    fudge 127.127.1.0 stratum 8
    systemctl start ntpd
    2,从节点
    ntpdate 主节点IP

    (第二种方法,使用互联网上时间同步服务器(每个节点都使用,方便便捷)
    crontab -e
    * */5 * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1       //每隔5小时同步一下时间

    3,安装mysql安装包

    安装 mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

    1,将系统中只带的mariadb删除
    rpm -q mysql mysql-server mariadb mariadb-server
    rpm -e .......
    2,上传mysql二进制包解压
    tar xf mysql-5.7.24-linux-glibc2.17-x86_64-minimal.tar.xz -C /usr/local/        
    cd /usr/local        
    mv mysql-5.7.24-linux-glibc2.17-x86_64-minimal/ mysql                            
    3,创建mysql用户并赋予权限    
    useradd -M -s /sbin/nologin mysql                                                
    chown -R mysql:mysql /usr/local/mysql/
    4,初始化数据库
    /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

    5,修改配置文件
    cat /etc/my.cnf
    [mysqld]
    port=3306
    datadir=/usr/local/mysql/data
    max_connections = 100
    default-storage-engine = InnoDB
    socket=/tmp/mysql.sock
    character-set-server=utf8
    [mysqld_safe]
    log-error=/usr/local/mysql/data/mysql.log
    pid-file=/usr/local/mysql/data/mysql.pid

    6,做启动文件
    cd /usr/local/mysql/support-files
    cp mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld
    chkconfig --add mysqld
    ln -s /usr/local/mysql/bin/* /usr/local/bin/
    systemctl start mysqld            

    7,修改密码
    ####mysqladmin -uroot -p'复制的初始密码' password'123456'      
    mysql>alter user user() identified by "123456" ;
    #登陆:
    mysql -uroot -p'123456'

    开始配置主从

    4,配置主mysql并重启

    vim /etc/my.cnf
    server-id=1
    log-bin=mysql-binlog
    log-slave-updates=true

    systemctl restart mysqld

    5,主创建replication用户

    进入数据库mysql 
    >grant replication slave on *.* to 'myslave'@'192.168.80.%' identified by '123456';
    >flush privileges;
    > show master status;

    replication slave :用于复制从属服务器(从主服务器中读取二进制日志事件权限)
    测试是否成功
    从 连接一下 主。如果成功登陆则没有问题
    mysql -u myslave -p123456 -h 192.168.80.24

    补充:生产环境下,主运行过一段时间,已经存在数据,为了保证数据一致性,需要先备份。两种方式,直接备份数据文件或者mysqldump工具备份

    6,从配置并重启

    vim /etc/my.cnf
    server-id = 2
    relay-log=relay-log-bin
    relay-log-index=slave-relay-bin.index

    补充:如若有多台从,每一台都需要配置,并只修改server-id编号即可

    systemctl restart mysqld

    7,从进入数据库中配置

    进入从数据库
    >stop slave;                       //先停掉从的角色
    >change master to master_host='192.168.200.115',master_user='myslave',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=477;
                                      //配置新的从角色
    >start slave;                       //启动角色
    >show slave statusG                   //查看角色信息

    补充:清除角色 >reset slave;

    8.测试:在主中创建一个库,看从中是否复制成功

    进入主数据库
    >create database sampdb;
    >use sampdb;
    >create table new(name char(20),phone char(20));
    进入从数据库
    >show databases;

    9.补充注意:主从复制,只是一种数据同步技术,不是架构;

    如果是问数据库架构是如何,应该再加上HA(高可用),如下列举两个架构

    • MySQL主主复制+Keepalived高可用
    • MySQL+DRBD+Heartbeat
    没有处理不了的问题,只有不能处理的人
  • 相关阅读:
    HTML页面保存为图片
    一些chrome调试
    hooks使用的一些注意点
    React(v16.8) Hooks 简析
    基于 React.js 和 Node.js 的 SSR 实现方案
    移动端垂直居中对齐
    python XML ElementTree的增删改查
    python实现XML解析的三种方法
    git的用法
    Appium获取元素的方式
  • 原文地址:https://www.cnblogs.com/123456likun/p/14893359.html
Copyright © 2020-2023  润新知