Linux 进程通过 C 标准库中的内存分配函数 malloc 向系统申请内存,但是到真正与内核交互之间,其实还隔了一层,即内存分配管理器(memory allocator)。常见的内存分配器包括:ptmalloc(Glibc)、tcmalloc(Google)、jemalloc(FreeBSD)。MySQL 默认使用的是 glibc 的 ptmalloc 作为内存分配器。
内存分配器采用的是内存池的管理方式,处在用户程序层和内核层之间,它响应用户的分配请求,向 *** 作系统申请内存,然后将其返回给用户程序。
为了保持高效的分配,分配器通常会预先向 *** 作系统申请一块内存,当用户程序申请和释放内存的时候,分配器会将这些内存管理起来,并通过一些算法策略来判断是否将其返回给 *** 作系统。这样做的最大好处就是可以避免用户程序频繁的调用系统来进行内存分配,使用户程序在内存使用上更加高效快捷。
关于 ptmalloc 的内存分配原理,个人也不是非常了解,这里就不班门弄斧了,有兴趣的同学可以去看下华庭的《glibc 内存管理 ptmalloc 源代码分析》。
关于如何选择这三种内存分配器,网上资料大多都是推荐摒弃 glibc 原生的 ptmalloc,而改用 jemalloc 或者 tcmalloc 作为默认分配器。因为 ptmalloc 的主要问题其实是内存浪费、内存碎片、以及加锁导致的性能问题,而 jemalloc 与 tcmalloc 对于内存碎片、多线程处理优化的更好。
目前 jemalloc 应用于 Firefox、FaceBook 等,并且是 MariaDB、Redis、Tengine 默认推荐的内存分配器,而 tcmalloc 则应用于 WebKit、Chrome 等。
安装包:mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz使用xshell连接linux服务器,使用root用户名登录,依次执行以下命令:
======================================================
/usr/sbin/groupadd mysql 【添加mysql组】
/usr/sbin/useradd -d /var/lib/mysql -s /sbin/nologin -g mysql mysql
mkdir -p /usr/local/src/mysql 【新建mysql文件夹】
cd / 【打开上传安装包的目录】
mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz 【上传安装包到服务器的根目录下】
mv mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz /usr/local/src/mysql【根目录的安装包移动到文件夹下】
cd /usr/local/src/mysql【打开目录】
tar -zxvf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz【解压安装包】
cp mysql-5.6.30-linux-glibc2.5-x86_64 /usr/local/mysql -r【复制文件】
cd /usr/local【打开目录】
chown -R mysql:mysql mysql/
cd /usr/local/mysql/scripts/【打开目录】
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data【执行脚本】
cd /usr/local/mysql/support-files【打开目录】
cp my-default.cnf /etc/my.cnf【复制文件到新的路径下及文件名】
cp: overwrite `/etc/my.cnf'?Y【Y】
cp mysql.server /etc/init.d/mysql【复制文件到新的路径下】
vim /etc/profile【编辑软件运行环境】
vim i(编辑一些内容) esc(进入normal) w(保存文件) q(不保存退出文件)
###############################################################
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
###############################################################
source /etc/profile
chkconfig --add mysql
chkconfig mysql on
service mysql start
/usr/local/mysql/bin/mysqladmin -u root password 'rootroot'【修改数据库root的密码】
grant all privileges on tdcdb.* to 'root'@'%' identified by 'rootroot' 【给mysql用户分配权限】
flush privileges
vim /etc/sysconfig/iptables【编辑访问端口号】
###############################################################
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(添加3306的端口号)
###############################################################
service iptables restart
netstat -ntlp
mysql -u root -p (命令未找到使用: ln -s /usr/local/mysql/bin/mysql /usr/bin)
create user 'tdc'@'%' identified by 'P@ssw0rd'【创建数据库访问用户】
create database if not exists `tdcdb`【创建数据库】
grant all privileges on tdcdb.* to 'tdc'@'%' identified by 'P@ssw0rd'【给tdc用户分配访问密码】
flush privileges
vi /etc/my.cnf【编辑配置文件,支持语言设置】
###############################
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
###############################
service mysql stop【重新启动mysql服务】
service mysql start
======================================================
linux 常用命令:
pwd:查看当前路径
ll:2个小写的L,查看当前目录下的所有文件
cd:打开目录,包括路径地址及文件夹
vi 文件名:编辑linux下的文件,使用大写的【I】命令来进行编辑,编辑完成后点击【ESC】按钮跳出编辑,输入【:wq!】命令来退出保存;
注意:linux的文件不能打开直接修改,只能通过vi命令进行修改
======================================================
卸载程序的方式:
ps -ef | grep mysql
/etc/init.d/mysql status
whereis mysql
find / -name mysql【找到所有文件名为mysql的文件列表】
rm -rf /usr/local/mysql/【使用rm命令来移除列表中的文件】
rm -rf /etc/my.cnf【使用rm命令来移除列表中的文件】
1 linux的常用软件安装
配置阿里云的yum源
1) 安装wget
2)下载yum源的配置文件
3) 替换原有的yum源
4) 更新现有yum
5) 安装常用软件
2 linux的JDK安装
此处我们选用 jdk1.8_144这个版本作为我们的基础JDK,此处要切记一点的是1.8的不同版本JDK在配置上会有很大的出入,所以请不要随便更换基础的JDK版本,否则你会很尴尬!
使用 rz 上传jdk到root的家目录
使用rpm命令安装jdk
配置jdk的环境变量
刷新环境变量
到此 JDK安装完成
3 安装MySQL前说明
本例安装MySQL版本是 5.7
4 linux 在线安装MySQL
用root用户安装
1)获取mysql 源安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
2)安装mysql 源
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
3)检查mysql源是否安装成功
yum repolist enabled | grep "mysql. -community. "
3)用 yum 命令安装mysql
yum install mysql-community-server
4)修改mysql的配置文件
查看MYSQL配置文件加载顺序:
修改/etc/my.cnf 配置文件内的文件目录
datadir=/data/mysql/data
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
log-error=/data/mysql/log/mysqld.log
其中:
SQL_MODE:通过对其正确的设置可以完成一些约束检查的工作,设置时,在配置文件my.cnf 中配置进行全局的设置。
STRICT_TRANS_TALES(严格模式):
只对支持事务的表启用严格模式。
NO_AUTO_CREATE_USER:
禁止GRANT创建密码为空的用户。
NO_ENGINE_SUBSTITUTION:
启用后,若需要的存储引擎被禁用或未编译,则抛出错误;未启用时将用默认的存储引擎代替,并抛出一个异常。
5)创建mysql 文件目录
6)生成首次登录随机密码
通过上面命令会在 /data/mysql/log/mysqld.log 中生成随机码,随机码用来首次登录mysql。
7)修改mysql 文件目录所有者为 mysql 用户
8)启动mysql
9) 关闭并重启mysql(可选)
如果再次启动报错,就重启Linux 系统。
10)用生成的随机密码登录mysql
登录后进入mysql 命令行
11)修改ROOT用户密码
设置完密码后,需要用新密码重新登录
12)卸载mysql(不是必须的)
如果启动报错,根据错误查看原因,如果实在解决不了,卸载mysql 重新装。
查看已经安装过的组件
rpm -qa | grep -i mysql
用yum -y remove 卸载所有mysqlyum -y remove mysql57-community-release-el7-11.noarch yum -y remove mysql-community-common-5.7.19-1.el7.x86_64
卸载后再用 rpm -qa | grep -i mysql 查看,直至全部卸载
删除/data/mysql 目录
5 linux 离线安装MySQL
1) 卸载CentOS7系统自带mariadb
2) 检查mysql是否存在
3) 检查mysql的用户和组是否存在如果不存在就创建
4) 下载MySQL的离线安装包
官网下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
版本选择,可以选择一下两种方式:
1)使用Red Hat Enterprise Linux
Select Version: 5.7.* (因为更新的缘故具体细节版本可自行查看)
Select Operating System: Red Hat Enterprise Linux / Oracle Linux
Select OS Version: Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)
列表中下载:
Compressed TAR Archive:(mysql-5.7.25-el7-x86_64.tar.gz) 【本文中使用的是这个版本】
2)使用Linux - Generic
Select Version: 5.7.* (因为更新的缘故具体细节版本可自行查看)
Select Operating System: Linux - Generic
Select OS Version: Linux - Generic (glibc 2.12) (x86, 64-bit)
列表中下载:
Compressed TAR Archive:(mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz)
注意:上边两种方式找mysql离线安装包的方式都可以。
选完跳到以下这个页面点击 下面的连接就可以开始下载了
5) 上传MySQL的离线安装包并解压进行传统配置
6) 创建配置文件
7) 开始安装MySQL
设置权限
8) 启动MySQL
9) 设置开机启动
10) 修改配置文件
11) 获取初始密码
获取初始密码
创建软连接
登录mysql
修改密码
检验密码是否成功
设置远程访问
海汼部落原创文章,原文链接:(http://hainiubl.com/topics/75580)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)