Hadoop HA安装二:MySQL双机热备

Hadoop HA安装二:MySQL双机热备

安装MySQL

安装前先安装一下MySQL的依赖
ubuntu:

1
# apt-get install libaio-dev

CentOS:

1
# yum install libaio

看了很多教程都不靠谱。。。还是官方教程最靠谱:
Installing MySQL on Unix/Linux Using Generic Binaries

下载mysql-5.6.37-linux-glibc2.12-x86_64
# cp mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz /usr/local/

解压到/usr/local/
# tar -zxvf mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz

改名为mysql
# mv mysql-5.6.37-linux-glibc2.12-x86_64 mysql

删除安装包
# rm mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz

修改环境变量
# vi /etc/profile
在最下面添加

1
2
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH

新建用户和用户组:mysql
# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql

# cd /usr/local/mysql

修改目录的拥有者
# chown -R mysql .(重要!)
# chgrp -R mysql .(重要!)

安装MySQL
# scripts/mysql_install_db --user=mysql

修改当前目录拥有者为root用户
# chown -R root .

修改当前data目录拥有者为mysql用户
# chown -R mysql data

启动MySQL进程
# bin/mysqld_safe --user=mysql &

此时这个窗口会卡住,新建一个terminal,进入/usr/local/mysql中

进入mysql控制台
# bin/mysql

退出
exit;

进行MySQL的root用户密码的修改等操作
# ./bin/mysql_secure_installation
首先要求输入root密码,由于我们没有设置过root密码,括号里面说了,如果没有root密码就直接按回车。是否设定root密码,选y,设定密码为cluster,是否移除匿名用户:y。然后有个是否关闭root账户的远程登录,选n,删除test这个数据库?y,更新权限?y,然后ok。

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

查看MySQL的进程号
# ps -ef | grep mysql

如果有的话就kill掉,保证MySQL已经中断运行了,一般kill掉/usr/local/mysql/bin/mysqld开头的即可
# kill 进程号

启动MySQL
# /etc/init.d/mysql.server start -user=mysql
# exit

还需要配置一下访问权限:

1
2
3
$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'cluster' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

这样就可以使用root用户在任意地点登陆,而不再限于localhost了
关于服务的三个命令。
启动mysql:# /etc/init.d/mysql.server start -user=mysql
停止mysql:# mysqladmin -u root -p shutdown

修改MySQL的数据存储位置

在装系统进行分区的时候,有些时候会创建比较大的分区开存数据,我们可以将MySQL的数据存放到这个区内,假设这个区为/file0

$ su root

把MySQL服务进程停掉:
# mysqladmin -u root -p shutdown

新建新的dataDir
# mkdir /file0/mysql_data

把/usr/local/mysql/data里面的东西移到/file0/mysql_data下
# cp /usr/local/mysql/data/* /file0/mysql_data

编辑MySQL的配置文件/etc/my.cnf
如果没有的话,就把/usr/local/mysql里面的my.cnf复制过去
# cp /usr/local/mysql/my.cnf /etc/
# vi /etc/my.cnf

把里面的basedir, datadir, port修改成下面的内容

1
2
3
basedir=/usr/local/mysql
datadir=/file0/mysql_data
port=3306

修改MySQL启动脚本/etc/init.d/mysql.server
# vi /etc/init.d/mysql.server
把里面的basedir和datadir作如上修改

修改新目录的权限:
# chown –R mysql /file0/mysql_data
# chgrp –R mysql /file0/mysql_data
退出root用户
重新启动MySQL服务
$ /etc/init.d/mysql.server start –user=mysql

进入mysql
$ mysql –u root -p

查看目录是否已经更改
mysql> show variables like “datadir”;

高可用的MySQL双机热备安装教程

开启二进制日志,设置id
# vi /etc/my.cnf

1
2
3
4
5
6
7
[mysqld]
server-id = 1 #backup这台设置2
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema #忽略写入binlog日志的库
auto-increment-increment = 2 #字段变化增量值
auto-increment-offset = 1 #初始字段ID为1
slave-skip-errors = all #忽略所有复制产生的错误

重启MySQL服务
# mysqladmin -u root -p shutdown
# /etc/init.d/mysql.server start –user=mysql

先查看下log bin日志和pos值位置
里面有个File和Position,分别是log_file和log_pos的值,一会儿要填
mysql> show master status;

master配置如下:

1
2
3
4
5
6
7
8
9
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED  BY 'replication';
mysql> flush privileges;
mysql> change master to
-> master_host='192.168.1.212', # 此处输入slave的ip地址
-> master_user='replication',
-> master_password='replication',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=120; #对端状态显示的值
mysql> start slave; #启动同步

backup配置如下:

1
2
3
4
5
6
7
8
9
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.%' IDENTIFIED BY 'replication';
mysql> flush privileges;
mysql> change master to
-> master_host='192.168.1.211', # 此处输入master的ip地址
-> master_user='replication',
-> master_password='replication',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=120;
mysql> start slave;

MySQL双击热备安装完成

测试

在一台机器上建立一个数据库,创建一个表,在另一台机器上查询是有结果的,说明安装成功。