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. C#自制Web 服务器开发:用C#开发自己的Web服务器

    当输入: GET / HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: zh-CN User-Agent: ...

  2. EF 安装框架

    在NuGet中安装ef框架 命令:Install-package EntityFramework

  3. Oracle Error

    1. TNS:listener does not currently know of service requested in connect descriptor 数据库连接出错

  4. 吴裕雄 oracle 管理数据表对象

  5. pycahrm 激活

    Linux在/etc/hosts中添加 0.0.0.0 account.jetbrains.com就好,直接添加:0.0.0.0 account.jetbrains.comwindows的话没记错应该 ...

  6. vs2017中char* str = "1234asd56";会报错,——const char*类型的值不能用于初始化char*类型的实体

    原因: "1234asd56"是常量 ,正确的写法本身就是:const char* str = "1234asd56"; 之所以之前的vs版本可以写成char* ...

  7. oracle 连接池参数

    后来排查出数据库监听异常,发现是ORA-12519拒绝错误.后来发现是数据的连接池达到的极致. 具体解决方案如下: --首先检查process和session的使用情况,在sqlplus里面查看. S ...

  8. Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources 在我的myeclipse中新建maven工程总出现这个问题

    只需在下图中更改代码 更改后是这样的: <plugin> <groupId>org.apache.maven.plugins</groupId> <artif ...

  9. app.route()

    [app.route()] 可使用 app.route() 创建路由路径的链式路由句柄.由于路径在一个地方指定,这样做有助于创建模块化的路由,而且减少了代码冗余和拼写错误.请参考 Router() 文 ...

  10. ELK 日志学习

    一.Elasticsearch 安装(所有的版本均使用5.5.0 ,且版需要相同 logstash \ kibana \ filebeat ) 官网下载地址:https://www.elastic.c ...