zoukankan      html  css  js  c++  java
  • Mysql系列三:Centos6下安装Mysql和Mysql主从复制的搭建

    一、Centos6下安装Mysql

    检测下系统有没有自带的mysql:yum list installed | grep mysql, 
    如果已经有的话执行命令yum -y remove mysql-libs.x86_64卸载已经安装的mysql。

    1. 系统约定

    安装文件下载目录:/data/software
    Mysql目录安装位置:/usr/local/mysql
    数据库保存位置:/data/mysql
    日志保存位置:/data/log/mysql

    2. 下载mysql

    执行如下命名:

    mkdir -p /data/software
    cd /data/software

     

    --下载安装包 

    在官网:http://dev.mysql.com/downloads/mysql/ 中,选择以下版本的mysql下载:

    wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

    说明:此时如果提示bash: wget: command not found,执行yum -y install wget,再执行wget下载命令

    3. 解压压缩包到目标位置

    cd /data/software

    --解压压缩包

    tar -xzvf /software/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

    --移动并修改文件名

    mv /software/mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql

    4. 创建数据仓库目录

    mkdir -p /data/mysql    

    5. 新建mysql用户、组及目录

    useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql     ---新建msyql用户禁止登录shell

     说明:这里如果提示useradd:“mysql”组不存在,执行groupadd mysql添加组以后再执行

    6. 改变目录属有者

    cd /usr/local/mysql
    chown -R mysql .
    chgrp -R mysql .
    chown -R mysql /data/mysql

     

    7. 配置参数

    bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

    说明:

    这里可能会报如下的错误

     

    解决方法:yum install -y libaio

     解决完错误以后继续执行:# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

     此处需要注意记录生成的临时密码,如上文结尾处的:)u!7G!Q3jZ>&

    继续执行:

    bin/mysql_ssl_rsa_setup  --datadir=/data/mysql

     

    8. 修改系统配置文件

    cd /usr/local/mysql/support-files
    cp my-default.cnf /etc/my.cnf
    cp mysql.server /etc/init.d/mysql

    
    vim /etc/init.d/mysql

    修改以下内容:

    9. 启动和远程连接mysql

    /etc/init.d/mysql start

    --登陆mysql

    mysql -hlocalhost -uroot -p

    说明:

    如果出现:-bash: mysql: command not found

    就执行: # ln -s /usr/local/mysql/bin/mysql /usr/bin --没有出现就不用执行

    --输入第6步生成的临时密码

    --修改密码

    mysql> set password=password('123456');

    --设置root账户的host地址(修改了才可以远程连接

    mysql>grant all privileges on *.* to 'root'@'%' identified by '123456';
    mysql>flush privileges;

    --查看用户信息

    mysql> use mysql;
    mysql> select host,user from user;

    --这里就可以使用远程连接测试了;

     

    10. Mysql操作命令

    --退出mysql命令窗口

    #exit

    --查看mysql状态

    #service mysql status

    --停止mysql

    #service mysql stop

    --启动mysql

    #service mysql start

    二、Mysql主从复制的搭建

    环境准备:

    首先把前面安装好mysql的虚拟机克隆一个作为mysql的从节点,克隆方法参照我的文章:学习Mysql过程中拓展的其他技术栈:设置linux虚拟机的固定ip和克隆linux虚拟机

    主库所在服务器IP地址为192.168.168.130,从库所在服务器IP地址为192.168.168.131

    1.  MySql主从复制原理

    mysql 主从复制原理:

    1). master 将操作记录到二进制日志(binary log)中;

    2). slave IO 线程 将master的binary log events读写到它的中继日志(relay log);

    3). slave SQL线程读取中继日志,将重做记录数据到数据库中。

    MySQL的主从同步是一个很成熟的架构,优点为:

    1) 在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;

    2) 在从主服务器进行备份,避免备份期间影响主服务器服务;

    3) 当主服务器出现问题时,可以切换到从服务器。

    2. 主库192.168.168.130设置

    修改主库my.cnf,主要是设置个不一样的server-id和log-bin,红色部分为新增部分。

    vim /etc/my.cnf
    [mysqld]
    datadir=/data/mysql
    #socket=/var/lib/mysql/mysql.sock
    #user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    log-bin=mysql-bin #需要启用二进制日志
    server-id=1 # 用于标识不同的数据库服务器
    binlog-ignore-db=information_schema #忽略记录二进制日志的数据库
    binlog-ignore-db=cluster #忽略记录二进制日志的数据库
    binlog-ignore-db=mysql #忽略记录二进制日志的数据库

    重新启动主库生效

    service mysql restart

    登录主库:

    mysql -hlocalhost -uroot -p

     

    赋予从库权限帐号:

    grant all privileges on *.* to '用户名'@'%' identified by '密码';

    本文建立的账户名称为root,密码为123456

     

    查看是否创建用户成功:

    select user,host from mysql.user;

     

    显示主库信息,记录File和Position,从库设置将会用到:

    show master status;

     

    3. 从库192.168.168.131设置

    修改从库配置文件/etc/my.cnf

    vim /etc/my.cnf
    [mysqld]
    datadir=/data/mysql
    #socket=/var/lib/mysql/mysql.sock
    #user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    #symbolic-links=0
    log-bin=mysql-bin #需要启用二进制日志
    server-id=2 #用于标识不同的数据库服务器
    binlog-ignore-db=information_schema #忽略记录二进制日志的数据库
    binlog-ignore-db=cluster #忽略记录二进制日志的数据库
    binlog-ignore-db=mysql #忽略记录二进制日志的数据库
    replicate-do-db=test #指定复制的数据库
    replicate-ignore-db=mysql #不复制的数据库
    #log-slave-updates #该从库是否写入二进制日志,如果需要成为多主则可启用。只读可以不需要
    #slave-skip-errors=all
    slave-net-timeout=60

    重新启动从库生效

    service mysql restart

    登录从库:

    mysql -u root -p

     

    停止从库: 

    stop slave;

     

     连接MASTER ,MASTER_LOG_FILE为主库的File,MASTER_LOG_POS为主库的Position:

     change master to master_host='192.168.152.130',master_user='root',master_password='123456',master_log_file='mysql-bin.000002', master_log_pos=434;

     

    说明:

    上述第命令语句中的master_log_file='mysql-bin.000002', master_log_pos=434;对应为前面在主库中执行的show master status;结果。

     启动从库服务:

    start slave;

     

    4. 测试主从复制是否生效

    在主库服务器上新建一个数据库test,然后在里面新建一张表

    create database test; 
    use test;
    CREATE TABLE `myTest` (
    
         `id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
    
         `username` VARCHAR( 20 ) NOT NULL ,
    
         `password` CHAR( 32 ) NOT NULL ,
    
         `last_update` DATETIME NOT NULL ,
    
         `number` FLOAT( 10 ) NOT NULL ,
    
         `content` TEXT NOT NULL ,
    
         PRIMARY KEY ( `id` )
    
         ) ENGINE = MYISAM ;

    在从库查看主库新建的表是否存在:

     

    可以看出从库与主库中信息一致,主从配置成功。为了更进一步验证在从库上输入show slave statusG

     

    Slave_IO_Running: Yes(网络正常);

    Slave_SQL_Running: Yes(表结构正常)

    进一步验证了以上过程的正确性。

    参考文章:

    1. centos6下安装mysql:https://www.cnblogs.com/jr1260/p/6590232.html

    2. CentOS 6.5 下MySql主从、主主配置:https://www.cnblogs.com/whutxldwhj/p/5970540.html

  • 相关阅读:
    idea 使用
    scala
    Java开发工具
    ActiveMQ基础
    Java 多线程实战
    Java 内部类和Lambda
    Spring 学习
    平滑重启php
    opcache
    redis的hscan命令
  • 原文地址:https://www.cnblogs.com/leeSmall/p/9440049.html
Copyright © 2011-2022 走看看