mysql

mysql replication related privileges

一、权限说明

在配置mysql replication时,有一步骤:

其中两个权限的含义如下。

REPLICATION CLIENT:

enables the use of SHOW MASTER STATUS and SHOW SLAVE STATUS.

该权限用于查看replication的状态。

REPLICATION SLAVE:

The REPLICATION SLAVE privilege should be granted to accounts that are used by slave servers to connect to the current server as their master. Without this privilege, the slave cannot request updates that have been made to databases on the master server.

该权限用于slave机连接master并进行复制。

一般来说,我们会单独在主服务器创建一个专门用于Replication的账户。这个账户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,保证该用户的职责单一。假定我们要建立的这个账户为repl,密码为repl,那么这一操作的命令如下:
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’192.168.0.%’ IDENTIFIED BY ‘repl’;
其中要特别说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。如果没有使用通配符,而访问的服务器又不在上述配制里,那么你将无法使用该账户从你的服务器replicate主服务器.

二、实践tips

在《Hight Performance MySql》一书中对用户权限的设置有所不同,作者建议在主机和从机上都配置repl账户,并同时赋予REPLICATION SLAVE和REPLICATION CLIENT权限,命令如下:
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@’192.168.0.%’ IDENTIFIED BY ‘repl’;
作者解释了这样做的好处:一方面使用同一账户对Replication进行监视管理会很方便,不必区分slave,master,另一方面,repl账户在slave和master上的配制是一样的,这样如果我们切换slave和master,账户不需要做任何改动。

参考:http://blog.csdn.net/bluishglc/article/details/5744303

 

mysql MHA solutions

参考:https://code.google.com/p/mysql-master-ha/wiki/Overview

一、官网场景—— 一主多从

1.主要使用场景:提供master容灾,在master宕机之后,以最短的时间自动将slave提升为master。

工作方式:在master dead之后,自动选择一个slave(可以配置一个优先slave)接管master业务。并配置其他slave切换replication到新的master。

2.除此之外还有:在线master切换(0.5s-2s的不可写时间)。

二、难点——当然也就是MHA试图解决的问题

以下是手工打造时的难点,而MHA进行了解决。

1.选最新的slave接管master。

最新不好检查及选择。

2.其他不是最新的slave的一致性问题。

其他slave切换到新master,会丢失与原master的transaction,造成binary log event不一致。

手工检查binlog是一件很复杂且不易操作的事情。

三、官网wiki提供的其他各种solution

参考:https://code.google.com/p/mysql-master-ha/wiki/Other_HA_Solutions#Master,_one_candidate_master,_and_multiple_slaves

待续…

mysql MHA configuration

一、编写MHA配置文件

1.全局配置文件

编辑:/etc/masterha_default.cnf

2.应用配置文件

每个slaver的配置文件单独编写。而且需要为多个app单独编写配置文件,并在配置文件中使用不同的物理路径。

app1

app2

二、其他配置

参考:https://code.google.com/p/mysql-master-ha/wiki/Requirements

运行masterha_manager来检查配置是否有缺漏。

1.ssh 免密码登陆

检查:

注: masterha_check_ssh 不加配置文件则会报错:

2.关闭自动清除relay log[1]

关闭原因:By default, relay logs on slave servers are automatically removed if SQL threads have finished executing them. But such relay logs might still be needed for recovering other slaves.

什么是relay log: relay-log日志记录的是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器。

配置方法:

关闭之后要手工进行relay log文件的清理,使用Linux自己的cron。周期可以根据磁盘及文件保留期情况自行安排。

三、测试使用

1.测试master 不存在

关闭master

可以查看日志:

 

登陆slave机

可以代替master的功能接收数据。

2.重新启动原master

 

【注1】原master起来以后有个问题,就是其全局可写。如果这时有数据插进来,会造成新老master数据不一致。因此应该在重启原master后首先设置global read_only=1。然后将原master切为slave,从新master上同步所有数据。

【注2】同步数据时,原master会等到新master有一次数据操作时,统一将所有数据变化同步过来。这个时刻不是在配完slave后就完成,需等新master。

切换主从的blog:http://bananalighter.com/change-slaver2master/

参考:http://ylw6006.blog.51cto.com/470441/890360/

 

mysql MHA Install

一、MHA软件并没有实现主从复制的功能,所以:

1、可以用于现有系统

2、需要自己手动先把mysql的主从集群配起来

二、安装MHA

安装部分官方wiki:https://code.google.com/p/mysql-master-ha/wiki/Installation#Installation

1.安装MHA node(所有mysql server,包括master/slaver)

 

2.安装MHA Manager

参考:https://code.google.com/p/mysql-master-ha/wiki/Installation#Installing_MHA_Manager

MHA Manager提供了几个命令行管理工具,依赖于以下包(需要epel源):

  • MHA Node package
  • DBD::mysql
  • Config::Tiny
  • Log::Dispatch
  • Parallel::ForkManager
  • Time::HiRes (included from Perl v5.7.3)

安装完毕,接下来就是HA的配置。

下一篇:

参考:

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

https://code.google.com/p/mysql-master-ha/wiki/Tutorial

【从大坑中爬出】mysql将slave转为master

【从大坑中爬出】mysql将slave转为master

一、查看日志应用状态

(其实我也没看懂。。。)

二、修改/etc/my.cnf(参考master配置,此处祭出师父blog,略)

http://debugo.com/mysql-5-6-master-slave/

三、停slave,关掉只读

1.停slave

2.关只读

3.重置slave

四、如果未生效则重启下mysql进程试试

 

参考:http://blog.itpub.net/758322/viewspace-714346

 

 

Linux连接mysql报错Accessdenied for user

Linux连接mysql报错Accessdeniedforu

关键点:改密码。。。。

问题根源:安装mysql server后未设置管理员用户名密码。

转载原文:http://blog.csdn.net/love__coder/article/details/6937708

一、停原服务

二、mysqlsafe启动

三、登陆&改密码

四、重启服务