如何平滑“重启”mysql

如何平滑“重启”mysql,第1张

你好,

如何平滑重启”mysql

注意标题中重启是带了引号的

生产环境中的mysql server, 一般情况下,是要尽量避免重启的

但又时间却又面临这种场景

mysql的慢日志,错误日志需要定时切割出来。

一些影响性能的参数需要微调,我们希望mysql能平滑地加载新配置而不中断服务

其实,只要给mysqld进程发送-HUP信号即可,mysqld接收到这个信号后,会重新生成日志

或使用 service mysqld reload 也可

另外一些参数微调,建议是在mysql CLI方式下使用 set global NAME=Value方式设置好之后,再将其保存到/etc/my.cnf配置文件中

最近试了一下PHP7,在编译和支持MySQL上都遇到一些问题,相信不少同学也同样遇到,所以在这里聊一下这个过程。简单来讲编译PHP7只需要3步:1、./buildconf --force 2、./configure 3、make &&make install1、3步,都没啥好管的,configure是编译的关键,涉及到PHP对一些库的支持,这里我们使用最小的支持,包括MySQL:curl gd fpm mysqlnd之所以把curl和gd拿来说,目的是要搞清楚,这些三方库在编译PHP之前得安装好,可以直接使用yum安装在默认位置,也可以编译安装到指定位置,yum安装后,编译时不用指定库的安装位置,关于安装这些库,可以搜索一下有很多。下面看看基本的configure./configure --prefix=/apps/php/php7.0 --enable-mbstring --with-curl --with-gd --with-config-file-path=/apps/php/php7.0/etc/ --enable-fpm --enable-mysqlnd --with-pdo-mysql=mysqlndPHP-FPM关于fpm,相信不用多说,用它来支持PHP是一个比较好的选择,PHP5.3.3开始就已经内置了php-fpm,所以PHP7里当然也有,只需要--enable-fpm一下就可以了php-fpm参数:--start 启动--stop 强制终止--quit 平滑终止--restart 重启--reload 重新平滑加载php的php.ini--logrotate 重新启用log文件MySQL支持重点讲一下这个,因为在它上面花了一点时间,不知道从哪一版本开始,PHP不在希望使用mysql的库来支持mysql的连接,启用了mysqlnd来支持,听说比libmysql要快很多,PHP5.x还可以使用libmysql,PHP7貌似已经取消了支持,编译都没有了--with-mysql参数,只支持--with-mysqli和--with-pdo-mysql,可以通过查看configure的参数来知道:?1 ./configure -help grep mysql可以看到,PHP希望使用mysqlnd来支持MySQL,所以参数可以这样写:--enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlndmysqlnd是不需要mysql支持的,所以不用先安装好mysql一样可以编译通过,启动php-fpm,查看一下phpinfo,能看到mysqlnd和pdo_mysql表示php已经可以支持mysql了(这里用的是pdo,mysqli同理)几个问题编译问题:cc: Internal error: Killed (program cc1)这个问题是第一次遇到,原来是我的阿里云服务器关掉了swap,内存不够用,就报了这个错。 解决办法很简单,configure时加上--disable-fileinfo参数就可以了。PHP报找不到mysql服务正如它所说,确实没找到,看看phpinfo中pdo_mysql.default_socket项mysql.sock在哪里,再看一下mysql.sock的真正位置,使用命令:ps -efgrep mysql查看:明显不在一个位置上,我的正确位置是:/var/lib/mysql/mysql.sock所以,修改一下php.ini,找到pdo_mysql.default_socket,改为你的实际位置,重启一下php-fpm,很不幸,虽然php.ini有这个配置,修改后,竟然不行,最好是编译的时候,指定mysql.socket的位置:?1 --with-mysql-sock=/var/lib/mysql/mysql.sock如果还不行,可以到/tmp目录下建立一个mysql.sock的软链接:?1 ln -s /var/lib/mysql/mysql.sock mysql.sock再重启一次php-fpm,相信已经正常运行了。如果需要PHP支持的库更多,可以再次编译,在configure时把需要的支持加上,就是--with-xxx这中,记得如果是三方的,要先安装这些库才行哦。

当服务器上PHP已经安装好,需要额外添加PHP扩展时怎么办?不需要重新安装PHP,有了phpize我们可以在原有的PHP基础之上直接安装扩展库。

这次编译仅仅只是单独编译PHP的扩展库,接下来将编译好的扩展库加入到现在运行的php中,不对现在运行的php重新编译,所以没有一点的影响。

下面我们演示安装xsl的扩展(不一定常用,仅做为一个范例)

做法一:

1.找到当前运行的php版本的源代码目录,如php-5.2.3。进入xsl扩展库目录。

$cd /home/pkgs/php-5.3.3/ext/xsl

2.调用phpize程序生成编译配置文件。

$/home/app/php5.3.3/bin/phpize

3.编译扩展库,分别执行下面的configure和make命令。

$./configure-with-php-config=/home/app/php5.3.3/bin/php-config

这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。

$make

#make成功执行后,生成的扩展库文件在当前目录的 modules子目录下,

如/home/php-5.3.3/ext/curl/modules/xsl.so

4.配置php.ini文件

#将编译好的扩展库文件复制到PHP的扩展目录下,可通过查看phpinfo信息。。

$ cp /home/pkg/php-5.3.3/ext/xsl/modules/xsl.so /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626

#在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到php安装目录/extension/no-debug-non....目录下,并添加扩展库位置。

extension_dir /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626”

extension=xsl.so

5.重启php,查看phpinfo信息,即可看到刚才添加进去的xsl扩展库。(如果有多个php-fpm进程的话,平滑重启主进程即可:kill -USR2 pid)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6127360.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存