Mysql-5.6二进制包安装及配置主主互备,并配置mysql为Cloudera的外部数据库

网上关于这些的文章很多,但是大多数都不一样,最近正好需要,自己尝试配置了一次,还写了python的自动配置脚本,因此自己总结一下安装过程以及其中碰到的一些问题和注意点。

Centos7 二进制包安装Mysql

一、下载mysql5.6二进制安装包

Mysql包下载地址
如果下载二进制包,需要在Select Operating System处选择Linux-Generic,此处以5.6.43版本为例。

二、安装mysql5.6(安装在/usr/local)

(1)、创建mysql用户

useradd -s /sbin/nologin -M mysql

-M参数是不创建用户家目录,-s /sbin/nologin是不允许此用户登陆
(2)、解压压缩包

tar xvf mysql-5.6.43-linux-glibc2.5-x86_64.tar.gz -C /usr/local

(3)、创建软链接

ln -s mysql-5.6.43-linux-glibc2.5-x86_64 mysql

(4)、复制配置文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

修改配置文件

[mysqld]
skip-name-resolve
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
binlog_format = mixed
pid-file = /usr/local/mysql/data/mysql.pid
log-error = /usr/local/mysql/data/error.log
(*二进制安装,默认配置文件在/etc/my.cnf)

(5)、初始化数据库

chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

如果出现如下信息
FATAL ERROR: please install the following Perl modules before executing
Data::Dumper

yum -y install autoconf libaio
此包安装时会安装Data:Dumper模块

三、配置并启动mysql

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
(*注意,mysql二进制安装默认的路径为/usr/local/mysql,若之前启动脚本里/usr/local/mysql需要替换)

启动mysql

systemctl start mysqld

四、添加开机自启动

chkconfig --add mysqld
chkconfig mysqld on
chkconfig --list mysqld

五、配置环境变量

echo ‘export PATH=/usr/local/mysql/bin:$PATH’ >> /etc/profile
source /etc/profile

六、修改mysql密码(mysql5.6安装默认root密码为空)

mysqladmin -u root password ‘xxxxx’

现在mysql就安装完成,可以正常使用了。

配置Mysql主主互备

首先准备两个节点,分别按上面的二进制包安装方式mysql。这里需要注意,因为mysql是向下兼容,所以最好保证两个节点上安装的mysql的版本是一样的。

一、环境信息

HostnameIP数据库版本
xzy1.novalocal172.16.10.1215.6.43
xzy2.novalocal172.16.10.1225.6.43

二、对IP增加访问权限

节点1:xzy1.novalocal(172.16.10.121)

mysql>grant all on . to root@‘xzy1.novaloxal’ identified by ‘traf123’;
mysql>grant all on . to root@‘172.16.10.121’ identified by ‘traf123’;

节点2:xzy2.novalocal(172.16.10.122)

mysql>grant all on . to root@‘xzy2.novaloxal’ identified by ‘traf123’;
mysql>grant all on . to root@‘172.16.10.122’ identified by ‘traf123’;

以上指令需要在mysql中执行

三、设置主主互备

(1) 修改配置文件
在/etc/my.cnf文件中[mysqld]这个部分添加主主互备的配置信息(两个节点都需添加),其中有两个地方注意。一是server-id不能重复,相当于是唯一标识,如果设置成相同的数字,mysql启动会报错。二是auto_increment_offset 需要设置为奇偶,否则日志同步时,会发生覆盖,导致错误。

节点1:xzy1.novalocal(172.16.10.121)

[mysqld]
character-set-server=utf8
server-id = 1
log-bin = bin.log
log-slave-updates
log-bin-index = log-bin.index
relay-log = relay.log
relay-log-info-file = relay-log.info
relay-log-index = relay-log.index
auto_increment_increment = 2
auto_increment_offset = 0

节点2:xzy2.novalocal(172.16.10.122)

[mysqld]
character-set-server=utf8
server-id = 2
log-bin = bin.log
log-slave-updates
log-bin-index = log-bin.index
relay-log = relay.log
relay-log-info-file = relay-log.info
relay-log-index = relay-log.index
auto_increment_increment = 2
auto_increment_offset = 1

想要看配置是否生效,重启mysql服务后,在mysql 中使用SHOW VARIABLES LIKE 'auto_inc%'查看
节点1:xzy1.novalocal(172.16.10.121)

systemctl restart mysqld
mysql -uroot -pxxx
mysql>SHOW VARIABLES LIKE ‘auto_inc%’;
±-------------------------±------+
| Variable_name | Value |
±-------------------------±------+
| auto_increment_increment | 2 |
| auto_increment_offset | 0 |
±-------------------------±------+
2 rows in set (0.00 sec)

节点2:xzy2.novalocal(172.16.10.122)

systemctl restart mysqld
mysql -uroot -pxxx
mysql>SHOW VARIABLES LIKE ‘auto_inc%’;
±-------------------------±------+
| Variable_name | Value |
±-------------------------±------+
| auto_increment_increment | 2 |
| auto_increment_offset | 1 |
±-------------------------±------+
2 rows in set (0.00 sec)

(2)创建专门用来备份的用户
节点1:xzy1.novalocal(172.16.10.121)

mysql>grant all privileges on . to ‘repl’@‘172.16.10.122’ identified by ‘replpassword’;

其中172.16.10.122是节点2的ip,因为备份需要能互相访问,因此这里是另外一个节点的ip地址。其中replpassword可以自己指定。

节点2:xzy2.novalocal(172.16.10.122)

mysql>grant all privileges on . to ‘repl’@‘172.16.10.121’ identified by ‘replpassword’;

(3)设置主机配置信息
因为主主互备,其实就是互相为主从,因此在配置主机信息时首先需要查看各自的主机信息

节点1:xzy1.novalocal(172.16.10.121)

mysql>show master status;
±-----------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------±---------±-------------±-----------------±------------------+
| bin.000001 | 333 | | | |
±-----------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)

节点2:xzy2.novalocal(172.16.10.122)

mysql>show master status;
±-----------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------±---------±-------------±-----------------±------------------+
| bin.000002 | 256 | | | |
±-----------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)

配置主机信息

节点1:xzy1.novalocal(172.16.10.121)

mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_HOST = ‘172.16.10.122’ , MASTER_USER = ‘repl’, MASTER_PASSWORD = ‘replpassword’,MASTER_LOG_FILE=‘bin.000002’, MASTER_LOG_POS = 256;
mysql>start slave;

这里有注意点,因为对节点1来说,它的主节点就是节点2,因此master_host里填的也是节点2的ip,后面的两个master_log_file和master_log_pos也是需要填刚才在节点2的show master status中查到的信息。

节点2:xzy2.novalocal(172.16.10.122)

mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_HOST = ‘172.16.10.121’ , MASTER_USER = ‘repl’, MASTER_PASSWORD = ‘replpassword’,MASTER_LOG_FILE=‘bin.000001’, MASTER_LOG_POS = 333;
mysql>start slave;

配置完成可以通过show slave status来查看

节点1:xzy1.novalocal(172.16.10.121)

mysql>show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: xzy2.novalocal
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: bin.000002
Read_Master_Log_Pos: 256
Relay_Log_File: relay.000004
Relay_Log_Pos: 277
Relay_Master_Log_File: bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
…(还有很多,此处省略)

是否配置成功可以通Slave_IO_Running和Slave_SQL_Running来检查,状态都为yes代表配置成功。同时还需要检查一下 Master_Log_File和Read_Master_Log_Pos是否和刚才填入的一致。

节点2:xzy2.novalocal(172.16.10.122)

mysql>show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: xzy1.novalocal
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: bin.000001
Read_Master_Log_Pos: 333
Relay_Log_File: relay.000001
Relay_Log_Pos: 125
Relay_Master_Log_File: bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
…(还有很多,此处省略)

至此mysql主主互备就配置完成了,你还可以通过在一个节点创建数据库,看另一节点是否自动创建了相同的数据库来验证。如果有错误,你可以通过查看/usr/local/mysql/data/error.log(刚才我们配置的错误文件的地址)来查看错误信息。

将Mysql配置为Cloudera的数据库

一、创建CDH数据库

创建hive、amon、rman、cm数据库,创建hive、amon、rman、cm用户,赋用户hive、amon、rman、cm权限

节点1:xzy1.novalocal(172.16.10.121)

create database hive default character set utf8;
create user ‘hive’@’%’ identified by ‘traf123’;
grant all privileges on hive. * to ‘hive’@’%’;

create database amon default character set utf8;
create user ‘amon’@’%’ identified by ‘traf123’;
grant all privileges on amon.* to ‘amon’@’%’;

create database rman default character set utf8;
create user ‘rman’@’%’ identified by ‘traf123’;
grant all privileges on rman.* to ‘rman’@’%’;

create database cm default character set utf8;
create user ‘cm’@’%’ identified by ‘traf123’;
grant all privileges on cm.* to ‘cm’@’%’;

增加mysql用户远程访问权限:

grant all on *.* to hive@‘esgzb-n001.esgyn.com’ identified by ‘traf123’;
grant all on *.* to amon@‘esgzb-n001.esgyn.com’ identified by ‘traf123’;
grant all on *.* to rman@‘esgzb-n001.esgyn.com’ identified by ‘traf123’;
grant all on *.* to cm@‘esgzb-n001.esgyn.com’ identified by ‘traf123’;

mysql>flush privileges; /手工提交,使更改生效/

二、安装Cloudera

网上有很多教程,我就不写了,主要写一下如何配置mysql的jdbc。
当安装好cloudera server后,将从官网下载的mysql jdbc的包进行拷贝

cp mysql-connector-java-5.1.34.jar /usr/share/java/mysql-connector-java.jar

拷贝完成后,为Cloudera管理器配置外部数据库

/usr/share/cmf/schema/scm_prepare_database.sh -h xzy1.novalocal mysql cm cm traf123

配置好后,就可以启动Cloudera server的服务了

总结

到这里,全部过程就结束了,其中也还是有一些问题,就是配置mysql jdbc,因为之前进行了mysql的主主互备的设置,希望实现HA,但是这个地方不知道这个host该怎么配,就先在装有cloudera server的节点1上进行了。如果有朋友知道该如何实现,欢迎交流。如果其中有写的不对的地方,也希望大家能指正,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值