• mysql集群


    mysql集群

    1.主从复制原理

     1)mysql主(master)从(slave)复制的原理?(面试题)

      ① master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这

        些记录叫作二进制日志事件,binary log events)

      ② slave将master的binary log events拷贝到它的中继日志(relay log);

      ③ slave重做中继日志中的事件,将改变反映他自己的数据(数据重演);

    2)主从配置注意点:

      主DB server 和从 DB server 数据库版本一致;

      主DB server和从 DB server数据库数据一致;

      主DB server 开启二进制日志,主DB server 和从DB server 的server_id 都必须一致。

    2.主库配置文件 my.conf

    1)开启主从复制

    [mysqld] log-bin = mysql-bin
    #指定主库 
    serverid server-id=1
    #记录同步的数据库,如果不指定则记录全部数据库以及同步全部数据库
    binlog-do-db=db_a

    2)执行SQL语句查询状态

    SHOW MASTER STATUS

    3.在主库创建同步用户

    1)授权用户slave01使用123456 密码登入mysql

    grant replication slave on *.* to 'slave01'@'ip 地址' identified by 'kgc';

    2)刷新配置

    flush privileges;

    4.从库配置文件 my,conf

    1)指定serverid,只要不复制即可,从库也只有这一个配置,其他都在

    [mysqld] server-id=2

    2)Navicat中执行同步数据库配置操作

    CHANGE MASTER TO
    master_host='127.0.0.1',
    #从数据库中查询得来 (show master status;)
    master_user='slave01',
    master_password='123456',
    master_port=3306,
    master_log_file='mysql-bin.000006',
    master_log_pos=1120;

    3)启动slave同步

    START SLAVE;

    4)查看同步状态

    SHOW SLAVE STATUS;

    5.搭建主库

    1)创建目录

    mkdir /data/mysql/master01 -p
    cd /data/mysql/master01
    mkdir conf data 
    chmod 777 * -R

    2)创建配置文件

    cd /data/mysql/master01/conf
    vim my.conf
    #在文件中写入
    [mysqld]
    log-bin=mysql-bin #开启二进制日志
    server-id=1#服务 id,不可重复

      附注:#出现[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and 错误解决方案,在 my.cnf 配置文件中设置

    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    3)创建容器

    docker create --name percona-master01 -v /data/mysql/master01/data:/var/lib/mysql -v /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23

    4)启动容器

    docker start percona-master01 && docker logs -f percona-master01

    5)创建同步账号以及授权打开(navicat连接)

    create user 'kgc'@'%' identified by 'kgc'; grant replication slave on *.* to 'kgc'@'%'; flush privileges;

    6)重新启动容器

    docker restart percona-master01 && docker logs -f percona-master01

    7)查看配置是否成功

      ① 查看master状态

    show master status;

      ② 查看二进制日志相关的配置

    show global variables like 'binlog%';

      ③ 查看server相关的配置项

    show global variables like 'server%';

    6.搭建从库

    1)创建目录

    mkdir /data/mysql/slave01
    cd /data/mysql/slave01
    mkdir conf data
    chmod 777 * -R

    2)创建配置文件

    cd /data/mysql/slave01/conf
    vim my.cnf

      #输入内容

    [mysqld] server-id=2 #服务 id,不可重复
    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    3)创建容器

    docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v /data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23

    4)启动容器

    docker start percona-slave01 && docker logs -f percona-slave01

    5)设置 master 相关信息(navicat 连接 mysql3307 端口)

    set sql_mode = ''; set sql_mode = 'NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';

      # user:主数据库名 password : 主服务器密码

       ...file pos:主数据库中的参数

    CHANGE MASTER TO
    master_host='192.168.115.188',
    master_user='kgc',
    master_password='kgc',
    master_port=3306,
    master_log_file='mysql-bin.000002',
    master_log_pos=648;

    6)启动同步

    start slave;

    7)查看master状态

    show slave status;

    8)测试

  • 相关阅读:
    MySQL监控、性能分析——工具篇
    [转载]Error -27796: Failed to connect to server
    Tomcat最大连接数问题
    Jconsole的使用
    通过jconsole监控tomcat JVM 内存、线程、CPU
    Tomcat部署web项目
    tomcat部署web项目的3中方法
    在linux下修改oracle的sys和system的密码和用户解锁
    静默安装oracle11G
    Linux 卸载Oracle 11G
  • 原文地址:https://www.cnblogs.com/gnos/p/13652026.html
Copyright © 2020-2023  润新知