zoukankan      html  css  js  c++  java
  • 24.Mysql高级安装和升级

    24.Mysql高级安装和升级
    24.1 Linux/Unix平台下的安装
    24.1.1 安装包比较
    Linux下的Mysql安装包分为RPM包、二进制包、源码包3种。
    RPM包优点是安装简单,适合初学者;缺点是默认路径不能修改,服务端和客户端分别安装,一台服务器只能安装一个Mysql。
    RPM包文件布局:/usr/bin/mysql客户端程序和脚本,/usr/sbin/mysqld服务器,/var/lib/mysql日志文件和数据库,
    /usr/share/doc/packages文档,/usr/include/mysql头文件,/usr/lib/mysql库文件,
    /usr/share/mysql错误日志和字符集文件,/usr/share/sql-bench基准程序。
    二进制包优点是安装简单,可以安装至任何路径下,一台服务器可以安装多个Mysql;缺点是性能不如源码编译的好,不能指定编译参数。
    二进制包文件布局:bin客户端程序和mysqld服务器,data日志文件和数据库,
    docs文档,include头文件,lib库文件,scripts安装脚本,
    share/mysql错误日志和字符集文件,sql-bench基准程序。
    源码包优点是按需定制编译,性能好,一台服务器可安装多个Mysql;缺点是安装过程复杂,需要手动编译。
    源码包文件布局:bin客户端程序,libexec mysqld服务器,var日志文件和数据库,
    info文档,include/mysql 头文件,lib/mysql 库文件,
    share/mysql错误日志和字符集文件,sql-bench基准程序。

    24.1.2 安装RPM包
    分别下载客户端和服务端rpm包,文件名格式:
    Mysql-包类型(server或client)-版本类型(社区版或企业版)-版本号-0.操作系统类型.cpu类型.rpm
    安装命令:rpm -ivh 文件名
    说明:
    -i install 安装
    -v verbose 输出信息
    -h hash 安装进度
    例子:
    rpm -ivh MySQL-server-community-5.7.24-0.centos.i386.rpm
    rpm -ivh MySQL-client-community-5.7.24-0.centos.i386.rpm

    24.1.3 安装二进制包
    增加mysql用户和组:
    # groupadd mysql
    # useradd -g mysql mysql
    解压并创建软连接:
    # tar -xzvf /home/mysql/mysql-VERSION-OS.tar.gz
    # ls -s mysql-VERSION-OS mysql
    在数据目录下创建系统数据库和系统表,--user用来指定创建库和表的所有者
    # cd mysql
    # scripts/mysql_install_db --user=mysql
    设置目录权限,将data目录owner改为mysql,其它目录和文件owner为root
    # chown -R root:mysql
    # chown -R mysql:mysql data
    启动Mysql
    # bin/mysqld_safe --user=mysql &

    24.1.4 安装源码包
    增加mysql用户和组:
    # groupadd mysql
    # useradd -g mysql mysql
    解压源码包并进去解压后的目录:
    # tar -xzvf /home/mysql/mysql-VERSION-OS.tar.gz
    # gunzip < mysql-VERSION-OS.tar.gz |tar -xvf -
    # cd mysql-VERSION-OS
    使用configure工具编译,并指定安装目录
    # ./configure --prefix=/usr/local/mysql
    # make
    # make install
    设置配置文件/etc/my.cnf
    在数据目录下创建系统数据库和系统表,--user用来指定创建库和表的所有者
    # cd /usr/local/mysql
    # bin/mysql_install_db --user=mysql
    设置目录权限,将var目录owner改为mysql,其它目录和文件owner为root
    # chown -R root .
    # chown -R mysql var
    # chgrp -R mysql .
    启动Mysql
    # bin/mysqld_safe --user=mysql &

    24.1.5 参数设置方法
    mysql参数文件my.cnf可以被放置在多个路径,
    搜索顺序为/etc/my.cnf --> $MYSQL_HOME/my.cnf --> 用--defaults-extra-file=path指定的文件 --> ~/.my.cnf ,
    搜索顺序靠后的文件参数会覆盖靠前的文件参数,避免歧义建议只保留/etc/my.cnf。
    参数设置方法分为3种:
    session级:只对本session有效,新连接无效
    mysql> set param_name=value;
    global级:对所有连接有效,重启mysql失效
    mysql> set global param_name=value;
    文件级:重启后生效
    修改my.cnf文件,并重启mysql。

    24.2 源码包安装的性能考虑
    24.2.1 去掉不需要的模块
    查看编译配置所有选项:
    # ./configure -help
    不安装服务端(只安装客户端):
    # ./configure --without-server
    修改安装路径(默认安装路径/usr/local)
    # ./configure --prefix=/usr/local/mysql
    只修改数据文件路径(mysql其它内容仍在默认安装路径)
    # ./configure --prefix=/usr/local localstatedir=/usr/local/mysql/data
    修改socket的默认位置:
    # ./configure --with-unix-scoket-path=/usr/local/mysql/tmp/mysql.sock

    24.2.2 只选择要使用的字符集
    修改默认字符集:
    # ./configure --with-charset=CHARSET
    修改默认排序规则:
    # ./configure --with-collation=COLLATION
    扩展字符集(只安装需要的字符集):
    # ./configure --with-extra-charsets=LIST|complex|all
    说明:
    LIST指以空格分隔的一组字符集名称;
    complex指不能动态装载的所有字符集;
    all指所有字符集。

    24.2.3 使用静态编译以提高性能
    # ./configure --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
    说明:
    --with-client-ldflags=-all-static 以纯静态方式编译客户端
    --with-mysqld-ldflags=-all-static 以纯静态方式编译服务端

    24.3 升级Mysql
    升级时原数据库停止DML操作,并保证字符集一致。
    思路:先安装新版本数据库,从原数据库导出数据和表结构,再导入到新数据库中。
    方法1:通过管道导出导入数据库
    先安装新版本数据库,并创建同名数据库(模式)
    mysql> create database db_name;
    导出原数据库数据和表结构
    # mysqldump --opt db_name > filename
    在新数据库导入
    mysql -h hostname -p port -u user -p password db_name < filename
    通过管道一次导入导出
    # mysqldump --opt db_name | mysql -h hostname -p port -u user -p password db_name
    说明:
    --opt 表示采用优化方式进行导出,如--compress压缩。
    升级权限表#mysql_fix_privilege_tables
    重启mysql。
    方法2:使用--tab的方式导出导入数据库
    #mkdir dumpdir 创建导出目录
    #mysqldump --tab=dumpdir db_name 导出文件不是SQL,而是建表语句和数据纯文本
    #mysqladmin create database db_name 创建新的数据库
    #cat dumpdir/*.sql | mysql db_name 执行建表语句
    #mysqlimport db_name dumpdir/*.txt 加载数据
    #mysql_fix_privilege_tables 升级权限表
    重启mysql。
    方法3:MyISAM存储引擎可直接拷贝数据文件
    从原数据库拷贝.frm.MYD.MYI文件到新数据库即可。

    24.4 Mysql降级
    思路:先安装低版本数据库,从原数据库导出数据和表结构,再导入到新数据库中。

    24.5 小结

  • 相关阅读:
    java实现万年历
    XCTF 逆向 re1-100
    iOS多线程开发之GCD
    Hexo Next统计文章访问量
    Name/Value 配對和物件
    Mac系统Git生成ssh公钥
    《大话数据结构》三
    C++指针和引用
    英语语法讲解第一课句子成分-表语
    String-mainipulation7
  • 原文地址:https://www.cnblogs.com/BradMiller/p/10246403.html
Copyright © 2011-2022 走看看