perl-dbd-mysql epel源_MHA部署记录

2023-05-16

一.MHA环境如下

角色 ip地址 主机名 server_id 类型

Monitor host 192.168.0.20 server01 - 监控复制组

Master 192.168.0.50 server02 1 写入

Candicate master 192.168.0.60 server03 2 读

Slave 192.168.0.70 server04 3 读

其中master对外提供写服务,备选master(实际的slave,主机名server03)提供读服务,slave也提供相关的读服务,一旦master宕机,将会把备选master提升为新的master,slave指向新的master

1、安装依赖包

yum install -y gcc ntpdate wget lrzsz vim net-tools openssh-clients*

2、安装epel源

yum install -y epel-release

3、安装组件

1、在所有节点安装MHA node所需的perl模块(DBD:mysql)

yum install perl-DBD-MySQL -y

2、在所有的节点安装mha node:

下载链接:

https://code.google.com/archive/p/mysql-master-ha/downloads

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/mysql-master-ha/mha4mysql-node-0.54.tar.gz

tar xf mha4mysql-node-0.54.tar.gz

cd mha4mysql-node-0.54

perl Makefile.PL

make && make install

报错一

4d7135bc18dd4fcc7ae9189b89551d49.png

解决办法:

root># yum install perl-ExtUtils-MakeMaker

报错二

3d7f6c0a57ff69d85be68bc2b0355417.png

解决办法:

root># yum install perl-CPAN -y

2.安装MHA Manager

MHA Manager中主要包括了几个管理员的命令行工具,例如master_manger,master_master_switch等。MHA Manger也依赖于perl模块,具体如下:

(1)安装MHA Node软件包之前需要安装依赖。我这里使用yum完成,没有epel源的可以使用上面提到的脚本(epel源安装也简单)。注意:在MHA Manager的主机也是需要安装MHA Node。

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install perl-DBD-MySQL -y

(2)安装MHA Manager。首先安装MHA Manger依赖的perl模块(我这里使用yum安装):

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y

安装MHA Manager软件包:

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/mysql-master-ha/mha4mysql-manager-0.54.tar.gz

tar xf mha4mysql-manager-0.54.tar.gz

cd mha4mysql-manager-0.54

perl Makefile.PL

make && make install

复制相关脚本到/usr/local/bin目录

root># cp -rp /root/mha4mysql-manager-0.54/samples/scripts/* /usr/local/bin/

免key配置

root># ssh-copy-id 192.168.56.131

root># ssh-copy-id 192.168.56.132

root># ssh-copy-id 192.168.56.133

数据库配置

1)在server02上执行备份(192.168.56.131)

mysqldump --master-data=2 --single-transaction -R --triggers -A > all.sql

在server02上创建复制用户:

mysql> grant replication slave on *.* to 'repl'@'192.168.56.%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

#修改root密码

mysql> grant all privileges on *.* to root@"%" identified by '123456';

1、在主库上查看偏移量

root># head -n 30 all.sql | grep 'CHANGE MASTER TO'

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=214;

2、在2个从库上执行

CHANGE MASTER TO MASTER_HOST='192.168.56.131',MASTER_USER='repl', MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=214;

3、检查主从是否一致

root># mysql -e 'show slave status\G' | egrep 'Slave_IO|Slave_SQL'

Slave_IO_State: Waiting for master to send event

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

4、两台slave服务器设置read_only(从库对外提供读服务,只所以没有写进配置文件,是因为随时slave会提升为master)

server03<2018-08-14 17:25:23> /data

root># mysql -e 'set global read_only=1'

server04<2018-08-14 17:24:42> /data

root># mysql -e 'set global read_only=1'

5、创建监控用户(在master上执行,也就是192.168.56.131):

mysql> grant all privileges on *.* to 'mha'@'192.168.56.%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

mysql>

6、在master主机上查看master的状态。

mysql> SHOW SLAVE HOSTS;

+-----------+------+------+-----------+--------------------------------------+

| Server_id | Host | Port | Master_id | Slave_UUID |

+-----------+------+------+-----------+--------------------------------------+

| 3 | | 3306 | 1 | b9543701-a052-11e8-b2f6-000c29c77f26 |

| 2 | | 3306 | 1 | bcdbef2c-a052-11e8-b2f6-000c293612be |

+-----------+------+------+-----------+--------------------------------------+

2 rows in set (0.00 sec)

到这里整个集群环境已经搭建完毕,剩下的就是配置MHA软件了。

5.配置MHA

1)创建MHA的工作目录,并且创建相关配置文件(在软件包解压后的目录里面有样例配置文件)。

server01<2018-08-14 17:30:36> ~

root># mkdir -p /etc/masterha

root># cp /root/mha4mysql-manager-0.54/samples/conf/app1.cnf /etc/masterha/

###使用proxysql的mha配置文件

root># cat /etc/masterha/proxy_app_default.cnf

[server default]

manager_workdir=/etc/masterha/app1

manager_log=/etc/masterha/app1/manager_proxy.log

ssh_user=root

ssh_port=22

user=mha

password=123456

ping_type=connect

repl_user=repl

repl_password=123456

master_binlog_dir=/var/lib/mysql/

ping_interval=3

#master failover时执行,不配置vip时不用配

master_ip_failover_script=/etc/masterha/app1/scripts/master_ip_failover_proxy

#shutdown_script=/etc/masterha/power_manager

report_script=/etc/masterha/app1/scripts/send_report_proxy

master_ip_online_change_script=/etc/masterha/app1/scripts/master_ip_online_change_proxy

#secondary_check_script=masterha_secondary_check -s 192.168.56.130

[server1]

hostname=192.168.56.131

port=3306

candidate_master=1

#check_repl_delay=0

[server2]

hostname=192.168.56.132

port=3306

candidate_master=1

#check_repl_delay=0

[server3]

hostname=192.168.56.133

port=3306

candidate_master=1

#check_repl_delay=0

###使用vip的mha配置文件

root># cat vip_app_default.cnf

[server default]

manager_workdir=/etc/masterha/app1

manager_log=/etc/masterha/app1/manager_vip.log

ssh_user=root

ssh_port=22

user=mha

password=123456

ping_type=connect

repl_user=repl

repl_password=123456

master_binlog_dir=/var/lib/mysql/

ping_interval=3

#master failover时执行,不配置vip时不用配

master_ip_failover_script=/etc/masterha/app1/scripts/master_ip_failover

#shutdown_script=/etc/masterha/power_manager

report_script=/etc/masterha/app1/scripts/send_report

master_ip_online_change_script=/etc/masterha/app1/scripts/master_ip_online_change

#secondary_check_script=masterha_secondary_check -s 192.168.56.130

[server1]

hostname=192.168.56.131

port=3306

candidate_master=1

#check_repl_delay=0

[server2]

hostname=192.168.56.132

port=3306

candidate_master=1

#check_repl_delay=0

[server3]

hostname=192.168.56.133

port=3306

candidate_master=1

#check_repl_delay=0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

perl-dbd-mysql epel源_MHA部署记录 的相关文章

  • 在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是什么?

    看来类常量只涵盖PDO PARAM BOOL PDO PARAM INT and PDO PARAM STR用于绑定 您只是将十进制 浮点 双精度值绑定为字符串还是有更好的方法来处理它们 MySQLi 允许使用 d 类型表示 double
  • 导入 .pl 文件

    我想知道如何将 Perl 文件导入到脚本中 我尝试了 use require 和 do 但似乎没有什么对我有用 这就是我用 require 做到的 usr bin perl require equations print x1 n 是否可以
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • Web 开发中的 Perl [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何解决 MySQL innodb 在 TRUNCATE TABLE 上“等待表元数据锁”?

    在 GitLab CI 服务器中运行包含数百个应用程序单元测试的测试套件 运行 10 次测试后 不知怎的 它总是卡在等待 TRUNCATE TABLE 上的表元数据锁上 这是一个拆卸步骤 我知道SHOW ENGINE INNODB STAT
  • 在 MySQL 数据库上使用版本控制 (Git)

    我是一名 WordPress 设计师 开发人员 越来越多地使用版本控制 特别是 Git 尽管我确实在某些项目中使用 SVN 我目前正在使用 Beanstalk 作为我的远程仓库 将所有 WordPress 文件添加到我的存储库中是没有问题的
  • 将 mysql LONGTEXT 值转换为 VARCHAR 值?

    我有一个在用户 Facebook 墙上发布的功能 我发送到 facebook 的一件事是我从设置为 LONGTEXT 的 mysql 表中获取的一些文本 如果我将表设置为 LONGTEXT 则文本不会发送到 facebook 但如果我将表设
  • 如何编写 bash 函数来包装另一个命令?

    我正在尝试编写一个函数包装器mysql command If my cnf存在于 pwd 中 我想自动附加 defaults file my cnf到命令 这就是我正在尝试的 function mysql if e my cnf then
  • 有没有办法只安装mysql客户端(Linux)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有不需要安装整个mysql db安装包的Linux mysql命令行工具 我想做的是从服务器 1 应用程序服务器 执行将在服务器 2
  • 在 Perl 中查找数组的大小

    我似乎遇到过几种不同的方法来查找数组的大小 这三种方法有什么区别呢 my arr 2 print scalar arr First way to print array size print arr Second way to print
  • MySQL 使用 DATE_ADD 设置 DATE 列的默认值?

    我正在尝试使用表达式将 DATE 列添加到具有 DEFAULT DATE 值的表中 ALTER TABLE wp ezts project params ADD est completion DATE NOT NULL DEFAULT DA
  • 将java应用程序与在线托管的mysql数据库连接

    我已经用java构建了一个应用程序 应用程序是一个 将在3个不同的系统上使用 因此 该应用程序的数据库必须在线 以使所有 3 个应用程序都具有最新的数据库 In starting I developed my application bas
  • 无法打开 phpmyadmin,require_once(./libraries/common.inc.php):无法打开流:没有这样的文件或目录

    当我做php usr share phpmyadmin index php 我明白了 PHP 警告 require once libraries common inc php 无法打开流 第 33 行 usr share phpmyadmi
  • 无法将包含数据的大型 CSV 文件转换为 mysql 数据库[重复]

    这个问题在这里已经有答案了 如何将大型文本文件转换为mysql数据库 文件大小3GB 1100万行 文件中的每一行都是这样的 1303179444 20 5811 Ahmed Al Emam male ahmed e alemam ahme
  • 如何使用 MySQL 和 PHP 在数据库中存储标签?

    我想创建一个数据库来存储用户为其问题输入的标签 然后为发布的每个单独问题显示所有标签 像这里这样的东西 这是现在为我做所有事情的表 CREATE TABLE questions tags id INT UNSIGNED NOT NULL A
  • 使用 sed 替换复杂模式

    我想使用 sed 命令替换模式 要删除的图案如下所示 带有一个空格 var 0xaae8 x6A x6F x69 x6E x72 x65 x76 x65 x72 x73 x65 x73 x70 x6C x69 x74 x3E x74 x70
  • Python MySQL 模块

    我正在开发一个需要与 MySQL 数据库交互的 Web 应用程序 但我似乎找不到任何真正适合 Python 的模块 我特别寻找快速模块 能够处理数十万个连接 和查询 所有这些都在短时间内完成 而不会对速度产生重大影响 我想我的答案将是游戏领
  • 检查程序是否正在运行,如果不在 perl 中则运行它

    我想知道如何检查程序是否正在运行 如果没有则运行该程序 使用 Kill 函数向要检查的进程 ID 发送 0 零 信号 如果进程存在 函数返回true 否则返回false Example check if process 1525 is ru
  • 像搜索一样在mysql中包含空格

    我在某些情况下使用 mysql like 关键字时遇到问题 我的要求是这样的 首先 当我搜索时 ABC 结果应该找到ABC and ABCdef但不是xyzABCdef or xyzABC 乍一看使用起来很简单ABC 但在我搜索时的情况 h
  • 如何强制 Perl 按需重新编译使用“/o”编译的正则表达式?

    技术问题 给定一个正则表达式 my regEx qr whatever myVar oxi Notice o for compile once 强制重新编译的最有效方法是什么一经请求 例如 当我从程序逻辑中知道 myVar值改变 而不下降

随机推荐