• 第14周作业


    1 MariaDB主从复制原理
    在主服务端会开启dump 线程,每个slave的i/o线程对应一个dump线程,用于向其发送binary log events
    从服务器会开启i/o 线程 和sql线程 ,i/o线程接受主发来的二进制事件,保存在中继日志中
    sql线程读取日志记录,写入从的数据库中
    都是基于二进制日志,二进制日志必须开启,同时要改为row记录. 通过MariaDB [(none)]> show processlist或ss -ant查看
     2 MariaDB一主一从架构构建,准备两台纯新的CentOS7.6服务器,其中主机称为node1的服务器地址为192.168.130.132,主机称为node2的服务器地址为192.168.130.133

    主132:改配置文件
    [mysqld]
    server-id=2
    log-bin=/data/mysql/mysql-bin
    binlog-format=row

    mkdir -pv /data/mysql ;chown -R mysql.mysql /data/mysql
    systemctl enable --now mariadb
    登录mysql,查看二进制日志 show master logs;记录下来
    用户建立并授权 grant replication slave on *.* to 'repluser'@'192.168.130.%' identified by 'magedu';

    从:133 改配置文件
    [mysqld]
    server-id=3
    log-bin=/data/mysql/mysql-bin
    read_only

    mkdir -pv /data/mysql ;chown -R mysql.mysql /data/mysql
    systemctl enable --now mariadb
    登录mysql
    CHANGE MASTER TO
    MASTER_HOST='192.168.130.132',
    MASTER_USER='repluser',
    MASTER_PASSWORD='magedu',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=329;
    start slave;
    show slave statusG

    3 MariaDB级联复制

    上一节中我们完成了一主一从的MariaDB的主从复制架构,但是有的时候,我们期望有一个后备的MariaDB的节点,用只
    动词}备份存储数据,不需要对外提供服务。为了实现该功能,我们可以在之前的一主一从架构上进行调整,即将从节点的二进
    制文件打开,然后给他配置一个远程同步数据用户,接着使用一台新的服务器做为从服务器的从属,同步从服务器数据的即
    柯林斯,下面我们在原来的架构上添加一台新的CentOS7.6,作为节点3,IP地址为192.168.132.134

    答:上题中的133变成级联中间点,134连接133
    133:在配置文件中 加入 log_slave_updates
    systemctl restart mariadb
    登录mysql show master logs;

    备份一下主库,mysqldump -A -F --single-transaction --master-data=1 > /data/all.sql
    scp /data/all.sql 192.168.100.134:/data
    134的配置文件
    [mysqld]
    server-id=34
    read-only
    systemctl enable --now mariadb
    vim /data/all.sql

    [root@centos8 ~]#mysql < /data/all.sql

    4 MariaDB半同步复制

    centos8:

    在主从复制的基础上,
    主:
    vim /etc/my.cnf.d/mariadb-server.cnf
    [mysqld]
    server-id=83
    log-bin
    plugin-load-add = semisync_master
    rpl_semi_sync_master_enabled=ON
    rpl_semi_sync_master_timeout=3000

    systemctl restart mariadb

    vim /etc/my.cnf.d/mariadb-server.cnf
    [mysqld]
    server-id=84
    plugin_load_add = semisync_slave
    rpl_semi_sync_slave_enabled=ON
    systemctl restart mariadb

    centos7:

    通过安装半同步插件,主服务器安装主的插件,从服务器安装从的插件.

    主服务器配置
    INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
    SET GLOBAL rpl_semi_sync_master_enabled=1;
    SET GLOBAL rpl_semi_sync_master_timeout = 1000;  
    mysql> SHOW GLOBAL VARIABLES LIKE '%semi%';
    mysql> SHOW GLOBAL STATUS LIKE '%semi%';

    从服务器配置
    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
    SET GLOBAL rpl_semi_sync_slave_enabled=1;


    show plugins;查看插件是否安装

    主从服务器查看状态
    SHOW GLOBAL STATUS LIKE '%semi%';

    5 MariaDB高可用方案MHA

    准备三台新安装的CentOS7.6服务器,并使用yum安装MariaDB10.2.23,主机名分别为node1,node2,node3,
    IP地址分别为192.168.130.132-134
    1.改主机名
    hostnamectl set-hostname manager 192.168.130.131
    hostnamectl set-hostname node1 192.168.130.132
    hostnamectl set-hostname node2 192.168.130.133
    hostnamectl set-hostname node3 192.168.130.134
    2.安装 MariaDB10.2.23
    vim /etc/yum.repos.d/MariaDB.repo
    [mariadb]
    name=MariaDB
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.2/centos7-amd64/
    gpgkey=https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    导入key
    rpm --import https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
    安装
    yum install -y mariadb-server
    3.ssh互联
    ssh-keygen
    ssh-copy-id 192.168.130.131
    rsync -av .ssh 192.168.130.132:/root/
    rsync -av .ssh 192.168.130.133:/root/
    rsync -av .ssh 192.168.130.134:/root/
    4.管理节点和node节点安装包
    管理 yum install -y mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm
    node yum install -y mha4mysql-node-0.56-0.el6.noarch.rpm
    5.在管理节点建立配置文件
    mkdir /etc/mastermha/
    vim /etc/mastermha/app1.cnf
    [server default]
    user=mhauser
    password=magedu
    manager_workdir=/data/mastermha/app1/
    manager_log=/data/mastermha/app1/manager.log
    remote_workdir=/data/mastermha/app1/
    ssh_user=root
    repl_user=repluser
    repl_password=magedu
    ping_interval=1
    master_ip_failover_script=/usr/local/bin/master_ip_failover
    report_script=/usr/local/bin/sendmail.sh
    check_repl_delay=0
    [server1]
    hostname=192.168.130.132
    [server2]
    hostname=192.168.130.133
    [server3]
    hostname=192.168.130.134
    candidate_master=1
    6.邮件脚本
    cat /usr/local/bin/sendmail.sh
    echo "MySQL is down" | mail -s "MHA Warning" 254127092@qq.com
    chmod +x /usr/local/bin/sendmail.sh
    准备.mailrc文件放到家目录下
    7.准备 /usr/local/bin/master_ip_failover 文件
    chmod +x /usr/local/bin/master_ip_failover
    虚拟ip 192.168.130.120
    网关 192.168.130.1
    8.实现主从复制

    vim /etc/my.cnf
    [mysqld]
    server_id=32
    log-bin
    skip_name_resolve=1
    general_log  
    mysql>show master logs
    mysql>grant replication slave on *.* to repluser@'192.168.130.%' identified by
    'magedu';
    mysql>grant all on *.* to mhauser@'192.168.130.%' identified by 'magedu';
    配置VIP
    ifconfig eth0:1 192.168.130.120/24
    从1和从2
    vim /etc/my.cnf
    [mysqld]
    server_id=33
    log-bin
    read_only
    relay_log_purge=0
    skip_name_resolve=1

    CHANGE MASTER TO
    MASTER_HOST='192.168.130.132',
    MASTER_USER='repluser',
    MASTER_PASSWORD='magedu',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='master-bin.000001',
    MASTER_LOG_POS=329;
    start slave;
    show slave statusG
    检查环境
    masterha_check_ssh --conf=/etc/mastermha/app1.cnf
    masterha_check_repl --conf=/etc/mastermha/app1.cnf

    masterha_manager --conf=/etc/mastermha/app1.cnf
    停止主节点上的systemctl stop mariadb

    完成一次后,自动退出.

    记得,将新主的read-only选项注释掉或者去掉

  • 相关阅读:
    BoundsChecker下载
    大型系统内部资源定位的途径
    架构的焦点
    为什么日志只应该有三个级别
    回收站引发ORACLE查询表空间使用缓慢
    题目记录
    广搜入门 待改进的广搜
    归并排序的使用
    大数数组中滚动数组的应用
    多重背包问题
  • 原文地址:https://www.cnblogs.com/ssel/p/13588595.html
Copyright © 2020-2023  润新知