搜索
您的当前位置:首页正文

MySQL MHA配置常见问题

2023-11-10 来源:哗拓教育

MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步。尽管如此,在部署配置的过程中,由于疏忽总难以避免这样或那样的错误。本文是对MHA配置中常见问题的一个汇总,供大家参考。http://hovertree.com/menu/mysql/

 

1、非root用户等效性环境等效性配置  a、添加所有节点(含管理节点)主机名及IP到host文件,所有节点操作  b、生成基于非root用户(如使用mysql账户)的对称密钥,使用ssh-keygen  c、复制公钥到其他各节点(含管理节点),如下,且使用了非缺省ssh 端口    ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 50011 mysql@172.16.16.10"   d、验证等效性(首次需要输入密码)    ssh -p 50011 vdbsrv1 date;ssh -p 50011 vdbsrv2 date;ssh -p 50011 vdbsrv3 date;ssh -p 55555 vdbsrv4 date

 

2、MHA管理节点目录权限问题  ###如果在管理节点使用了非root用户进行mha管理,则需要相关权限,否则报错  ###如下我们使用mysql用户管理mha,则在root账户先创建相关目录,在赋权给mysql  # mkdir -p /var/log/masterha/app1  # chown -R mysql:mysql /var/log/masterha  # su - mysql  $ masterha_check_repl --conf=/etc/app1.cnf   ###使用mysql用户校验复制关系

 

3、需要添加用于登陆到mysql服务器账户  ###需要STOP SLAVE, CHANGE MASTER, RESET SLAVE等相关权限,该账户要添加到mha配置文件中,主从切换时用到  ###在mysql数据库各节点执行,如下由于跨网段,所以分配了跨网段账户,否则,单条赋权即可  ### Author : Leshami  ### Blog   : http://blog.csdn.net/leshami  mysql> grant all privileges on *.* to ‘mha‘@‘172.16.16.%‘ identified by ‘***‘;  Query OK, 0 rows affected (0.00 sec)    mysql> grant all privileges on *.* to ‘mha‘@‘192.168.1.%‘ identified by ‘***‘;  Query OK, 0 rows affected (0.00 sec)

 

4、需要添加用于建立复制关系的账户  ###在mysql数据库各节点执行,如下由于跨网段,所以分配了跨网段账户,否则,单条赋权即可  mysql> grant replication slave on *.* to ‘repl‘@‘172.16.16.%‘ identified by ‘***‘;  Query OK, 0 rows affected (0.00 sec)    mysql> grant replication slave on *.* to ‘repl‘@‘192.168.1.%‘ identified by ‘***‘;  Query OK, 0 rows affected (0.00 sec)

 

5、从库的各客户端应开启binlog,即log_bin=on  ###未开启则收到如下提示:  Mon Apr 13 20:02:15 2015 - [warning]  log-bin is not set on slave SZ-DB-SLAVE01(192.168.81.3:3306).   This host cannot be a master.

 

6、各主从库应该使用相同的复制过滤规则  ###否则收到如下的错误提示:  Mon Apr 13 20:02:15 2015 - [error][/usr/lib/perl5/site_perl/5.8.8/MHA/ServerManager.pm, ln546] Replication       filtering check failed on dbsrv3(192.168.1.3:3306)! All slaves must have same replication filtering rules.      Check SHOW SLAVE STATUS output and set my.cnf correctly.  Mon Apr 13 20:02:15 2015 - [warning] Bad Binlog/Replication filtering rules:

 

7、各从库应设置relay_log_purge=0  ###否则收到以下告警信息 ##mysql -e ‘set global relay_log_purge=0‘ 动态修改该参数,因为随时slave会提升为master。补充@150420  Mon Apr 13 20:02:15 2015 - [warning]  relay_log_purge=0 is not set on slave vdbsrv2(172.16.16.12:3306).  

8、各从库设置read_only=1  ###否则收到以下告警信息 ## mysql -e ‘set global read_only=1‘ 动态修改该参数,因为随时slave会提升为master。补充@150420  Mon Apr 13 20:19:54 2015 - [info]  read_only=1 is not set on slave vdbsrv3(172.16.16.13:3306).

 

9、mysqlbinlog version过低  ###大多数情况下我们使用yum方式安装perl-DBD-MySQL,该方式会自动安装mysql rpm包。  ###MHA在执行master_check_repl会调用/usr/bin/mysqlbinlog,对于源码安装在不同的路径的mysql高版本  ###则收到如下错误提示:  Thu Apr 16 14:01:44 2015 - [info]   Connecting to mysql@192.168.1.7(vdbsrv2:22)..   mysqlbinlog version is 3.2 (included in MySQL Client 5.0 or lower). This is not recommended.     Consider upgrading MySQL Client to 5.1 or higher.    ###解决方案是编译安装perl-DBD-MySQL时指定mysql安装位置,或者参考:mysqlbinlog can not parse row based events  

10、缺省路径下mysql客户端如果不存在则出现以下提示  ###通过建立软链或者yum install perl-DBD-MySQL会自动安装mysql  Testing mysql connection and privileges..sh: mysql: command not found  mysql command failed with rc 127:0!   at /usr/bin/apply_diff_relay_logs line 375

 

11、清理mysql.user用户表中用户名为空的记录(补充@20150421)

    笔者有一次在做在线切换时发现复制账户从一个slave可以到新master,而无法从original master连接到新master,删除用户为空记录后正常

推荐:http://www.cnblogs.com/roucheng/p/mysqljichu.html

MySQL MHA配置常见问题

标签:

小编还为您整理了以下内容,可能对您也有帮助:

mysql安装配置问题

一、确认MYSQL已经配置且正确 

重新配置 如果是重新安装的MYSQL,请确认安装后的MYSQL经过第一次配置,否则会缺少my.ini文件,配置方法,可以在安装到最后一步时选择,现在开始配置MYSQL,或在程序组中运行MYSQL配置向导。配置完成后,要确保my.ini文件中[mysqld]字段下至少有basedir安装目录路径和datadir数据库路径。 配置之前,如果原来已经有过MySQL配置,可以先在MYSQL向导中进行执行一次REMOVE INSTANCE,然后再重新配置。 覆盖数据表 默认的MYSQL数据库会安装到My Document下,所以如果您的数据库目录在其它路径下,可以先把MYSQL停止掉,然后把数据库剪切到其它路径,然后拷贝相关数据表进入同一目录即可。 如果MYSQL数据表使用不同的账户,还需要在MYSQL创建账户,或直接使用原来的MYSQL数据表覆盖(需确认之前的MSYQL数据表是未损坏的)。 解决无法启动 遇到无法启动MYSQL时常见解决方法: A、先使用命令C:Program filesmysqlinmysqladmin-u root -p shutdown来关闭MYSQL B、再在cmd命令行下,执行net start mysql启动mysql。  二、1067错误常见解决方法 故障现象 如果在停止MYSQL(net stop mysql)或启动MYSQL时,出现1067错误,错误信息“MySql 服务正在停止...系统出错(A system error has occurred.)...系统发生 1067 错误(System error 1067 has occurred.),进程意外终止(The process terminated unexpectedly.)”等。 常见解决方法 如果以前一直运行OK的,请先按照上面的“无法启动”解决方法执行一次看看。 如果进行过Remove Instance操作,再次重建时后,一定要检查my.ini文件中的datadir是否已被还原了,如果该地址下数据库不存在,也将报告1067错误,只需要修改成真实的数据库目录地址,然后手动启动即可。 检查MYSQL目录权限 检查my.ini文件中[mysqld]字段下是否有basedir安装目录路径和datadir数据库路径,my.ini可能需要出现在两个地方,MYSQL的安装目录和Windows目录(假设是windows环境)下,都要检查一下。 有时候删除%windir%/my.ini文件然后再重新配置也可以解决,再次配置后检查一下Windir目录下是否有my.ini文件,有时把安装目录下最新的my.ini拷贝过去覆盖一下也能解决问题。 如果是Linux环境,试一下把mysql.server拷贝至/etc/rc.d/init.d/下,然后再运行chkconfig mysql.server,之后就可以在命令行中设置PATH、使用命令执行mysql启动。  三、非法关机造成的MYSQL无法启动问题 如果是因为非法关机等原因导致MYSQL无法启动或启动有问题的,最好使用重新安装的或确认是OK的MYSQL数据表及ibdata1、mysql.pid、ib_logfile0等文件进行覆盖,天缘试过遇到过多次这种情况,就是原来的MYSQL表有问题了,总是无法启动,但是更换成新表就可以。  四、重装MYSQL 发现MYSQL有问题时,最便捷的方法,是先把mysql卸载掉,然后重装重新配置,具体方法如下: 1、卸载MYSQL,清理掉安装目录和Windows目录下的my.ini文件。 2、检查任务管理器中是否还有mysql进程,如果有,可以把mysqld.exe杀掉,或者先杀掉再卸载也可以。 3、在cmd命令窗口,执行:sc delete mysql,该命令是清理注册服务命令。 3. 重装 mysql 如果是安全设置以后出现这个问题,可能是因为mysql以低权限运行的时候因为密码策略等问题导致,大家看恶意将mysql的启动用户更下下密码,然后在服务项里设置下即可。

mysql安装配置问题

一、确认MYSQL已经配置且正确 

重新配置 如果是重新安装的MYSQL,请确认安装后的MYSQL经过第一次配置,否则会缺少my.ini文件,配置方法,可以在安装到最后一步时选择,现在开始配置MYSQL,或在程序组中运行MYSQL配置向导。配置完成后,要确保my.ini文件中[mysqld]字段下至少有basedir安装目录路径和datadir数据库路径。 配置之前,如果原来已经有过MySQL配置,可以先在MYSQL向导中进行执行一次REMOVE INSTANCE,然后再重新配置。 覆盖数据表 默认的MYSQL数据库会安装到My Document下,所以如果您的数据库目录在其它路径下,可以先把MYSQL停止掉,然后把数据库剪切到其它路径,然后拷贝相关数据表进入同一目录即可。 如果MYSQL数据表使用不同的账户,还需要在MYSQL创建账户,或直接使用原来的MYSQL数据表覆盖(需确认之前的MSYQL数据表是未损坏的)。 解决无法启动 遇到无法启动MYSQL时常见解决方法: A、先使用命令C:Program filesmysqlinmysqladmin-u root -p shutdown来关闭MYSQL B、再在cmd命令行下,执行net start mysql启动mysql。  二、1067错误常见解决方法 故障现象 如果在停止MYSQL(net stop mysql)或启动MYSQL时,出现1067错误,错误信息“MySql 服务正在停止...系统出错(A system error has occurred.)...系统发生 1067 错误(System error 1067 has occurred.),进程意外终止(The process terminated unexpectedly.)”等。 常见解决方法 如果以前一直运行OK的,请先按照上面的“无法启动”解决方法执行一次看看。 如果进行过Remove Instance操作,再次重建时后,一定要检查my.ini文件中的datadir是否已被还原了,如果该地址下数据库不存在,也将报告1067错误,只需要修改成真实的数据库目录地址,然后手动启动即可。 检查MYSQL目录权限 检查my.ini文件中[mysqld]字段下是否有basedir安装目录路径和datadir数据库路径,my.ini可能需要出现在两个地方,MYSQL的安装目录和Windows目录(假设是windows环境)下,都要检查一下。 有时候删除%windir%/my.ini文件然后再重新配置也可以解决,再次配置后检查一下Windir目录下是否有my.ini文件,有时把安装目录下最新的my.ini拷贝过去覆盖一下也能解决问题。 如果是Linux环境,试一下把mysql.server拷贝至/etc/rc.d/init.d/下,然后再运行chkconfig mysql.server,之后就可以在命令行中设置PATH、使用命令执行mysql启动。  三、非法关机造成的MYSQL无法启动问题 如果是因为非法关机等原因导致MYSQL无法启动或启动有问题的,最好使用重新安装的或确认是OK的MYSQL数据表及ibdata1、mysql.pid、ib_logfile0等文件进行覆盖,天缘试过遇到过多次这种情况,就是原来的MYSQL表有问题了,总是无法启动,但是更换成新表就可以。  四、重装MYSQL 发现MYSQL有问题时,最便捷的方法,是先把mysql卸载掉,然后重装重新配置,具体方法如下: 1、卸载MYSQL,清理掉安装目录和Windows目录下的my.ini文件。 2、检查任务管理器中是否还有mysql进程,如果有,可以把mysqld.exe杀掉,或者先杀掉再卸载也可以。 3、在cmd命令窗口,执行:sc delete mysql,该命令是清理注册服务命令。 3. 重装 mysql 如果是安全设置以后出现这个问题,可能是因为mysql以低权限运行的时候因为密码策略等问题导致,大家看恶意将mysql的启动用户更下下密码,然后在服务项里设置下即可。

关于Mysql的配置问题

1、安装向导欢迎界面

2、选择安装类型

Typical(典型)、Complete(完全)、Custom(自定义)

选择“Custom”安装

3、自定义安装

默认情况下MySQL将会被安装到C:\Program

Files\MySQL\MySQL

Server

4.1\文件夹里面。

可以点“Change”更改路径。(建议装在非系统盘,如:

D:\Mysql)

4、准备开始安装

Install——开始安装

5、创建MySQL.com帐号的界面,如果是首次使用MySQL,选“Create

anew

free

MySQL.com

accout”。(建议选skip

sign-up跳过)

7、安装完成界面

注意:这里有个配置向导的选项(Configure

the

MySQL

Server

now),建议勾选立即配置你的MySQL。

9、配置类型选择页面。选“Detailed

configuration”(详细配置)。

10、进入服务类型选择页面。选“Developer

Machine”(开发者机器),这样占用系统的资源不会很多。

11、数据库用法选择页面。选择“Multifunctional

Database”。

12、选择InnoDB数据存放位置页面。

不用更改设置,直接放在Installation

Path安装目录里即可

13、选择MySQL的同时联接数。

选择“Manual

Setting”,设置根据自己需要,酌情设置。

14、配置MySQL在TCP/IP通讯环境中的端口。

选择默认的3306端口即可。

15、选择MySQL中的字符设置。

注意,这里的选择将会影响你是否能在MySQL中使用中文。选择gb2312字符集以便支持简体中文,繁体中文选big5。

16、设置Windows服务选项。

注意,“Install

As

Windows

Service”一定要勾选,这是将MySQL作为Windows的服务运行。“Service

Name”就用默认的“MySQL”或者你喜欢的服务名(推荐用默认的“MySQL”)。下面的“Launch

the

MySQL

Server

automatically”一定要勾选,这样Windows启动时,MySQL就会自动启动服务,要不然就要手工启动MySQL。出现10061错误,原因在这里。

17、设置根帐号root的登录密码。

“Modify

Security

Settings”是设置根帐号的密码,输入你设定的密码即可。“Create

An

Anonymous

Account”是创建一个匿名帐号,这样会导致未经授权的用户非法访问你的数据库,有安全隐患,建议不要勾选。

18、MySQL配置向导将依据你上面的所有设定配置MySQL,以便MySQL的运行符合你的需要。

点“Execute”开始配置,当出现“Service

started

successfully”时,说明你的配置完成,MySQL服务启动成功。

点“Finish”完成,整个MySQL的配置完成,剩下的就是用MySQL客户端连接MySQL服务器,然后使用了。

19、检查

在Windows

2k3下安装完MySQL后,它就已经自动启动服务了,并且在开始菜单中有其客户端的快捷方式连接。

20、通过Windows的服务管理器查看。

“开始”-“运行”,输入“services.msc”,回车。弹出Windows的服务管理器,然后就可以看见服务名为“mysql”的服务项了,其右边标明“已启动”。

21、开启和关闭

开始”-“运行”,输入“cmd”,回车后,

打开命令提示符界面

启动mysql服务:输入“net

start

mysql”

停止mysql服务:输入“net

stop

mysql”

Top