前言: 为搭建cloudera环境而安装mysql数据库,以及适用于生产环境下mysql主从库的搭建,并演示导入测试数据。
一、部署环境
操作系统:Linux RedHat6.4
数据库:Mysql5.6.36
二、安装MySQL
2.1 下载软件包
MySQL 安装包下载:
http://dev.mysql.com/downloads/mysql/
测试数据库下载(非必须):
http://dev.mysql.com/doc/index-other.html
2.2 安装MySQL 软件
将安装包上传至/opt/mysql目录下,然后执行以下命令:
$ rpm –e –nodeps mysql-libs
$ rpm -ivh MySQL-server-*
$ rpm -ivh MySQL-client-*
修改配置文件位置
$ cp /usr/share/mysql/my-default.cnf /etc/my.cnf
注意:安装程序会自动添加mysql用户和用户组,以及完成数据库的初始化
2.3 /etc/my.cnf配置文件
添加如下配置信息:
[client]
port = 3306
default-character-set=utf8
[mysqld]
port = 3306
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
#(注意linux下mysql安装完后是默认:表名区分大小写,列名不区分大小写; 0:区分大小写,1:不区分大小写)
lower_case_table_names=1
#(设置最大连接数,默认为 151,MySQL服务器允许的最大连接数16384; )
max_connections=1000
[mysql]
default-character-set = utf8
可查看字符集:
$ show variables like '%collation%';
$ show variables like '%char%';
2.4 启动数据库及设置密码
启动mysql服务:
$ service mysql start
$ chkconfig mysql on
查看root账号密码:
$ cat /root/.mysql_secret
The random password set for the root user at Wed Dec 11 23:32:50 2013 (local time): qKTaFZnl
注意:root密码为
qKTaFZnl
运行mysql_secure_installation,修改root密码以及登录相关配置
$ /usr/bin/mysql_secure_installation
注意: Disallow root login remotely[Y/N] N,其他都是Y
手动重置root密码如下:
登录mysql
$ mysql -uroot –pqKTaFZnl
将root密码设置为123456
mysql> SET PASSWORD = PASSWORD('123456');
2.5 MySQL的默认安装位置
数据库目录: /var/lib/mysql/
配置文件目录: /usr/share/mysql
相关命令目录: /usr/bin
启动脚本:/etc/init.d/mysql
2.6 关闭防火墙
$ service iptables stop
$ chkconfig iptables off
三、导入线上表结构(导入测试数据)
创建数据库
mysql> create database world;
导入表结构
mysql> use world
mysql> source /opt/mysql/world.sql
新建用户并赋予相应权限
mysql> grant select,insert,update,delete on world.* to world@'%' identified by 'world';
四、搭建MySQL主从库(热备)
4.1 主库配置
$ vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
4.2 从库配置
$ vim /data/db/mysql/3306/my.cnf
[mysqld]
server-id=2
4.3 在主库上,创建复制用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'datanode1' IDENTIFIED BY 'slavepass';
4.4 在主库上,获得连接所需binlog 信息
mysql> show master status;
+--------------------------------+--------+
| File |Position|
+--------------------------------+--------+
| mysql-bin.000001 | 124 |
+--------------------------------+--------+
记下file
和position
例如:
file:** mysql-bin.000001**
position:124
4.5 在从库上,建立复制连接
mysql>
CHANGE MASTER TO
MASTER_HOST='master',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE=' mysql-bin.000001',
MASTER_LOG_POS=124;
4.6 在从库上,开启复制
mysql> start slave;
mysql> show slave status\G
注意:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上选项均为YES,表示复制正常
五、FAQ
5.1 linux下mysql的root密码忘记解决方法
$ vim /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
skip-grant-tables
重新启动mysqld
$ /etc/init.d/mysqld restart
登录并修改MySQL的root密码
$ /usr/bin/mysql
mysql> USE mysql ;
mysql> UPDATE user SET Password = password ('123456') WHERE User = 'root' ;
mysql> flush privileges ;
将my.cnf中skip-grant-tables
去掉,然后重新启动mysqld
$ /etc/init.d/mysqld restart
5.2 show master status 为空
开启big-log日志
$ vim /etc/my.cnf
在配置文件中添加此行代码: log-bin=mysql-bin
然后重启下MySQL:
$ service mysqld restart
进入数据库查看是否开启成功:
mysql> show variables like '%log_bin%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | ON |
+---------------------------------+-------+
注意:log_bin为on表示成功
生成一个最新的bin-log日志
mysql> flush logs;
查看bin-log日志的相关信息
mysql> show master status;
注意:如果bin-log日志成功开启,而show master status为空,则执行:flush logs即可。