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 小结

24.Mysql高级安装和升级的更多相关文章

  1. mysql二进制安装,升级,多实例部署

    目标 理解线上部署考虑的因素 学会编译安装以及二进制安装mysql 学会升级mysql 学会多实例部署mysql数据库 学会合理部署mysql线上库   考虑因素: 版本选择,5.1,5.5还是5.6 ...

  2. Centos MySQL 5.7安装、升级教程

    MySQL 5.7安装.升级笔记分享: 卸载当前的 MySQL 查看当前 MySQL 版本: ? 1 2 [root@coderknock ~]# mysql -V mysql Ver 14.14 D ...

  3. MySQL Yum存储库 安装、升级、集群

    添加MySQL Yum存储库 首先,将MySQL Yum存储库添加到系统的存储库列表中.按着这些次序: 在http://dev.mysql.com/downloads/repo/yum/上转到MySQ ...

  4. ubuntu下卸载旧Mysql并安装新Mysql(升级)

    由于从apt-get下安装的Mysql不是最新版的,所以,需要升级.先卸载,再安装. 1.卸载 先看mysql是否在运行: netstat -tap | grep mysql 然后 sudo apt- ...

  5. Linux高级命令及mysql数据安装

    Linux系列--高级命令--mysql数据库安装 数据库是用来组织.存储和管理数据的仓库 1.安装数据库:执行命令yum -y install mysql -server 2.启动数据库:安装完毕, ...

  6. MySQL高级学习笔记(一):mysql简介、mysq linux版的安装(mysql 5.5)

    文章目录 MySQL简介 概述 mysql高手是怎样炼成的 mysq linux版的安装(mysql 5.5) 下载地址 拷贝&解压缩 检查工作 检查当前系统是否安装过mysql 检查/tmp ...

  7. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  8. MySql免安装版安装配置,附MySQL服务无法启动解决方案

          文首提要:             我下载的MySQL版本是:mysql-5.7.17-winx64.zip  Archive版:系统:Windows7 64位. 一.解压文件 下载好My ...

  9. [转]mysql免安装版配置

    现在mysql有一个installer,相当于安装包管理器.包含mysql的各个组件,比如workbench,各个语言的connector.十分方便,不用就可惜了.实在没有必要下载zip版,自己配置. ...

随机推荐

  1. eclipse egit(版本回退)

    在公司一年多了,用到的项目都是用svn代码托管,没有git 的用武之地,趁国庆假期稍微自学了一下,然后人比较懒,不愿用原生敲命令行的形式,就在eclipse上学学怎么用git,话说回来用了svn再来学 ...

  2. 同时启动多个Tomcat 和 Linux部署多个tomcat

    a.减压2份tomcat文件 b.修改其中一个tomcat 的http访问端口(默认为8080端口,这里改为8091) c.修改其中一个tomcat 的Shutdown端口(默认为8005端口,这里改 ...

  3. java基本数据间转换

    string=====>int int x = Integer.parseInt(“1111”); string=====>char char x = request.getParamet ...

  4. SAP字段带空格,导致日期转换失败,提示not a vaild month

    执行此节点会报以下错误,ORA-01843,no a valid month,提示月份转换异常 尝试增加条件也仍然提示错误:and VBEP.EDATU<>'00000000' and V ...

  5. ES5新增数组方法every()、some()、filter()、map()

    JavaScript ES5标准中新增了一些Array方法,如every().some().filter().map().它们的出现使我们能够更加便利地操作数组,但对IE9以下浏览器的兼容性比较差.下 ...

  6. day28 网络协议OSI 及socket模块

    反射都是操作对象中的__dict__的内容 class Student: def study(self): print("正在学习....") stu = Student() if ...

  7. .net连接MySql 出错

    1>C#连接MySQL异常:The host localhost does not support SSL connections. 需要在连接字符串加入:SslMode = none;即可解决 ...

  8. css设置input不显示光标

    把光标颜色设置为透明色和父类一样就看不出来了,就好像取消了 caret-color: transparent; 设置了这个属性后,无论如何点击都好像没有光标似的

  9. LinearLayout 线性布局

    android:orientation 设置布局管理器内组件的排列方式,可设置为 horizontal (水平排列).vertical (垂直排列) android:gravity 设置布局管理器内组 ...

  10. 网页请求get方式

    方法都是博客中的大神写的,谢谢各路大神. 方法一:(亲测有效) //Get请求方式 private string RequestGet(string Url) { string PageStr = s ...