热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式架构高可用架构篇_06_MySQL源码编译安装(CentOS-6.7+MySQL-5.6)

分布式架构高可用架构篇_06_MySQL源码编译安装(CentOS-67+MySQL-56)
部署环境

操作系统:CentOS-6.6-x86_64-bin-DVD1.iso

MySQL 版本:mysql-5.6.22.tar.gz

操作用户:root

系统 IP:192.168.1.205

主机名:edu-mysql-01

一、服务器配置:

1、配置网络

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0c:29:31:09:cf"
IPV6INIT="yes"
NM_COnTROLLED="yes"
OnBOOT="yes"
IPADDR=192.168.1.205
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

2、设置主机名

# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=edu-mysql-01

3、设置IP 与主机名的映射

# vi /etc/hosts
127.0.0.1 edu-mysql-01
192.168.1.205 edu-mysql-01

4、两台数据库服务器的的selinux 都要disable

(永久关闭 selinux,请修改/etc/selinux/config,将 SELINUX改为 disabled)

# vi /etc/selinux/cOnfigSELINUX=disabled

5、重启操作系统

# reboot

二、源码安装 MySQL5.6.26:

1、使用下面的命令检查是否安装有MySQL Server:

# rpm -qa | grep mysql
mysql-libs-5.1.73-3.el6_5.x86_64

如果是 CentOS7以上,请使用以下命令查看:

# rpm -qa | grep mariadb
mariadb-libs-5.5.41-2.el7_0.x86_64

(因为没有 MySQL服务,因此没必要卸载。mysql-libs是MySQL的必要包)

(如果有的话可通过下面的命令来卸载掉,rpm -e mysql //普通删除模式或yum remove mysql mysql-*)

2、改防火墙设置,打开3306端口:

# vi /etc/sysconfig/iptables

增加如下行:

## MySQL
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

重启防火墙:

# service iptables restart

3、新增mysql用户组:

# groupadd mysql

4、新增mysql用户,并添加到mysql用户组:

# useradd -r -g mysql mysql

5、新建MySQL执行文件目录(后面会把编译好的mysql程序安装到这个目录):

# mkdir -p /usr/local/mysql

(-p参数的作用是:如果最终目录的父目录不存在也会一并创建)

6、新建MySQL数据库数据文件目录:

#mkdir -p /home/mysql/data
#mkdir -p /home/mysql/logs
#mkdir -p /home/mysql/temp

(注意:上面的logs及temp目录是为了以后将MySQL的数据文件与执行程序文件分离,如果你打算设置到不同的路径,注意修改对应的执行命令和数据库初始化脚本。正式生产环境,建议数据目录和日志目录都使用单独的分区来挂载,不同分区属于不同的磁盘或磁盘组。)

7、增加PATH环境变量搜索路径:

# vi /etc/profile

##在profile文件末尾增加两行

# mysql env param

PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH

export PATH

使 PATH搜索路径立即生效:

# source /etc/profile

8、安装编译MySQL需要的依赖包:

(mysql 从5.5 版本开始,不再使用./configure编译,而是使用cmake编译器,具体的cmake编译参数可以参考mysql官网文档

dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html,安装基本依赖包,先用yum安装 cmake、automake、autoconf,另MySQL 5.5.x需要最少安装的包有:bison,gcc、gcc-c++、ncurses-devel):

#yum install make cmake gcc gcc-c++ bison bison-devel ncurses ncurses-develautoconf automake

9、进入/usr/local/src 目录,上传mysql-5.6.22.tar.gz 源代码到/usr/local/src 目录:

# cd /usr/local/src

10、开始编译安装mysql-5.2.22:

解压缩源码包:

#tar -zxvf mysql-5.6.22.tar.gz

进入解压缩源码目录:

使用 cmake源码安装mysql(如果你打算安装到不同的路径,注意修改下面语句中/usr/local/mysql和/home/mysql/data路径!)

#cd mysql-5.6.22

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 
-DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/home/mysql/data -DMYSQL_USER=mysql 
-DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1

配置解释:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 设置安装目录
-DMYSQL_DATADIR=/home/mysql/data 设置数据库存放目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock设置UNIX socket 目录
-DMYSQL_USER=mysql 设置运行用户
-DDEFAULT_CHARSET=utf8 设置默认字符集,默认latin1
-DEFAULT_COLLATION=utf8_general_ci 设置默认校对规则,默认latin1_general_ci 
-DWITH_INNOBASE_STORAGE_ENGINE=1 添加InnoDB 引擎支持
-DENABLE_DOWNLOADS=1 自动下载可选文件,比如自动下载谷歌的测试包
-DMYSQL_TCP_PORT=3306 设置服务器监听端口,默认3306
-DSYSCOnFDIR=/etc 设置my.cnf 所在目录,默认为安装目录)

执行过程中会出现:

CMake Error: Problem with tar_extract_all(): Invalid argument
CMake Error: Problem extracting tar: /usr/local/src/mysql-5.6.26/source_downloads/gmoc k-1.6.0.zip

解决方法:(我这里没有加-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock)

cd mysql 目录下面会发现有一个source_downloads 目录,需要解压unzip gmock-1.6.0.zip,然后再重新执行上述配置过程。当然你也可以去掉-DENABLE_DOWNLOADS=1这个选项,不编译谷歌的测试包也没有什么问题,但是之前的某些版本会出现无法编译的问题.

11、cmake结束后开始编译源码,这一步时间会较长,请耐心等待:

# make

12、安装编译好的程序:

# make install

\

(注意:如果需要重装mysql,在/usr/local/src/mysql-5.6.22在执行下make install就可以了,不需要再cmake和make)

13、清除安装临时文件:

# make clean

14、修改mysql目录拥有者为mysql用户:

#chown -Rf mysql:mysql /usr/local/mysql

#chown -Rf mysql:mysql /home/mysql

15、进入mysql执行程序的安装路径:

# cd /usr/local/mysql

16、执行初始化配置脚本,创建系统自带的数据库和表(注意:路径/home/mysql/data需要换成你自定定义的数据库存放路径):

[root@edu-mysql-01 mysql-5.6.22]# cd /usr/local/mysql
[root@edu-mysql-01 mysql]# pwd
/usr/local/mysql

# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data

17、初始化脚 本在/usr/local/mysql下生成了配置文件my.cnf,需要更改该配置文件的所有者:

#ls -lah

\

18、注意:
(1)Tips:在启动Mysql服务时,会按照一定次次序搜索my.cnf,先在/etc目录下找。,找不到则会搜索mysql程序目录 下是否有my.cnf

(2)需要注意CentOS 6版操作系统的最小安装完成后,即使没有安装mysql,在/etc/目录 下也会存在一个my.cnf文件,建议将此文件 更名为其他的名字,否则该文件会干扰源码安装的MySQL的正确配置,造成无法启动,修改/etc/my.cnf操作如下:

可以mv /etc/my/cnf /etc/my.cnf.bak

也可以:删除掉/etc/my.cnf这个文件 :rm -rf /etc/my.cnf

如果你需要用于生产环境,不需要急着做下面的mysql启动操作,建议把上一步骤中mysql初始化生成的/usr/local/mysql/my.cnf删除,然后把你优化好的mysql配置文件my.cnf放到/etc/下(这是做mysql复制和mysql优化的经验)

我这里使用的/etc/my.cnf

19.编辑/etc/my.cnf

#vi /etc/my.cnf

[client]
port=3306
#socket=/usr/local/mysql/mysql.sock
socket=/tmp/mysql.sock
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
skip-external-locking
skip-name-resolve
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/home/mysql/data
#server_id=...
#socket=/usr/local/mysql/mysql.sock
socket=/tmp/mysql.sock
log-error=/home/mysql/logs/mysql_error.log
pid-file=/home/mysql/mysql.pid
open_files_limit=10240
back_log=600
max_cOnnections=500
max_connect_errors=6000
wait_timeout=605800
#open_tables=6000
#table_cache=650
#opened_talbes=630
max_allowed_packet=32M
sort_buffer_size=4M
join_buffer_size=4M
thread_cache_size=300
query_cache_type=1
query_cache_size=256
query_cache_limit=2M
query_cache_min_res_unit=16K
tmp_table_size=256M
max_heap_table_size=256M
key_buffer_size=256M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M
lower_case_table_names=1
default-storage-engine=INNODB
innodb_buffer_pool_size=512
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_flush_method=O_DIRECT
##########################
thread_cOncurrency=32
long_query_time=2
slow-query-log=on
slow-query-log-file=/home/mysql/logs/mysql-slow.log
[mysqldump]
quick
max_allowed_packet=32M
[mysql_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

其中innodb_buffer_pool_size的大小为分配内存的三分之一到二分之一

20.复制服务启动脚本:

#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

21.启动mysql服务

service mysql start

# service mysql start
Starting MySQL. SUCCESS!

22.设置MySQL开机自动启动服务:

#chkconfig mysql on

设置mysql数据库root用户的本地登录密码(初始用户没有密码):

#mysqladmin -u root password 'root'

23.登录并修改MySQL用户root的密码

# mysql -u root -pEnter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column namesYou 
can turn off this feature to get a quicker startup with -ADatabase changed
mysql> update user set password=password('root') where user='root';
Query OK, 4 rows affected (0.06 sec)Rows matched: 5 Changed: 4 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

允许root远程登录,设置远程登录密码:123456

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

\

注意:真实生产环境,应用操作不要使用root用户操作

24.运行安全设置脚本,强烈建议生产服务器使用(可选)

[root@edu-mysql-01~]# /usr/local/mysql/bin/mysql_secure_installation

\\

以上就是MySQL,分布式,CentOS的内容,更多相关内容请关注PHP中文网(www.php1.cn)!

推荐阅读
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • PHP环境下的ini配置详解:聚焦错误相关选项
    本文详细探讨了PHP环境中的ini配置,特别是与错误处理相关的配置项,旨在帮助开发者更好地理解和调整php.ini文件以适应不同的开发需求。 ... [详细]
  • 在编程实践中,正确管理和释放资源是非常重要的。本文将探讨 Python 中的 'with' 关键字及其背后的上下文管理器机制,以及它们如何帮助我们更安全、高效地管理资源。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
author-avatar
故事里的说书人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有