zoukankan      html  css  js  c++  java
  • centos7单机上搭建mysql5.7一主多从模式

    虽然只是一名撸码小哥,但是毕竟常常和数据库要打交道,免不了多少得知道些数据库的配置和架构只是,所以自己参考官方文档在单机上搭了个mysql的主从,当作笔记,避免年纪大了不记事儿。

    本文只写如何搭建主从的结构,不涉及原理和应用场景,内容浅显,不喜勿喷。

    基本环境:

    centos7 x64

    mysql 5.7.20(压缩版)

    下载mysql 5.7.20(去官网下载了传到linux或直接wget),如图

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

    添加用户组mysql:

    groupadd mysql

    添加用户mysql且该用户不能登陆:

    useradd -g mysql mysql -s /bin/false

    创建用户组和用户非强制性要求,可以直接用root搞,不过还是养成良好习惯,不同用户干不同事儿,免得一直用着root为所欲为,稍微手滑一切go die...

    新建一个文件夹,待下载完成后解压到里面,并复制两份,做一主两从用,新建data目录,conf目录,logs目录,sock目录(建立这四个目录非强制要求,这里仅仅是为了区分各文件,便于管理),如图:

    进入conf目录,新建3306.cnf,3307.cnf,3308.cnf,如图:

    进入logs目录,新建3306_err.log,3307_err.log,3308_err.log,如图:

    这一步可以跳过,这一步是为新的启动方式mysqld_safe做的异常日志输出,如果用老的mysqld启动,则可以不用配置

    现在开始搞配置文件,这里我们拟定3306为主库(master),3307,3308为从库(slave),

    首先配置master,即conf目录下的3306.cnf,如图(这里只配置了mysqld组和mysqld_safe,没有配置client),

    配置说明:

    [mysqld]
    user=mysql #mysql启动用户
    character-set-server=utf8 #服务字符集
    port=3306 #端口
    socket=/usr/local/mysql/sock/3306.sock #用于通讯的套接字,由于是一台机多实例,所以区分开
    basedir=/usr/local/mysql/mysql5720_3306 #mysql安装目录
    datadir=/usr/local/mysql/data/3306 #数据存放目录
    server-id=1 #本机唯一标识
    log-bin=master-bin #bin-log前缀
    log-bin-index=master-bin.index #bin-log-index前缀
    binlog_format=ROW #binlog格式 (STATEMENT,ROW,FIXED),这里主要为了后续要测试canal,所以用到了ROW,具体格式区别,自行搜索
    binlog-ignore-db=mysql #不需要同步给从库的库
    binlog-ignore-db=sys #不需要同步给从库的库
    binlog-ignore-db=information_schema #不需要同步给从库的库
    binlog-ignore-db=performance_schema #不需要同步给从库的库

    [mysqld_safe]
    log-error=/usr/local/mysql/logs/3306_err.log #启动错误日志输出地址

    配置完成后,进入mysql安装目录(basedir指向路径)初始化实例

    执行命令:

    ./bin/mysqld --defaults-file=/usr/local/mysql/conf/3306.cnf --initialize-insecure

    其中-insecure作用是不设置密码,如果不带则mysql会随机生成一个密码出现在控制台,需要记下来

    初始化不报错则启动mysql服务,运行mysqld或mysqld_safe命令启动mysql:

    ./bin/mysqld --defaults-file=/usr/local/mysql/conf/3306.cnf

    启动不报错后为mysql root用户设置一个密码:

    ./bin/mysqladmin -u root password "123456" --socket=/usr/local/mysql/sock/3306.sock(注意后面的 --socket参数必须带上,与配置文件中的socket配置值一致

    登陆mysql控制台(由于配置文件中没有配置client组,所以登陆命令同样需要添加--socket参数):

    ./mysql -uroot -p123456 --socket=/usr/local/mysql/sock/3306.sock

    登陆后查看master状态,如图:

    show master status;

    每个人的file和position可能不一样,请务必记录下来

    新建一个复制帐户,用于从库复制binlog使用:

    create user 'slavedb'@'%' identified by '123456';

    GRANT REPLICATION SLAVE ON *.* TO 'slavedb'@'%';

    master主库就ok了,现在开始配置slave从库,这里以3307.cnf为例子,3308.cnf仅需把3307.cnf内容中所有的3307替换成3308即可,如图:

     

    [mysqld]
    user=mysql
    character-set-server=utf8
    port=3307
    socket=/usr/local/mysql/sock/3307.sock
    basedir=/usr/local/mysql/mysql5720_3307
    datadir=/usr/local/mysql/data/3307
    server-id=2 #server_id 每个实例不一样
    read_only=1 #只读库

    [mysqld_safe]
    log-error=/usr/local/mysql/logs/3307_err.log

    配置完成后,重复初始化,启动,设置密码步骤(注意指向所属的配置文件和socket

    然后登陆mysql,执行如下命令:

    stop slave; #停止slave

    change master to master_host =’127.0.0.1’,master_port=3306,master_user=’slaveuser’,master_password=’123456’,master_log_file=’mysql-bin.000008’,master_log_pos=331; // 指向主库设置,其中最后两个参数为master中查询出来的值

    start slave; #启动slave

    然后查看slave状态,如图,看到红圈内的值则启动成功(另外一台机器重复上述步骤):

    show slave statusG; 

    最后登陆master库进行建表,写入操作,而后去slave机查看,即可发现同步成功。

  • 相关阅读:
    php7 安装xhprof
    通过explain分析SQL
    将本地代码上传到github
    SVM支持向量机分类算法
    sklearn之reshape(-1,1)
    sklearn之决策树和随机森林对iris的处理比较
    sklearn总结
    面向对象之类的继承
    面向对象之静态方法、类方法
    面向对象之类的私有属性和方法
  • 原文地址:https://www.cnblogs.com/hankguo/p/8204868.html
Copyright © 2011-2022 走看看