第24章-启动 停止 和配置mysql

这个章节 讨论执行调用安装和配置MYSQL 有以下几个方面


MYSQL可用的类型描述


在Windows上启动和停止MYSQL


启动和停止在UNIX 上


指定服务器运行配置选项


日志和状态文件


加载time zone表用于时区支持




安全相关的配置选型


设置默认的SQL模式


升级MYSQL


这个章节覆盖一般的启动停止MYSQL的方法。重要的是假设MYSQL已经安装好了,不涉及安装过程。




这些细节可以在安装章节找到。




24.1  MYSQL 类型分布




MYSQL 适用于多种操作系统 覆盖了Windows和Unix




你可以安装MYSQL 从一个按进制的预编译的程序来安装


24.1.1  MYSQL 2进制描述


在Windows上,你可以选择这些类型的2进制描述:






在Unix 上你可以选择这些类型的2进制安装:


RPM包在Linux上是可用的,通过rpm安装命令。




tar文件 是用于很多各种各样的Unix和Unix类似的系统,安装这种类型的分配,解开通过调用tar命令






24.1.2 MYSQL 源代码描述:


前面的章节描述了预编译的2进制文件, 这里有几个优点使用2进制的MYSQL,






一个显著的好处是2进制产生的MYSQL 能提供更好的性能相比你自己创建的






MYSQL 有大量的处理经验选择配置选项 比如 编译器切换来产生更优化的2进制








在许多情况下,MYSQL 使用商业的编译器来产生高质量的代码相比编译器典型可用的用于某种目的使用




在有些情况下,MYSQL 产生编译的2进制用库文件,提供了 超出那些标准系统向导库的功能。






也可以使用创建MYSQL 通过编译源代码。尽管预编译版本有优势,但是也有一些原因你回选择自己来编译MYSQL:




1.没有2进制发布版本可用在你的平台上,在这种情况下,你只能选择源代码




2.你需要一个功能不在预编译发布版本里,比如一个debug支持 或者你要关闭一个你不需要的功能,






让服务器使用更少的内存。你可以关闭额外的存储引擎,选择你需要的字符集。




3.2进制版本只针对于发布的版本,不针对很傲的开发源代码






24.3  在Unix上启动和停止MYSQL


MYSQL 运行在很多Unix 和类Unix系统上,包括那些基于BSD的unix系统


这个章节描述常规的程序。主题包括了先决条件来检查在MYSQL运行前,安排服务器的启动和关闭。




在UNIX上,最好使用专用的登录用户和组来管理和运行MYSQL服务器




因此它可以运行带权限的相比那些使用root登录。在学习环境, 假设用户和组都是Mysql






在尝试启动MYSQL服务器前,你必须确认所有东西已经被安装, 这里有一个login 账号来用于管理和运行服务器




你必须初始化数据目录如果有必要的话




在Unix上,预编译的MYSQL版本以RPM包或者压缩的tar文件存在。




RPM包用于LINUX 系统 tar包在很多平台都可以用。






RPM安装MYSQL 典型需要多于一个RPM包文件 ,因为被分布到不同的RPM包。




最重要的RPM包文件是server和client 程序,因此最小化安装,你通常只安装这两个。




如果你需要运行 全部version的server,你需要安装其他的RPM包




RPM包的安装过程,设置一个登陆账号,它也安装所有的文件,


初始化数据目录和MYSQL数据库半酣的初始账号




注册启动脚本 在/etc/init.d 目录,启动服务器


server 安装在/usr/sbin  数据目录创建在/var/lib/sql.




一个tar 文件发布是被解开,比如, 如果你又一个发布的叫做


mysql-max-5.0.10-beta-sun-solaris2.9-sparc.tar.gz






你可以解压在/usr/local 来创建子目录




24.3.2  选择一个server的启动方式


服务器启动有多种不同的方法:




1.你可以手动的调用mysqld,这种通常不做除非debugging 目的。




如果你用这种方式调用,错误信息会打在终端上




2. mysqld_safe 是一个shell脚本用于调用mysqld 这个脚本设置错误日志,




发起mysqld 监控它  如果mysqld 异常断开,mysqld_safe 自动重启它


3.mysql.server 是一个shell脚本调用mysqld_safe. 它被用于作为一个包装器在mysqld_safe


用于linux 系统


通常这个脚本被重命名为Mysql 




mysqld_multi 是一个perl脚本用于方便管理多个mysql server 在一个单独的机器上






让mysql server 在系统启动的时候自动启动,一个相应的启动脚本必须安装:


在BSD类型的Unix系统,最通用的是调用mysqld_safe 启动脚本


比如放在/etc/rc.local 文件






Linux 系统有运行级别的目录在/etc/init.d 使用mysql.server脚本




如果服务器没有正常启动,查看err日志 默认的错误日志名字为host_name.err 在数据目录








手动停止服务器,室友下面的一种技巧:


1. mysqladmin 程序 有一个shutdown 命令。它连接到server 作为一个客户端,




mysql_multi 脚本有停止命令 可以关闭任何一个server 通过调用mysqladmin




mysal_safe 没有shutdown 的能力,你可以使用mysqladmin关闭来代替






如果你强制的通过kill -9 杀死mysqld 那么mysqld_safe 会检测到mysqld 异常中断会重启它






你可以先杀死mysqld_safe在kill mysqld  最好还是使用mysqladmin来关闭 ,正常关闭。






mysqld_multi 脚本可以用户管理多个mysql 服务器。然而, MYSQL当前发现了另外一个程序叫做


MySQL Instance Manager来管理多个服务器,这个程序提供了一些明显的改进相比mysqld_multi








mysqld_multi 可以停止本地的或者远程的mysql server 但是只能启动本地的




但是Mysql Instance Manger 可以启动远程的server




而且可以跨平台




mysqld_multi 需要PERL DBI模块  但是Mysql Instance Manager 是单独的2进制文件




24.4  运行MYSQL 配置


默认情况下,server 使用内置的值来配置变量,如果默认的值不合适,你可以使用runtime选项


来告诉服务器使用不同的值:




1.几个选项指定了重要目录和文件的位置。比如 在WINDOWS上


内置的默认变量比如installation directory(base directory)是C:mysql


如果你安装MYSQL在其他地方,你必须告诉server 正足额的位置 


通过使用--basedir 选项 相似的,如果你使用数据目录 你必须使用--datadir选项来告诉服务器正确的位置。


1.选项控制server 写的日志文件




2.选项 可以用于覆盖sever内建的值用于性能相关的变量


比如控制最大并发连接  或者Buffer 和 cache 的大小。


3.一些内置的存储引擎可以在启动的时候开始或者关闭,比如:


如果server 已经用InniDB支持编译(默认设置)


--skip-innode 选项 可以节约内存如果你没有使用InnoDB 表。


你也可以指定默认的存储引擎与内建的不同 比如使用MyISAM


一些选择的配置在InnoDB表空间。如果InnoDB启用,它创建一个默认的表空间


缺省的表空间相对下,最好自己配置你的表空间








这个章节的例子集中选择常规的目录和文件布局








你可以指定运行环境选项 当你启动server来改变它的配置和行为。




通常,选项可以指定通过命令行或者选项文件指定






常用的后台配置语法,运行在客户端程序 多数的也应用指定的server 选项


找出server支持的选项,调用下面的命令:


shell>mysqld --verbose --help






任何的server 选项显示在help信息里,可以通过命令行指定。




然而,通用的是写在选项文件里,有以下几个原因:






1. 把选项放到一个文件,你不需要每次指定它们在命令行 在你启动的时候




这个不止是便利, 更不大容易出错 对于负载的选项 比如那些配置InnoDB表空间。










如果你调用 server 使用mysql.server启动脚本,你不能指定server 选项在命令行。






如果你列出了所有服务器选项在单独的选项文件里




服务器查找选项文件在几个标准的位置  它会使用任何存在的,但不是错误由于一个选项文件丢失.




标准文件UNIX 和WINDOWS 不相同。


在WINDOWS 上 程序查询选项文件的顺序是 my.ini 和my.cnf 在Windows 目录下






在Unix上,搜索的顺序包括2个常规的选项文件


/etc/my.cnf 和 $MYSQL_HOME/my.cnf.  第2个文件只适用于当设置了MYSQL_HOME环境变量的时候。


典型的,你设置了MYSQL的安装目录(mysqld_safe 脚本尝试设置MYSQL_HOME 如果启动前没设置)






Unix 选项文件搜索的顺序包括 ~/.my.cnf  


.my.cnf 文件位于HOME目录下,然而,因为~/.my.cnf 是一个用户指定的文件,




它不是罪合适为位置用于server选项(通常,你调用server 作为mysql 或者root 带--user=mysql选项。


用户指定的文件依赖于哪个用户账号登陆 你调用,可能会导致不一致的设置)




为了指定server启动选型在一个文件里,使用[mysqld]选项组。如果文件不存在,


创建它作为一个纯文本。创建和修改一个选项文件,你必须有写的权限。


server 本身只需要读的权限,它读的选项文件但是不创建和修改它们。




下面的例子阐述了一些使用选项文件指定server选项的例子:


1.如果在Windows上安装MYSQL, 假设默认安装在C:mysql目录 数据目录被命名在安装目录下。




如果你安装MYSQL 在其他位置,比如E:mysql,你必须告诉server 位置用--basedir 选项。


在选项文件里 选项没有前面的破折号,


因此表明安装的目录,指定选项如下:


[mysqld]


basedir=E:/mysql




如果你使用数据目录 在E:mysql 作为数据目录,basedir的值告诉server 数据目录的位置


如果你使用不同的数据目录 你可以指定--datadir 选项


[mysqld]


basedir=E:/mysql


datadir = D:/mysql-data


配置选项写在/etc/my.cnf


mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &




 
注意 在这种清理下,你需要cory数据目录从安装目录copy到新的D:mysql-data目录


在你启动前,如果没有找到数据目录在你指定文件的地方,它将不会启动。




在Winodws pathname指定的任何选项


basedir=E:/mysql


basedir=E:\mysql




如果pathname 包含空格,使用双引号


basedir="C:/program Files/MYSQL/MYSQL Server 5.0"




在Windows,共享内存连接默认是不启用的 




24.5  Log和状态文件


MySQL Server 可以写信息到各种类型的log 文件。logs记录了各种类型的记录关于执行的SQL语句的记录:






1.通常的查询热值记录所有的SQL语句,查询日志默认不开


2.binary log 记录了对数据的修改




3. 慢查询的SQL的信息








那些日志可以用于查看操作状态,发生crash时的数据恢复,和复制需要,


帮你决定 哪些查询是慢的。






下面章节简单的描述每个日志和如何启用他们,尤其是查询日志可以变得很大。


因此,你没有必要启用他们,尤其是busy server.这是推荐的logging策略。


1. 启用了查询日志,bin-log 和慢查询日志 在你server初始的时候




2.当服务器已经配置你需要验证是够运行的平顺 ,关闭常规的查询日志来节约磁盘空间。




所有的日志被写入文本格式除了 binary log,是个2进制文件。




查看binary log 文件 使用mysqlbinlog功能


[mysql@master mysql]$ mysqlbinlog mysql-bin.000008


24.5.1  一般的查询日志:






一般的查询日志包含客户端连接和断开的记录,server收到的每条SQL语句(不管是否处理成功)




server 按照收到的顺序 把语句写入log 这些日志用于诊断给定类型语句的执行频繁程度




启用一般查询日志,使用--log 或则--log=file_name选项不过不指定file_name


默认的名字是host_name.log 


默认情况下,server 创建查询日志文件在数据目录下 除非你指定到其他地方。




24.5.2  Binary log








Binary log包含了数据修改的记录, 比如,server 记录了update 和delete语句到binary log




但是没有select 语句。只有被执行的语句才会被写入到binary log.






当事务已经提交后,多个语句事务被写入到group


也就是说,语句被记录为事务单元


日志已2进制格式存储,但是内容可以通过mysqlbinlog 功能查看


binary logs 用于联系master 和slave 复制 也可用于数据恢复。






启用binary log,使用--log-bin 或者--log-bin=file_name选项。




如果没有指定file_name ,默认的名字是host_name-bin.nnnnnn






host_name 表示server 的hostname ,nnnnnn表示server 写日志的序号




创建一个新的日志每次在server启动或者logs 被flushed的时候


(这意味着binary log 实际上有一组日志组成)


当启动binary log时,server 也创建一个binary log index 列出了当前的binary log files








24.5.3  慢查询日志:


慢查询日志包括那些长时间运行的SQL的文本, 也包括执行的状态信息。


默认, 长时间运行时指超过10s的sql. 可以通过参数long_query_time 参数设置,




[mysql@master ~]$ sh viewP.sh | grep long_query_time
long_query_time 10.000000




server 只有当完成SQL执行后才会写入,因为执行时间只有当执行完才知道




slow query log 对于定位需要优化的查询是有用的




启用slow query log 使用--log-slow-queries或者--log-slow-queries=file_name玄心




如果没有指定filename,默认的名字是host_name-slow.log


默认情况下 slow query log文件在数据目录下 


记录查询没有使用索引的,可以使用--log-queries-not-using-indexes选项。


24.5.4 错误日志


server 产生诊断信息关于启动和关闭,也关于异常的状况:


在Unix 环境,如果你直接的调用mysqld,它发出诊断信息到标准错误输出,通常是你的终端。


启动用--log-error=file_name选项来记录错误到指定的文件。


然而,它更有用当调用mysqld_safe脚本。


mysqld_safe创建错误日志 和启动server 的信息输出到error log


(因此,server 写到error log,但是不是它本身创建log file)


默认的error log 文件是host_name.err 在server的数据目录。




24.5.5状态文件:


server 创建几个状态文件. 有些默认位于数据目录下,但不是全部


server记录它的PID 在PID文件, 用于其他程序发送给server 信号


比如,在Unix上,处理器发送信息给其他使用process ID


mysqld_safe 就是使用这个方法。它查找PID文件来确定server 进程号


 


Unix server 创建一个Unix 的socket 文件 用于本地的客户端可以建立socket 连接


默认情况下,文件是/tmp/mysql.sock




24.6  加载 Time Zone Tables


mysql 在安装过程创建了一组time zone的表 在mysql数据里


在Unix 上,表在mysql_install_db 被执行时创建,或者自动在RPM包安装的时候 或者手动的在你安装tar包的时候




server 使用time zone 表来实现 time zones 比如Europe/Warsar.




然而,time zone 表被创建为空表,也就意味着,默认,被命名的time zones不能被使用。




为了使用这个功能,你必须加载tables.这是一个额外的配置过程,但是除非它被执行,


time zone 支持只限于SYSTEM zone 和数字zone 偏移量 比如 '+06:00'






操作系统他们有它们自己的time zone文件, 最好使用它们加载到MYSQL time zone 表,




确保系统和MYSQL time zones 是基于同样的信息。




很多Unix 系统有哪些文件,在/usr/share/zoneinfo.




对于这些系统,使用 mysql_tzinfo_to_sql程序来转换文件内容为SQL语句 加载到MYSQL


如果文件位于/usr/share/zoneinfo,命令是:


shell>mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot mysql


mysql安装的时候默认的time_zone是调用的操作系统本身的






一些系统没有time zone 文件,比如Windows 和HP-UX 对于这些cases,


MYSQL AB提供了描述


24.7  安全相关的配置


这个章节讨论server 启动选型,影响安全配置的各种方式。








章节别处也讨论了其它的安全主题。2个过程你需要执行来设置密码用于初始化MYSQL账号


它们存储在grant tables里,确保文件系统权限。




如果所有的客户端都是local clients,你可以关闭远程连接通过启动项


--skip-networking 选项来关闭TCP/IP连接,在这种情况下,




server 必须可以接受本地连接使用其他网络协议。




这个在UNIX 上不是问题,因为server 也接受通过unix sccket file 文件的连接。


servers mysql 4.1版本以上使用一个认证机制 是更加安全提供了更好的密码相比过去的版本。




最好的要做的事情是,如果可以的花,升级所有老版本的客户端,让它们可以使用新的认证机制。


如果这个不能做那么你的MYSQL SERVER 必须支持老的客户端




你必须配置它来兼容老的认证机制


24.8 设置默认的SQL 模式


MYSQL Server 有配置SQL模式的功能,提供了控制查询处理方便的东西


比如多少严格或者宽容的 server接受输入的数据,是否启动或者关闭相关的功能 对于标准SQL一致性








默认的,SQL模式值是空的,因此没有特定的限制或者一致性的行为是启动的




单独的客户端
可以配置他们自己需求的SQL mode,但是它默认是设置为默认的SQL mode 在服务器启动时


用--sql-mode 选项。




你可以运行server 使用更自己的关于接收错误数据的模式 或者创建MYSQL 用户账号。




比如,如果你启动了TRADITIONAL 模式,server 强制限制输入数据的值相比其他模式的数据库




24.9  升级MYSQL 数据库


MYSQL 发展史持续的,MYSQL DB 频繁的发布版本。


新版本增加了新的功能和解决老版本存在的问题。




然而,你不能升级到一个新的版本在没有检查影响和苦难度的情况下。


检查MYSQL 手册在升级前:


1.在查阅升级章节的内容时,查看是否有任何注意点关于升级的 如果有,按推荐的过程描述做




2.检查最近发布版本改变的注意章节,相比你当前的版本来确认你要留心的那些改变 相比你原始的安装。




注意特别那些改动 你是向后兼容的 因为它们可能需要修改你当前应用的文件 如果你升级的话




尽管那些警告摘要,升级MYSQL 通常是明确的 按照下面的步骤:


1.备份数据库




2.停止服务


3,按照MYSQL 新版本


4.启动服务




如果你安装了新版本的MYSQL 在当前存在的版本之上,你不需要重新配置。




这个对WINDOWS 安装,RPM安装和源代码安装时通用的 因为这些类型的发布每个趋向于使用


相同的安装目录不管MYSQL的版本。




但是如果你升级使用的tar文件,新的发布版本会创建新的版本指定的base installation directory.


不同于当前存在的安装目录。


在这种情况下,一些重新的配置可能是必须的。如果你有符号链接到老的安装目录


你可以删除link 和重建到新的安装目录


随后 相关的新的符号链接会当问新的安装目录































































原文地址:https://www.cnblogs.com/hzcya1995/p/13351781.html