zoukankan      html  css  js  c++  java
  • 免编译二进制安装mysql5.7

    环境:centos 6.9 x64
    先下载mysql安装包
    选择 linux - Generic
    下载完毕后,得到安装包 mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
    此包不再需要make编译源代码(真是扛扛的),之前的mysql-5.6.4.tar.gz包是源码包,需要先cmake,再make & make install
    上传到centos6.9的/apps目录下(可以改为你需要的目录,这里只是举例)
    ssh登录到centos6.9,开始执行以下命令
    查找出系统自带的mysql RPM包,卸载掉
    rpm -qa |grep -i mysql
    rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
     
    提取需要安装依赖库:
    yum install -y gcc-c++
    yum install -y numactl.x86_64
    yum install -y libaio
    yum install -y openssl-devel
     
     
    1.解压tar包

    cd /apps
    tar -xzvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
    mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql
     
    2.添加用户与组

    groupadd mysql
    useradd mysql -g mysql
    chown -R mysql:mysql mysql
     
    3.安装数据库,初始化

    su mysql
    cd mysql/
    bin/mysqld --defaults-file=/apps/mysql/my.cnf --initialize-insecure --user=mysql --basedir=/apps/mysql --datadir=/apps/mysql/data/
     
    exit
     
    执行以下命令创建 RSA private key
    bin/mysql_ssl_rsa_setup --datadir=/apps/mysql/data
     
    修改data 目录拥有者为 mysql
    chown -R mysql:mysql /apps/mysql/data
     
    4.配置文件

    cd /apps/mysql/support-files
    上传 my.cnf 到 /apps/mysql/my.cnf #这一步的my-default.cnf 在mysql 5.7 版本中没有发现,
    cp mysql.server /etc/init.d/mysql
    vim /etc/init.d/mysql #若mysql的安装目录是/usr/local/mysql,则可省略此步
    修改文件中的两个变量值
    basedir=/apps/mysql
    datadir=/apps/mysql/data
     
    5.配置环境变量

    vim /etc/profile
    export MYSQL_HOME="/apps/mysql"
    export PATH="$PATH:$MYSQL_HOME/bin"
     
    保存退出
    source /etc/profile
     
    6.添加自启动服务

    chkconfig --add mysql
    chkconfig mysql on
     
    7.启动mysql

    service mysql start
     
    启动成功后,重启系统
     
    8.登录mysql及改密码与配置远程访问

    mysqladmin -u root password 'your_password' #修改root用户密码
    mysqladmin:command not found解决方法:ln -s /mysql安装路径/bin/mysqladmin /usr/bin
    set Password=PASSWORD('daoran1203');
    set password for 'root'@'localhost' = PASSWORD('newpass');
    update user set password=PASSWORD('newpass') where user='root';
     
    mysql 5.7 修改密码:
    update mysql.user set authentication_string=password('daoran1203') where User='root';
    flush privileges;
     
    mysql -u root -p #登录mysql,需要输入密码
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'daoran1203' WITH GRANT OPTION; #允许root用户远程访问并有授权的权限 your_password
    mysql>FLUSH PRIVILEGES; #刷新权限
    mysql>exit
     
    9、开放防火墙3306端口:
    #iptables -I INPUT -p tcp --dport 3306 -j ACCEPT #开启3306端口
    service iptables save #保存防火墙规则
    service iptables restart #重置防火墙规则
     
    -------------------------------------------------------------------------------------------------
    1.MySQL多实例介绍
    1.1.什么是MySQL多实例
    MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务;
    1.2.MySQL多实例的特点有以下几点
    1:有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。
    2:节约服务器资源
    3:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降;
    1.3.部署mysql多实例的两种方式
    第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;
    第二种是通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;
    1.4.同一开发环境下安装两个数据库,必须处理以下问题
    • 配置文件安装路径不能相同
    • 数据库目录不能相同
    • 启动脚本不能同名
    • 端口不能相同
    • socket文件的生成路径不能相同
    但有一点需要说明的是:第3个参数文件的缺省路径指的是basedir(安装目录),可通过它来隔离各实例的参数文件,因此一台服务器也就可搭建多个MySQL实例了。
    2.Mysql多实例安装部署
    2.1.部署环境
    Red Hat Enterprise Linux Server release 6.9
    2.2.安装mysql软件版本
    2.2.1.免编译二进制包
    mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
     
    ――解压安装包
    将二进制安装包解压到/apps/目录中,并改名为mysql,这是二进制包编译时basedir参数的缺省目录。
    # tar zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz -C /apps/
    # cd /apps/
    # mv mysql-5.6.40-linux-glibc2.12-x86_64 mysql
    ――拷贝解压后的mysql,生成如下两个文件夹,以用作两个实例的安装目录
    # cd /apps/
    # cp -r mysql mysql3307
    # cp -r mysql mysql3308 (注意/mysql3308/data/auto.cnf要删掉)
    # ll
    drwxr-xr-x 12 root root 4096 Sep 27 14:33 mysql
    drwxr-xr-x 12 root root 4096 Sep 27 14:36 mysql3307
    drwxr-xr-x 12 root root 4096 Sep 27 14:37 mysql3308
    备注:此处保留mysql这个目录,是为了配置硬连接,以便在任何目录下,都可以访问mysql客户端程序。
     
    #chown -R mysql:mysql mysql
    #chown -R mysql:mysql mysql3307
    #chown -R mysql:mysql mysql3308
     
    2.3 创建系统数据库
    为两个MySQL实例创建系统数据库,basedir分别为/apps/mysql3307、/apps/mysql3308,datadir分别为/apps/mysql3307/data、/apps/mysql3308/data,如下:
    # cd /apps/mysql/scripts
    # ./mysql_install_db --user=mysql --basedir=/apps/mysql3307 --datadir=/apps/mysql3307/data
    # ./mysql_install_db --user=mysql --basedir=/apps/mysql3308 --datadir=/apps/mysql3308/data
     
    3. 配置参数文件
    为了使每个MySQL实例拥有独立的参数文件,将其存放在各自的安装目录下(basedir),且需保证缺省路径下不存在参数文件,以防读取错误。
    假设参数文件已配置好,端口分别为3307、3308,basedir分别为/apps/mysql3307、/apps/mysql3308 ,datadir分别为/apps/mysql3307/data、/apps/mysql3308/data。
    #vim /apps/mysql/my.cnf
    [client]
    socket=/apps/mysql/mysql.sock
     
    [mysqld]
    basedir = /apps/mysql
    datadir = /apps/mysql/data
    port = 3306
    server_id = 1
    socket = /apps/mysql/mysql.sock
    pid-file = /apps/mysql/data/linux-node4.example.com.pid
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
     
    #vim /apps/mysql3307/my.cnf
    [client]
    socket=/apps/mysql3307/mysql.sock
     
    [mysqld]
    basedir = /apps/mysql3307
    datadir = /apps/mysql3307/data
    port = 3307
    server_id = 2
    socket = /apps/mysql3307/mysql.sock
    pid-file = /apps/mysql3307/data/linux-node4.example.com.pid
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
     
    #vim /apps/mysql3308/my.cnf
    [client]
    socket=/apps/mysql3308/mysql.sock
     
    [mysqld]
    basedir = /apps/mysql3308
    datadir = /apps/mysql3308/data
    port = 3308
    server_id = 3
    socket = /apps/mysql3308/mysql.sock
    pid-file = /apps/mysql3308/data/linux-node4.example.com.pid
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
     
    4. 启动实例
    这种情况下,可在启动实例时通过--defaults-file为其指定一个参数文件,如下:
    # mysqld_safe --defaults-file=/apps/mysql3307/my.cnf &
    # mysqld_safe --defaults-file=/apps/mysql3308/my.cnf &
    关闭实例时,同样需要指定其参数文件,否则会失败。
    # mysqladmin --defaults-file=/apps/mysql3307/my.cnf shutdown
    # mysqladmin --defaults-file=/apps/mysql3308/my.cnf shutdown
     
    5. 修改为服务管理方式(这步配置成功,就不用第4步骤启动实例那么麻烦了)
    二进制包没有采用缺省参数文件,所以修改为服务管理方式稍微有点复杂,需要修改服务启动文件中的basedir、datadir参数,如下:
    ――拷贝服务文件
    # cp /apps/mysql/support-files/mysql.server/etc/rc.d/init.d/mysql3307
    # cp /apps/mysql/support-files/mysql.server/etc/rc.d/init.d/mysql3308
    ――添加服务
    # chkconfig --add mysql3307
    # chkconfig --add mysql3308
    ――修改服务启动文件
    编辑两个服务启动文件,修改basedir、datadir参为合适的路径,如下:
    # vi /etc/rc.d/init.d/mysql3307
    basedir=/apps/mysql3307
    datadir=/apps/mysql3307/data
     
    # vi /etc/rc.d/init.d/mysql3308
    basedir=/apps/mysql3308
    datadir=/apps/mysql3008/data
    备注:通过显式设置basedir,以使每个MySQL实例拥有独立的参数文件。
    ――启动服务
    # service mysql3307 start
    Starting MySQL.. [ OK ]
    # service mysql3308 start
    Starting MySQL.. [ OK ]
    # service mysql3307 status
    MySQL running (30326) [ OK ]
    # service mysql3308 status
    MySQL running (29755) [ OK ]
    修改为服务管理方式后,启动、关闭服务方便了,
     
    但在本地登录数据库,还需指定socket文件,因为缺省的/apps/mysql3307/mysql.sock并不存在,如:
    # mysql -uroot -p -S /apps/mysql3307/mysql.sock
    # mysql -uroot -p -S /apps/mysql3308/mysql.sock
     
    -------------------------------------------------------------------
    mysql主从复制配置
    在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的。譬如服务器发生故障,
    没有备份服务器来提供服务的话,业务就得停止.
    mysql主从复制用途
    • 实时灾备,用于故障切换
    • 读写分离,提供查询服务
    • 备份,避免影响业务
     
    主从部署必要条件:
    • 主库开启binlog日志(设置log-bin参数)
    • 主从server-id不同
    • 从库服务器能连通主库
    原理:
    从库生成两个线程,一个I/O线程,一个SQL线程;
    i/o线程去请求 主库 的binlog,并将得到的binlog日志写到relay log(中继日志)文件中;
    主库会生成一个log dump 线程,用来给从库 i/o线程传binlog;
    SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
     
     
    mysql主从复制存在的问题:
    • 主库宕机后,数据可能丢失
    • 从库只有一个sql Thread,主库写压力大,复制很可能延时
     
    解决方法:
    • 半同步复制---解决数据丢失的问题
    • 并行复制----解决从库复制延迟的问题
     
    主从复制配置如下:
    在主服务器上操作:
    1、确保/etc/my.cnf中有如下参数,没有的话需手工添加,并重启mysql服务。
    [mysqld]
    log-bin=mysql-bin #启动二进制文件
    server-id=1 #服务器ID
     
    2、登录mysql,在mysql中添加一个backup的账号,并授权给从服务器。
    [root@localhost ~]# mysql -uroot –p
    mysql> grant replication slave on *.* to 'backup'@'192.168.56.%' identified by 'backup';
    #创建backup用户,并授权给192.168.48.130使用。
    msyql> flush privileges;
     
    3、查询主数据库状态,并记下FILE及Position的值,这个在后面配置从服务器的时候要用到。
    mysql> show master status;
     
    在从服务器上操作:
    1)、确保/etc/my.cnf中有log-bin=mysql-bin和server-id=1参数,并把server-id=1修改为server-id=10。修改之后如下所示:
    [mysqld]
    log-bin=mysql-bin #启动二进制文件
    server-id=10 #服务器ID
    2)、重启mysql服务。
    [root@localhost ~]# service mysql restart
     
    3)、登录mysql,执行如下语句
    [root@localhost ~]# mysql -uroot –p
    mysql> change master to master_host='192.168.56.14',master_port=3307,master_user='backup',master_password='backup',master_log_file='mysql-bin.000003',master_log_pos=401;
     
     
    说明:红色标注的根据主服务器实际参数填写
    4)、启动slave同步。
    mysql> start slave;
     
    验证配置是否正常,mysql主从能否正常复制。
    在主数据库上新建一个库,并且在库中写一个表和一些数据。
    [root@localhost ~]# mysql -uroot –p123456
    mysql> create database mysqltest;
    mysql> use mysqltest;
    mysql> create table user(id int(5),name char(10));
    mysql> insert into user values (00001,'zhangsan');
     
    在从数据库中验证一下,是否正常复制到数据。
    [root@localhost ~]# mysql -uroot –p123456
    mysql> show databases;
    mysql> select * from mysqltest.user;
    从上图中的结果,我们可以看到mysql主从复制已经在起作用了,我们在主数据库中写入的数据
    已经复制到我们的从数据库中了。
     
  • 相关阅读:
    【BZOJ】【1662】/【POJ】【3252】 【USACO 2006 Nov】Round Number
    【BZOJ】【1026】【SCOI2009】Windy数
    【HDOJ】【3555】Bomb
    【HDOJ】【2089】不要62
    【Ural】【1057】Amount of degrees
    【POJ】【3710】Christmas Game
    【BZOJ】【2940】【POI2000】条纹
    【POJ】【3537】Crosses and Crosses
    【POJ】【2068】Nim
    【POJ】【2960】S-Nim
  • 原文地址:https://www.cnblogs.com/a591378955/p/9635940.html
Copyright © 2011-2022 走看看