搭建MHA环境【2】安装mysql-5.6 + mysql复制

时间:2022-03-16 06:39:56

本例中mysql的安装方式选用了二进制包安装方案、mysql复制用半同步复制方案

【1】安装mysql-5.6.31 要在所有的数据节点上都安装上mysql,安装方式大致相同,所以我这里就不重复写多次了,只以一台为例。

1.1 解压安装包到/usr/local/

tar -xzvf mysql-5.6.-linux-glibc2.-x86_64.tar.gz -C /usr/local

1.2 为了创建linux系统的mysql用户

useradd mysql

1.3 创建连接文件

cd /usr/local/
[root@mhamaster local]# ll
总用量 44
drwxr-xr-x. 2 root root 4096 9月 23 2011 bin
drwxr-xr-x. 2 root root 4096 9月 23 2011 etc
drwxr-xr-x. 2 root root 4096 9月 23 2011 games
drwxr-xr-x. 2 root root 4096 9月 23 2011 include
drwxr-xr-x. 2 root root 4096 9月 23 2011 lib
drwxr-xr-x. 2 root root 4096 9月 23 2011 lib64
drwxr-xr-x. 2 root root 4096 9月 23 2011 libexec
drwxr-xr-x. 13 root root 4096 11月 17 05:48 mysql-5.6.31-linux-glibc2.5-x86_64
drwxr-xr-x. 2 root root 4096 9月 23 2011 sbin
drwxr-xr-x. 5 root root 4096 10月 5 23:02 share
drwxr-xr-x. 2 root root 4096 9月 23 2011 src
[root@mhamaster local]# ln -s mysql-5.6.31-linux-glibc2.5-x86_64 mysql

1.4 根据自己的情况创建mysql的配置文件/etc/my.cnf; 注意各个mysql实例中server_id不能相同这个是复制时的一个限制;当然这里是一最简单的配置

[mysqld]
server_id=
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
log_bin=mysql-bin

1.5 初始化mysql库

cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysqld

1.6 启动mysql

service mysqld start

1.7 配置PATH环境变量,这里还是先补充一点课外知识;/etc/profile 这个文件虽然说是全局的,但是有时候这里的环境变量设置并不会生效;例如我在192.168.80.130

主机上的/etc/profile 文件的最后加上 export PATH=/usr/local/mysql/bin/:$PATH ;这样我就把/usr/local/mysql/bin/目录加到了PATH环境变量中去了。不要想当然的

认为所有用户的PATH路径中都会包涵有/usr/local/mysql/bin/哦! 比如说我通过ssh 192.168.80.130 'export' 这种方式时执行命令时PATH中就没有/usr/local/mysql/bin/

又由于mha 大量的使用这种方式去执行命令,PATH中又找不到mysqlbinlog | mysql 这两个程序,所以mha会报错;网上有一些作者的解决方式是创建一个连接文件到

/usr/local/bin/目录下,之所以它这样能解决问题是因为,通过这种方式登录到远程时PATH中包涵有/usr/local/bin/ ;为了解决这个问题要在用户家目录中再把

/usr/local/mysql/bin/这个目录导出一次

1.7.1 :在/etc/profile 文件的最后加一句

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

1.7.2:在用户的家目录下的.bashrc中加一句(我在会在mha中会配置成root用户,所以这里我要加到/root/.bashrc这个文件中去)

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

1.8 导出mysql的共享库,这里还是补充一点课外知识,linux系统中库路径的位置都记录在了/etc/ld.so.conf.d/这个目录下的配置文件中;通常来说这个目录下会有一个叫

mysql-x86_64.conf的默认文件,默认文件中记录的是/usr/lib64/mysql这个默认路径,这个上路径应该是为rpm包安装而设定的;所以我们这里要把这个改成我们自己

的路径/usr/local/mysql/lib 。改完之后执行一下ldconfig 认系统把库文件都加载一下。

cat /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/local/mysql/lib/ #改成我们自己的路径不要默认的
[root@mhamaster ld.so.conf.d]# ldconfig

1.9 导出头文件(我也不太确认这样导出对不对)

mkdir /usr/include/mysql
[root@mhamaster include]# cp -R /usr/local/mysql/include/* /usr/include/mysql/

说明:虽然操作到1.6步的时候mysql的安装工作就可以算完成了,但是细节还是要注意一下,可以少出一点问题。

2 创建用户mhaadmin 用于管理集群,repl用于复制

create user mhaadmin@'localhost' identified by '067ac96e';
create user mhaadmin@'127.0.0.1' identified by '067ac96e';
create user mhaadmin@'%' identified by '067ac96e';
grant all on *.* to mhaadmin@'%';
grant all on *.* to mhaadmin@'localhost';
grant all on *.* to mhaadmin@'127.0.0.1'; create user repl@'%' identified by 'aa6d6a71';
create user repl@'localhost' identified by 'aa6d6a71';
create user repl@'127.0.0.1' identified by 'aa6d6a71';
grant replication client ,replication slave on *.* to repl@'%';
grant replication client ,replication slave on *.* to repl@'localhost';
grant replication client ,replication slave on *.* to repl@'127.0.0.1';

3、备份数据库

mysqldump -h127.0.0. -uroot -P3306 --all-databases --single-transaction --master-data= --events --routines >/tmp/data.sql

4、在master端启用半同步复制插件

install plugin rpl_semi_sync_master soname 'semisync_master.so';
set @@global.rpl_semi_sync_master_enabled=1;

5、在salve端启用半同步复制插件

install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set @@global.rpl_semi_sync_slave_enabled=1;

6、在slave 端还原数据

mysql </tmp/data.sql

7、执行change master to; master_log_file & master_log_pos 可以在data.sql中找到

change master to
master_host='192.168.80.130',
master_port=3306,
master_user='repl',
master_password='aa6d6a71',
master_log_file='mysql-bin.000003',
master_log_pos=1960; start slave;

到这里mysql安装+复制环境的搭建就算成功了!