随手记一下。
MySQL 源码编译选项参考 MySQL 官方文档:https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
1. 首先安装一下需要的依赖
yum install -y vim wget cmake gcc gcc-c++ ncurses-devel bison zlib libxml openssl perl perl-Data-Dumper
2. 把源码包下载下来
wget -c https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz && tar zxf mysql-5.6.35.tar.gz && cd mysql-5.6.35
3. 创建用户及组
groupadd mysql && useradd mysql -g mysql -M -s /sbin/nologin
4. 编译安装
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNODB_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_LOCAL_INIFILE=1 \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1
编译安装
make && make install
easy_install supervisor
or pip install supervisor
安装完成 Supervisor 后,初始化配置文件 echo_supervisord_conf > /etc/supervisord.conf
创建 Supervisord 守护进程配置文件目录 mkdir /etc/supervisord
并且编辑 /etc/supervisord.conf
文件 [include]
节点下的文件包含配置,去掉注释以后修改结果
[include]
;files = relative/directory/*.ini
files = /etc/supervisord/*.conf
将 Supervisor 加入开机自启动,使用 systemctl 管理,到 Supervisor 官方 GitHub 项目取配置文件 https://github.com/Supervisor/initscripts
CentOS 7.x 使用 centos-systemd-etcs
即可。
MySQL 插入数据时报错 Incorrect integer value: '' for column 'id' at row 1 [closed]
插入值为 '' 空,MySQL 5.6.x 不进行数据转换,在 5.5.x 以及 5.7.x 通过,唯独 5.6.x 报错导致业务不正常。
检查发现是有关 sql_mode
的原因。
mysql> SELECT @@GLOBAL.sql_mode;
+--------------------------------------------+
| @@GLOBAL.sql_mode |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set
只要把 sql_mode
设置为空即可,或者注释。
默认 MySQL 启动时是按照以下顺序加载的 my.cnf
[root@Master-PHP ~]# mysql --help | grep 'cnf'
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
没有指定配置文件则是按照顺序查找到配置文件启动,但是 /etc/mysql/my.cnf
以及 ~/.my.cnf
这两个文件是不存在的,也就是说只会加载 /etc/my.cnf
但是在该配置文件内并未找到有关 sql_mode
的设置。
系统版本:CentOS 7.2
Memcached 版本:1.4.34
PHP 版本:7.x
PHP 安装编译过程这里就不讲述了。关于 Memcached 和 PHP 的安装顺序无所谓,两者不关联也没有特定依赖。
1. 安装 Memcached
官方下载地址:http://memcached.org/files/memcached-1.4.34.tar.gz
mkdir /usr/local/memcached
wget -c http://memcached.org/files/memcached-1.4.34.tar.gz
tar zxf memcached-1.4.34.tar.gz && cd memcached-1.x.x
./configure --prefix=/usr/local/memcached
make && make test && make install
将 Memcached 安装至 /usr/local/memcached
目录下,随后添加开机启动。
今天突然来 30 Gbps 的流量把我打懵逼了,恰巧遇到我这里停电,想外出找个地方上网,发现在下冰雹。艹
阿里云免费提供的 5 GB 流量防护,其实达到一半的时候就丢进黑洞等清洗了。
等到电力恢复,服务器已经清洗完毕了。为了预防业务系统无法为用户服务,在部署架构中做了多层中转,源出口服务器一域名因 CDN 回源直接打到源出口导致其余中转服务器均无法继续服务。
取阿里云提供的抓包数据,检查发现是 NTP 攻击,流量在 5 秒间流量打到 27.9 Gb 检查了一遍中转服务器发现 ntpdate 服务开启并且存在反射型漏洞,该服务器仅提供了 Web 服务,时间需同步处理。如果没有必要,把关于 NTP 的服务关闭或限制入口流量,避免肉鸡。
如果遇到 DDoS 上硬防~ DDoS 大流量无解,除了烧钱我没话说~
处理方法,丢弃该出口服务器,另外部署一台出口节点服务器,再部署一台高防线路服务器做下层出口节点,域名均上 CDN 保持源不泄露,对出口源进行白名单过滤,开放 TCP 80 端口过滤无用端口。
如果舍得,部署中心服务器,各地机房自行部署出口节点以及购买 CDN 服务。DNS 解析对地区性解析,挂完 CDN 我再切节点。在 CDN 挂前足够有时间立即响应安全事件了,当然在与 DDoS 进行对抗,完全就是一场烧钱的活动 =.=