MySQL

纵饮孤独 提交于 2020-02-29 17:57:26

        最近在看sharding-jdbc(即将发布3.0版本,并更名Sharding-Sphere,俗话说,只看不练假把式。所以,准备在自己的云服务上搭建一套mysql主从环境,但是迫于只有一台云服务器,所以只能搭建单机版的mysq一主多从。

        不经常搭建mysq服务器,只能在网上搜、参考,一搜一大把,也不知道哪个对、哪个错,经过不断尝试,总结出了一套正确的方案,特此记录。

 

服务器环境

  • centos7 64位

  • 可以通过rpm-qa|grep name来验证以下软件包是否已全部安装

    cmake make gcc gcc-c++ ncurses-devel bison

    若缺少相关软件包,则使用yum –y install方式安装

创建mysq用户

  • 检测mysql用户是否存在
    id mysql
  • 若不存在,创建
    groupadd mysql
    
    useradd -r -g mysql mysql

     

下载安装包

  • 下载
    wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz

     

  • 解压
    tar zxvf mysql-5.6.36.tar.gz
  • 创建主从目录,并拷贝文件内容
    (1)创建主mysql目录
    mkdir -p /usr/local/mysql-m /usr/local/mysql-m/etc /opt/database-m /var/run/mysql-m /var/log/mysql-m
    (2)创建从mysql目录
    mkdir -p /usr/local/mysql-s /usr/local/mysql-s/etc /opt/database-s /var/run/mysql-s /var/log/mysql-s
    (3)复制数据到mysql主从目录
    cd zxvf mysql-5.6.36
    cp ./* -ir /usr/local/mysql-s/
    cp ./* -ir /usr/local/mysql-m/

     

  • 赋权限
    #主库
    chown -R mysql.mysql /usr/local/mysql-m
    chown -R mysql.mysql /opt/database-m
    chown -R mysql.mysql /var/run/mysql-m
    chown -R mysql.mysql /var/log/mysql-m
    
    #从库
    chown -R mysql.mysql /usr/local/mysql-s
    chown -R mysql.mysql /opt/database-s
    chown -R mysql.mysql /var/run/mysql-s
    chown -R mysql.mysql /var/log/mysql-s

     

安装 主mysql

  • 进入主mysql目录
    cd /usr/local/mysql-m

     

  • 执行cmake编译
    cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql-m -DMYSQL_DATADIR:PATH=/opt/database-m -DSYSCONFDIR:PATH=/usr/local/mysql-m/etc -DMYSQL_TCP_PORT=3307 -DWITH_DEBUG:BOOL=on

     
  • 安装
    make && make install

    安装完成后,如下图所示:
  • 编辑配置文件
    vim /usr/local/mysql-m/etc/my.cnf
    [mysql]
    
    socket=/var/run/mysql-m/mysql-m.sock
    
    
    
    [mysqld]
    
    user=mysql
    
    port=3307
    
    basedir=/usr/local/mysql-m
    
    datadir=/opt/database-m
    
    socket=/var/run/mysql-m/mysql-m.sock
    
    pid-file=/var/run/mysql-m/mysql-m.pid
    
    
    
    [mysqld_safe]
    
    log-error=/var/log/mysql-m/mysql-m-error.log

     

  • 拷贝启动项

    cp /usr/local/mysql-m/support-files/mysql.server /etc/rc.d/init.d/mysql-m

     

  • 编辑启动项

    vim /etc/rc.d/init.d/mysql-m

                              
    #修改conf=/usr/local/mysql-m/etc/my.cnf保存退出

  • 安装
    执行

    /usr/local/mysql-m/scripts/mysql_install_db --basedir=/usr/local/mysql-m --datadir=/opt/database-m --user=mysql


    如果没有权限,执行下面语句:

     

  • 安装完成

  • 启动服务

    chkconfig --add mysql-m
    chmod 755 /etc/init.d/mysql-m
    service mysql-m start


    如下图所示:

  • 检测是否启动成功
    lsof -i:3307

安装 从mysql
步骤与安装主mysql类似

执行安装完成后,如图所示:

配置主从

  1. 修改配置文件
    vim /usr/local/mysql-m/etc/my.cnf,如下图所示


    修改完成后,重启:service mysql-m restart
    注意:如果这里只想同步一个数据库,可以单独设置:binlog-do-db=dbname

  2. 登录主库mysql,并给从授权
    #重置密码

    /usr/local/mysql-m/bin/mysqladmin -uroot password '123456'  -S /var/run/mysql-m/mysql-m.sock

    #登录

    /usr/local/mysql-m/bin/mysql -uroot -p123456 -S /var/run/mysql-m/mysql-m.sock

    #授权给从服务器

    mysql> grant replication slave on *.* jack1@localhost identified by '123456';
    
    mysql> grant replication slave on *.* jack2@localhost identified by '123456';
    
    mysql>flush privileges;

     

  3. 查看主的状态,并记录fileposition的值,后面要用

    file:mysql-bin.000001
    position:120
     

  1. 修改配置文件
    vim /usr/local/mysql-s/etc/my.cnf

    修改完成后,重启:service mysql-s restart
  2. 登录从库mysql,执行同步主从操作
    登录:
    /usr/local/mysql-s/bin/mysql -uroot -p -S /var/run/mysql-s/mysql-s.sock

    执行同步语句:
    change master to master_host='localhost', master_user='root', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=120, master_port=3307;


    start slave;

    如图:

 

验证

经过以上步骤,就安装配置完成mysql主从配置。查看主从状态如下图所示:


 

彩蛋

如果是从远端服务器访问数据库,比如阿里云。需要登录数据库后设置访问权限。

  1. 授权主机访问:
    MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; 

     

  2. 刷新权限:
    MySQL>FLUSH PRIVILEGES;

     

  3. 退出:
    MySQL>EXIT;

     

 

安装部署途中,遇到的问题参考博客:mysql-5.6.27源码安装及错误解决办法,特此鸣谢!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!