安装Mysql
安装包为:MySQL-5.6.41-1.el6.x86_64.rpm-bundle.tar
下载完成后上传服务器:
- 解压tar包,并添加执行权限
## 解压tar包
tar -xvf MySQL-5.6.41-1.el6.x86_64.rpm-bundle.tar -C /opt/software/mysql/
cd /opt/software/mysql/
## 添加执行权限
chmod u+x *.rpm
- 安装MySQL-shared-compat替换系统自带的mysql-libs
替换前:
# 先查看一下是否有系统自带的mysql插件,我这里是有的
rpm -qa | grep -i mysql
# 先安装MySQL-shared-compat
rpm -ivh MySQL-shared-compat-5.6.41-1.el6.x86_64.rpm
# 再卸载mysql-libs
yum remove mysql-libs
替换后:
4. 安装mysql
# 安装MySQL-server
rpm -ivh MySQL-server-5.6.41-1.el6.x86_64.rpm
# 安装MySQL-client
rpm -ivh MySQL-client-5.6.41-1.el6.x86_64.rpm
遇到的问题:
错误如下:
warning: MySQL-server-5.6.41-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
libnuma.so.1()(64bit) is needed by MySQL-server-5.6.41-1.el6.x86_64
libnuma.so.1(libnuma_1.1)(64bit) is needed by MySQL-server-5.6.41-1.el6.x86_64
libnuma.so.1(libnuma_1.2)(64bit) is needed by MySQL-server-5.6.41-1.el6.x86_64
警告信息网上资料说:这是由于yum安装了旧版本的GPG keys造成的
解决办法:在后面加上–force --nodeps
下面的error是安装缺失依赖包,错误解决办法:
yum install numactl
- 配置Mysql
安装完以后Mysql生成一个随机密码保存在/root/.mysql_secret
# 启动Mysql
service mysql start
# 不用再配置开机启动了,安装包已经设置Mysql开机启动
# 查看Mysql密码
more ~/.mysql_secret
# 进行Mysql的基本配置
/usr/bin/mysql_secure_installation --user=mysql
- 开启远程登陆
# 命令行登陆Mysql
mysql -uroot -proot
# 添加远程登陆权限
Grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
# 重新加载权限
flush privileges;
- 本地通过Navicat远程连接Mysql:
- 将Mysql驱动包放入Java 共享目录
注意,如果/usr/share/java/目录不存在,则手动创建!
mkdir /usr/share/java
三台服务器都要做
8.1 重命名Mysql驱动包,把版本号去掉,将jar包移到java共享目录下
mv mysql-connector-java-8.0.12.jar /usr/share/java/mysql-connector-java.jar
8.2 将Mysql驱动包分发到另外两台服务器
scp /usr/share/java/mysql-connector-java.jar root@hadoop-2:/usr/share/java
scp /usr/share/java/mysql-connector-java.jar root@hadoop-3:/usr/share/java
这一步如果不做的话后面Cloudera Manager好多需要连接Mysql的步骤都会报找不到Mysql驱动的错误
一定要把Mysql驱动包的版本号去掉
- 创建数据库及用户并添加权限
其他的数据库实例使用uft8编码,hive和oozie使用默认的编码方式
如下,可直接复制,后面会用到。
create database if not exists amon default charset utf8 collate utf8_general_ci;
create database if not exists rman default charset utf8 collate utf8_general_ci;
create database if not exists nav default charset utf8 collate utf8_general_ci;
create database if not exists navms default charset utf8 collate utf8_general_ci;
create database if not exists hue default charset utf8 collate utf8_general_ci;
create database if not exists sentry default charset utf8 collate utf8_general_ci;
create database if not exists hive;
create database if not exists oozie;
grant all on hive.* to 'hive'@'%' identified by 'hive' with grant option;
grant all on oozie.* to 'oozie'@'%' identified by 'oozie' with grant option;
grant all on hue.* to 'hue'@'%' identified by 'hue' with grant option;
grant all on amon.* to 'amon'@'%' identified by 'amon' with grant option;
grant all on rman.* to 'rman'@'%' identified by 'rman' with grant option;
grant all on nav.* to 'nav'@'%' identified by 'nav' with grant option;
grant all on navms.* to 'navms'@'%' identified by 'navms' with grant option;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry' with grant option;
flush privileges;
- 为Cloudera Manager配置Mysql
为Cloudera Manager配置外部的数据库需要对此外部数据库进行一些配置
ClouderaManager官网对Mysql配置的翻译,
大致意思是:
1) 需要配置Mysql的搜索引擎为InnoDB
2) Mysql安装好以后默认分配的缓冲区和内存比较小,ClouderaManager会非常频繁地连接Mysql需要配置一下,具体根据你集群的大小配置最大连接数
3) 二进制日志对于ClouderaManager不是必须的,但是对Mysql有好处,这个你随意
然后官网在下面给了一个my.cnf配置的例子,然后说只要你的大数据集群在50个节点以内都可以使用下面的这个配置
10.1 查找my.cnf
my.cnf路径一般是/etc/my.cnf没有的话创建,其他地方有的话就修改。
find / -name my.cnf
我这里在/usr/下
10.2 修改/usr/my.cnf文件
[mysqld]
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links = 0
key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1
max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M
#log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system
#and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log
# For MySQL version 5.1.8 or later. For older versions, reference MySQL documentation for configuration help.
binlog_format = mixed
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
sql_mode=STRICT_ALL_TABLES
10.3 重启Mysql服务
service mysql restart
10.4 测试
在Mysql中随便创建一个表执行命令
show table status