linux下mysql安装,默认主从复制配置,半同步复制配置,MHA搭建

linux下安装mysql
环境准备
  • 虚拟机:VMware-workstation-full-15.0.2-10952284
  • 镜像:CentOS-7-x86_64-DVD-1503-01
  • mysql:mysql-5.7.28-1.el7.x86_64.rpm-bundle
安装前准备
  • 在mysql目录下准备好rpm安装包

在这里插入图片描述

开始安装mysql
  1. 解压安装包:

    • 解压:tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

    • 解压成功显示:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tvnigZf1-1601090308576)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200526212502906.png)]

    • 解压之后出现很多rpm安装包,不需要全部安装,只需要安装几个主要的即可

  2. 移除mariadb

    • 注意:centos7已经存在了一个mariadb,所以在安装mysql之前应该把去除mariadb,以防冲突;

    • 检查mariadb是否在当前环境已经安装,命令:rpm -qa|grep mariadb

    • 如图显示已经安装5.5.41

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UVfgQ65e-1601090308577)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200526213056721.png)]

    • 有则需要移除,命令:rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps

    • 删除成功如下图:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sE0V7K1h-1601090308578)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200526214154575.png)]

    • 再次查看命令:rpm -qa|grep mariadb 什么不显示表示已经删除了

  3. rpm安装包运行(注意顺序),如下图则表示安装成功

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5fiF1idw-1601090308579)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200526214542633.png)]

    • 安装common:rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
    • 安装libs:rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
    • 安装libs-compat:rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
    • 安装client:rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
    • 安装server:rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
    • 安装devel(可不装):rpm -ivh mysql-community-devel-5.7.28-1.el7.x86_64.rpm
  4. 数据库实例化且自启动

    • 实例化数据库:mysqld --initialize --user=mysql

    • 实例化之后会产生一个root用户名,且随机生成一个密码:mWHi<DNpH7.(

    • 可通过该命令查看初始化密码:cat /var/log/mysqld.log

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Axej46eo-1601090308580)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200526215602470.png)]

    • 启动mysql服务且作为系统自动启动:systemctl start mysqld.service

    • 查看状态是否成功:systemctl status mysqld.service

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TONn3FLj-1601090308581)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200526215952568.png)]

    • 登陆mysql:mysql -uroot -p

    • 输入上面生成的随机密码

    • 修改root密码:set password=password(‘root’);

    • 退出(exit;)后再次进入(mysql -uroot -p)查看密码是否修改正确

关闭机器防火墙
  • 该系统为centos7,默认防火墙为firewalld

  • 关闭iptables:systemctl stop iptables(如果有安装则关闭)

  • 关闭firewalld:systemctl stop firewalld

  • 设置每次启动不开启防火墙:systemctl disable firewalld.service

主从复制配置

默认使用异步复制:存在数据丢失的问题

主库配置
  • 配置y.cnf,在路径etc下

  • 打开配置文件my.cnf追加如下

    log_bin=mysql-bin(只在主库开启)

    server-id=1

    sync-binlog=1(选择性设置,每次写入性操作与磁盘同步)

    binlog-ignore-db=information_schema(指定该库不复制)

    binlog-ignore-db=performance_schema (指定该库不复制)

    binlog-ignore-db=sys (指定该库不复制)

    binlog-do-db=laosan (指定该库进行复制)

  • 重启mysql服务:systemctl restart mysqld

  • 授权性操作,主库授权给从库

  • 进入mysql:mysql -uroot -p

  • 复制用的用户:grant replication slave on . to ‘root’@’%’ identified by ‘root’;

  • 监控用的用户:grant all privileges on . to ‘root’@’%’ identified by ‘root’;

  • 刷新权限:flush privileges;

  • 查询状态:show master status;需要记住File文件,表示在这个时间点开始复制;

从库配置
  • 打开配置文件my.cnf追加如下

    server-id=2

    relay_log=mysql-relay-bin(可选)

    read_only=1

  • 重启mysql服务:systemctl restart mysqld

  • 进入mysql:mysql -uroot -p

  • 查询状态:show slave status;第一次查询后什么都不显示,

  • 如果有查询到信息,需要调用stop slave来停止;

  • 指明对谁进行复制:change master to master_host=‘192.168.0.107’,master_port=3306,master_user=‘root’,master_password=‘root’,master_log_file=‘mysql-bin.000003’,master_log_pos=869;

  • 再来一个授权用于别的系统登录:grant all privileges on . to ‘root’@’%’ identified by ‘root’;

  • (192.168.0.105为主库的地址,mysql-bin.000001和869为主库状态信息)

  • 开启slave:start slave;

  • 查看slave:show slave status \G;(此时会有很多信息表明主从配置正常);

开始验证功能
  • 主库创建数据库:create database laosan;
  • 进入创建的数据库:use laosan;
  • 创建表结构:
  • 插入数据:insert into dept values (1,‘java’);
相关问题
  • 主从库注意设置不同的server-id和server_uuid(复制的虚拟机server-uuid是一样的)
  • 再加一台slave:
    • 数据量小的话从库配置再来一遍;
    • 数据量太大可先将主库数据备份一份导入到slave,再去配置主从配置的相关配置;
  • 备份数据库:
    • 进入某一目录再进行导出
    • 可使用mysqldump --help查看各种参数和命令
    • mysqldump --all-databases > mysql_back_all.sql -uroot -p
    • 输入密码后ls查看备份的数据;
    • 将sql文件再新机器执行即可
半同步复制
数据库配置
  • 进入mysql:mysql -uroot -p

  • 查看是否有动态加载插件的安装:select @@have_dynamic_loading;(YES开启)

  • 查看有哪些插件:show plugins;

  • 安装semi并且重命名: install plugin rpl_semi_sync_master soname ‘semisync_master.so’;(主从安装的不一样,主库是master,从库是slave)

  • 查看semi相关参数:show variables like ‘%semi%’;(从库参数只有两个)

  • 设置semi开启和timeout:set global rpl_semi_sync_master_enabled=1;

  • set global rpl_semi_sync_master_timeout=1000; (主库需要)

  • 重启slave:stop slave;start slave;(从库需要)

  • 测试

    • 插入数据测试:
    • 是否半同步复制,查看log日志
    • 退出mysql并查看日志
    • cd var/log 下mysql.log ,最后可以看到semi-sync类似的信息,半同步生效;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Y1DXrvB-1601090308582)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200529004714564.png)]

MHA搭建

1主,2从,1MHA

相关配置
  • 由于MHA manager通过SSH访问所有的node节点,各个node节点也同样通过SSH来相互发送不同的relay log 文件,所以要在每一个node和manager上配置SSH无密码登陆

  • 在4台机器上分别生成秘钥对

    • ssh-keygen,一路回车
      + [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8JKJzr72-1601090308582)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200529010324749.png)]
  • 每台节点分别将自己的公钥发送到另外的三台节点

    • ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.16.151
    • ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.16.152
    • ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.16.153
    • ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.16.154
      + [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NQuKcvA8-1601090308583)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200529010353468.png)]
master配置
  • 进入到etc/my.cng下,且修改以下参数
    • server-id = 1 //复制集群中的各节点的id均必须唯一
    • log-bin = master-log //开启二进制日志
两台slave配置
  • 进入到etc/my.cng下,且修改以下参数
    • server-id = 1 //复制集群中的各节点的id均必须唯一
    • log-bin = master-log //开启二进制日志
    • relay_log=mysql-relay-bin
    • log-slave-updates=true //更新数据的语句也记录在slave自己的bin log中
    • relay_log_purge=0 //是否自动清空不再需要中继日志
安装MHA包及验证
  • 4个节点均安装node

    • yum -y install perl-DBD-MySQL ncftp perl-DBI.x86
    • rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
      + [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WeQz3SI8-1601090308583)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200529012831871.png)]
  • Manager 节点需要安装manager

    • yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y
    • 若报错:Cannot retrieve metalink for repository: epel. Please verify its path and try again
    • 打开/etc/yum.repos.d/epel.repo,注释掉mirrorlist,放开baseurl
    • 清理源,重新安装:yum clean all
    • rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
  • 创建manager工作目录

    • mkdir /etc/mha
    • vim /etc/mha/mha.cnf
    • 配置文件如下:
    • [server default] //适用于server1,2,3个server的配置
    • user=mhaadmin //mha管理用户
    • password=mhapass //mha管理密码
    • manager_workdir=/etc/mha_master/app1 //mha_master自己的工作路路径
    • manager_log=/etc/mha_master/manager.log // mha_master自己的日志文件
    • remote_workdir=/mydata/mha_master/app1 //每个远程主机的工作目录在何处
    • ssh_user=root // 基于ssh的密钥认证
    • repl_user=slave //数据库用户名
    • repl_password=magedu //数据库密码
    • ping_interval=1 //ping间隔时长
    • [server1] //节点2
    • hostname=192.168.37.133 //节点2主机地址
    • ssh_port=22 //节点2的ssh端口
    • candidate_master=1 //将来可不可以成为master候选节点/主节点
    • [server2]
    • hostname=192.168.37.133
    • ssh_port=22
    • candidate_master=1
    • [server3]
    • hostname=192.168.37.144
    • ssh_port=22
    • candidate_master=1
  • ssh有效性验证:masterha_check_ssh --conf=/etc/mha/mha.cnf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wujVMCuv-1601090308584)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200529220310849.png)]

  • 复制有效性校验:masterha_check_repl --conf=/etc/mha/mha.cnf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kNHMfpWK-1601090308584)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200529221721438.png)]

  • 启动mha:nohup masterha_manager -conf=/etc/mha/mha.cnf &>/home/mha/manager.log

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ir6u9aa-1601090308585)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200529222545407.png)]

  • 查看是否启动:masterha_check_status --conf=/etc/mha/mha.cnf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0dUbMLLG-1601090308585)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200530120137738.png)]

  • 停掉master mysql
  • 查看mha日志:cat /etc/mha_master/manager.log

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mUX9Avqt-1601090308586)(C:\Users\laosan\AppData\Roaming\Typora\typora-user-images\image-20200530132453549.png)]

  • 再次查看mysql从库状态,对应的主库已经发生变化
  • 手动对主从进行配置,mha重启,并检测状态,上面已有相关方法,参考即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值