本例中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安装+复制环境的搭建就算成功了!

搭建MHA环境【2】安装mysql-5.6 + mysql复制的更多相关文章

  1. XMPP环境搭建 (mac环境下 安装自己独立的mysql与服务器(openfire),实现即时聊天功能)

    1简单概览 [一]XMPP简介 http://xmpp.org 即时通讯技术 IM - Instant Messaging ⽀支持⽤用户在线实时交谈.交谈双⽅方都需要⼀一个聊天窗⼝口,其中⼀一个⽤用户 ...

  2. linux下搭建lamp环境以及安装swoole扩展

    linux下搭建lamp环境以及安装swoole扩展   一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源  我安装的环境是:apache2.2.15+mysql5 ...

  3. 第0课 - 搭建开发环境之安装QT

    第0课 - 搭建开发环境之安装Qt 1. 课程学习的原材料 — Visual Studio 2010 — Qt SDK 4.7.4 — Qt Creator 2.4.1 2. Visual Studi ...

  4. Ubuntu 17.10 用 apt 搭建 lamp 环境、安装 phpmyadmin、redis 服务+扩展、mysql 扩展、开启错误提示、配置虚拟主机

    2018-02-24 13:50:30 更新: 个人喜欢相对原生又不太麻烦,所以用 apt 构建环境.不过,最近使用到现在记得出现过了 3 次 apache 或 mysql 服务器无法启动或无法连接的 ...

  5. Linux系统搭建Java环境【JDK、Tomcat、MySQL】一篇就够

      前言:所有项目在完成开发后都会部署上线的,一般都是用Linux系统作为服务器的,很少使用Windows Server(大多数项目的开发都是在Windows桌面系统完成的),一般有专门负责上线的人员 ...

  6. windows转mac-开发环境搭建(一):需要搭建的环境及安装的工具

    作为一个java后端开发者来说,随着项目的增加,前段时间用windows真是受尽折磨,电脑卡到不行,在我们开发部技术大佬的一再安利之下,狠下心选了个17年13寸带touch bar的MacBook P ...

  7. 搭建域环境,安装Exchange Server 2013,复现CVE-2019-1040

    搭建域环境 操作系统: 域控:Windows server 2008 R2    域成员: Windows Server 2012 . Windows 7 对于将要安装成为DC的服务器来讲,其系统配置 ...

  8. 团队服务器搭建(搭建php环境和安装在线mysql管理工具phpmyadmin)

    1.本人良心推荐阿里云,因为他对学生来说优惠很多,比如说9.9/月的云主机,所以这里演示阿里云ubuntu系统,系统可以自己安装的 2.来到阿里云官网https://www.aliyun.com,免费 ...

  9. 搭建MHA环境【1】规划+linux相关的设置

    [1]规划 MHA这套软件包涵两个部分 1.manager :主要负责对MySQL集群状态的检查&在master 库宕机时对故障进行转移. 2.node      :主要包涵状态检查& ...

随机推荐

  1. documentElement vs body区别

    documentElement.scrollTop------>0因为,他包含head, body body.scrollTop------------------>才是正确的 scrol ...

  2. 不管肉鸡,还是代理,CC识别就封杀!

    这几天的心得,汇成代码. PYTHON版,我编的. #!/usr/bin/env python # -*- coding: utf-8 -*- import os,sys,time import co ...

  3. ImageButton自定义按钮的按下效果的高效实现方法(非一般)

    通常情况下,我们可以采用如下方式实现: <?xml version="1.0" encoding="UTF-8"?> <selector xm ...

  4. android真机调试

    android开发可以使用google那个自带的模拟器来调试,不过那个模拟器启动实在太慢,太耗时了,不过,如果我们有android手机的话,我们可以直接在手机上调试,这样的话,速度就很快: 具体步骤如 ...

  5. 【Latex】怎么写中文?

    最近总有这么几种情况:一.作业很简单,想用Latex敲,但是英语不过硬,用中文吧配中文环境就要配置半天.二.越来越多的朋友问我怎么搞中文输入,我也确实没啥帮助人家的好办法,所以只好自己研究研究怎么配置 ...

  6. [教程]隐藏ActionBar中的MenuItem

    有时候我们需要在不同的时候改变ActionBar中MenuItem的项数,或者隐藏某些MenuItem,百度上找了很久没什好资料,还是Google了一下,StackOverFlow上有大神解决了. 先 ...

  7. 选择Comparable接口还是Comparator

    个人理解: 如果我本身知道这个类的对象我要用来比较,那么就拿这个类实现Comparable接口(compareTo(Object o) 方法).如果我本身没有预料到我要比较这个类的对象,那么,我可以建 ...

  8. javascript笔记2之数据类型

    /* var box; alert(typeof box); //box是Undefined类型,值是undefined,类型返回的字符串是undefined var box = true; aler ...

  9. FileUtil.java

    package com.founder.util.file; import java.io.BufferedReader; import java.io.File; import java.io.Fi ...

  10. Ruby中,类方法和实例方法的一个有趣的例子

    最初的代码如下: class Object def abc p "instance abc" end def self.abc p "class abc" en ...