ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL集群(一主两从)部署

2022-07-06 12:41:29  阅读:245  来源: 互联网

标签:26 5.7 MySQL 集群 master mysql 一主 日志 data


主从复制原理

从机会从主机读取binlog来进行数据同步

 

  • 主库线程发现从库线程连接的时候,主库可以将二进制日志发送给从库

  • 从库通过主库的dump线程同步主库的binlog二进制文件

  • 从库通过I/O线程写入到中继日志中,SQL线程读取中继日志执行日志中的事件,将从库中的数据与主库保持同步

三个步骤:

  • Master将写操作记录到binlog

  • Slave将Master的binlog拷贝到中继日志

  • Slave执行中继日志的事件,改变自己的数据库

  1. 安装wget依赖

    yum install wget -y

  2. 下载mysql5.7.26到data目录

    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

  3. 解压mysql

    tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

  4. 修改mysql文件夹

    mv mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql-5.7.26

  5. 创建mysql数据存储文件

    cd /mysql-5.7.26

    mkdir data

    chmod -R 777 /data/mysql-5.7.26/data/

  6. 创建组和用户,并将用户加入组

    groupadd mysql

    useradd -g mysql mysql

  7. 修改mysql配置文件

    vi /etc/my.cnf

    [mysqld]
    bind-address=0.0.0.0
    port=3306
    #skip-grant-tables
    user=mysql
    basedir=/data/mysql-5.7.26
    datadir=/data/mysql-5.7.26/data
    socket=/tmp/mysql.sock
    log-error=/data/mysql-5.7.26/data/mysql.err
    pid-file=/data/mysql-5.7.26/data/mysql.pid
    #character config
    character_set_server=utf8mb4
    symbolic-links=0
    explicit_defaults_for_timestamp=true

     

  8. 进入bin目录,初始化mysql

    cd /data/mysql2.7.26/bin

    ./mysqld --initialize --user=mysql --datadir=/data/mysql-5.7.26/data/ --basedir=/data/mysql-5.7.26/

  9. 查看mysql初始化密码

    cat /data/mysql-5.7.26/data/mysql.err

  10. 添加软链接,可以在任意目录执行mysql命令

    ln -s /data/mysql-5.7.26/support-files/mysql.server /etc/init.d/mysql

    ln -s /data/mysql-5.7.26/bin/mysql /usr/bin/mysql

    service mysql restart

  11. 登录mysql修改密码

    vi /etc/my.cnf

    去掉#skip-grant-tables的注释

    mysql -u root -p

    use mysql

    修改密码

    update user set authentication_string=password('Pw!123456') where user='root';

    |alter user USER() identified by 'Pw!123456';

    开启远程访问权限

    update user set host ='%' where user ='root';

    刷新权限

    flush privileges;

    重启mysql

    service mysql restart

  12. 将mysql端口加入防火墙的白名单

    firewall-cmd --zone=public --add-port=3306/tcp --permanent

    systemctl restart firewalld.service

  13. 修改主库的my.cnf文件

    #------------- 主从复制配置 start ----------------
    log-bin = mysql-bin   # 开启二进制日志,保存到.../mysql-bin中
    server-id = 1                           # 设置主服务器的ID(不能重复,建议使用ip的最后一段)    
    innodb_flush_log_at_trx_commit=1           # 每次commit 日志缓存中的数据刷到磁盘中。通常设置为 1,意味着在事务提交前日志已被写入磁盘, 事务可以运行更长以及服务崩溃后的修复能力
    sync_binlog=1                             # 开启binlog同步功能,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘
    # binlog-ignore-db 表示同步的时候忽略的数据库,忽略几个就写几个,如果使用binlog-do-db指定要同步的数据库,这些可以不设置
  14. 重启MySQL验证

    service mysql restart

    mysql -u root -p

    查看二进制日志是否开启

    show global variables like '%log_bin%';

    log_bin value 等于ON 说明开启

    查看主节点二进制日志列表 (以后会有多个)

    show master logs;

    查看主节点的serverid

    show global variables like '%server%';

  15. 在mysql中创建从服务器的用户和权限

    GRANT REPLICATION SLAVE ON . TO 'slave1'@'%' IDENTIFIED BY 'abc123';

    flush privileges;

  16. 查看主库信息

    show master status;

  17. 从服务器配置

    修改my.cnf文件

    server-id=2 #不能和主节点的id重复

     

  18. 重启mysql

    service mysql restart

  19. 查看中继日志是否开启

    show global variables like '%log%';

  20. 设置从库访问主库

    1. 暂停同步

      stop slave;

    2. 链接主库

      change master to master_host='192.168.0.102',master_user='slave1',master_password='abc123',master_log_file='mysql-bin.000001', master_log_pos=154;

      参数说明
      master_host='192.168.0.102',     主库ip地址
      master_user='slave1',   设置的账号
      master_password='abc123', 密码
      master_log_file='mysql-bin.000001',   上面查询到的File字段值
      master_log_pos=154;     上面查询到的Position字段值

       

    3. 查询同步信息是否成功

      show slave status\G;

       

      Slave_IO_Running,Slave_SQL_Running 都为Yes的时候表示配置成功

      Slave_IO_Running: Yes

      Slave_SQL_Running: Yes

  21. 设置开机自启动

    查看自启动的服务

    chkconfig --list

  22. 设置自启动

    cd /etc/rc.d/init.d

    cp /data/mysql-5.7.26/support-files/mysql.server /etc/rc.d/init.d/

    赋予可执行权限:chmod +x /etc/init.d/mysql.server

    添加为服务: chkconfig --add mysql.server

  23.  

 

标签:26,5.7,MySQL,集群,master,mysql,一主,日志,data
来源: https://www.cnblogs.com/zhu-zhu/p/16450319.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有