centos7 安装mysql5.6.34 配置双master keepalived实现

来源:互联网 发布:淘宝上的狗狗靠谱吗 编辑:程序博客网 时间:2024/06/04 22:57

linux安装与删除:

tar.gz包的删除是删除系统下所有的mysql相关文件
[root@DB-Server ~]#find / -name mysql
/var/spool/mail/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/include/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/bin/mysql
/usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/data/mysql
/usr/local/mysql
[root@DB-Server init.d]# rm -rf /usr/local/mysql-5.7.5-m15-linux-glibc2.5-x86_64/
[root@DB-Server init.d]# rm -rf /usr/local/
[root@DB-Server init.d]# rm -rf /var/spool/mail/mysql
[root@DB-Server init.d]#   

3: 删除一些配置文件

配置文件一般有/etc/my.cnf 或/etc/init.d/mysql.server,视具体安装配置情况而定。

 

4:删除MySQL用户以及用户组

[root@DB-Server ~]# id mysql
uid=101(mysql) gid=501(mysql) groups=501(mysql) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@DB-Server ~]# userdel mysql

 

安装步骤:
解压文件
 tar zxvf /path/to/mysql-5.5.53-linux2.6-x86_64.tar.gz
b.     添加mysql组和mysql用户,用于设置mysql安装目录文件所有者和所属组。

[root@localhost JavaEE]#groupadd mysql

[root@localhost JavaEE]#useradd -r -g mysql mysql

*useradd -r参数表示mysql用户是系统用户,不可用于登录系统。

c.  将二进制文件解压到指定的安装目录,我们这里指定为/usr/local

[root@localhost ~]# cd/usr/local/

[root@localhost local]#tar zxvf /path/to/mysql-5.5.29-linux2.6-x86_64.tar.gz

*加压后在/usr/local/生成了解压后的文件夹mysql-5.5.29-linux2.6-x86_64,这名字太长,我们为它建立一个符号链接mysql,方便输入。

[root@localhost local]#ln -s mysql-5.5.29-linux2.6-x86_64 mysql


e.     进入mysql文件夹,也就是mysql所在的目录,并更改所属的组和用户。

[root@localhost local]#cd mysql

[root@localhost mysql]#chown -R mysql mysql.
chown -R mysql data  是给文件夹修改所有者命令

chown -R mysql(用户名) data(文件名)

[root@localhost mysql]#chgrp -R mysql mysql.

f.       执行mysql_install_db脚本,对mysql中的data目录进行初始化并创建一些系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(就是我们之前设置的mysql用户)执行这个脚本,或者用root执行,但是加上参数--user=mysql。

[root@localhost mysql]scripts/mysql_install_db --user=mysql

*如果mysql的安装目录(解压目录)不是/usr/local/mysql,那么还必须指定目录参数,如

[root@localhost mysql]scripts/mysql_install_db --user=mysql \

         --basedir=/opt/mysql/mysql \

         --datadir=/opt/mysql/mysql/data

*将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。

[root@localhost mysql]chown -R root .

[root@localhost mysql]chown -R mysql data

g.     复制配置文件

[root@localhost mysql] cp support-files/my-medium.cnf /etc/my.cnf

h.  将mysqld服务加入开机自启动项。

*首先需要将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。

[root@localhostmysql]  cp support-files/mysql.server /etc/init.d/mysqld

*通过chkconfig命令将mysqld服务加入到自启动服务项中。

[root@localhost mysql]#chkconfig --add mysqld

*注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。

*查看是否添加成功

[root@localhost mysql]#chkconfig --list mysqld

mysqld   0:off 1:off        2:on        3:on        4:on        5:on        6:off

i.  重启系统,mysqld就会自动启动了。

 

//配置mysql的双master步骤

一、MySQL master-master配置

1、修改MySQL配置文件

两台MySQL均如要开启binlog日志功能,开启方法:在MySQL配置文件[MySQLd]段中加上log-bin=MySQL-bin选项

两台MySQL的server-ID不能一样,默认情况下两台MySQL的serverID都是1,需将其中一台修改为2即可

 

Master1配置:

#vim /etc/my.cnf

log-bin=mysql-bin   //开启binlog日志功能

log =/usr/local/mysql/var/mysql.log    //会打印mysql的所以sql语句

 

server-id= 1  //

binlog-do-db =mysql    //需要同步的库名称

auto-increment-increment= 2

auto-increment-offset= 2

 

Master2配置:

#vim /etc/my.cnf

log-bin=mysql-bin    //开启binlog日志功能

log =/usr/local/mysql/var/mysql.log  //会打印mysql的所以sql语句

 

server-id= 2

binlog-do-db =mysql   //需要同步的库名称

auto-increment-increment= 2

auto-increment-offset= 2

 

2、建授权用户

在10.116.65.23上新建授权用户

grant replication slave on *.* to puyin@'10.116.65.%' identified by 'puyin2016';  

在10.116.65.24服务器上建授权用户

grant replication slave on *.* to puyin@'10.116.65.%' identified by 'puyin2016'; 

 
 


change master to master_host='10.116.65.23',master_user='puyin',master_password='puyin2016',master_log_file='mysql-bin.000006',master_log_pos=107,master_port=3306;

3、将10.116.65.24设为10.116.65.23的主服务器                                                                                                                                                                                                                                                                                                       

将10.116.65.24设为10.116.65.23的主服务器 

mysql> show master status;(23服务器配置)

1+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000027|   106|mysql    |    |

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

1 row in set (0.01 sec)

MySQL> change master to master_host='10.116.65.24',master_user='puyin',master_password='puyin2016',master_log_file='mysql-bin.000027',master_log_pos=106,master_port=3306;

Query OK, 0 rows affected (0.05 sec)

MySQL> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G

Slave_IO_Running: Yes 

Slave_SQL_Running: Yes   \\如果此2项都为yes,master-master配置即成功

 

将10.116.65.23设为10.116.65.24的主服务器  器  方法与上面设置一致只需将

在10.116.65.24上将10.116.65.23设为自己的主服务器

mysql> show master status;(24服务器配置)

1+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000027|   106|mysql    |    |

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

1 row in set (0.01 sec)

MySQL> change master to master_host='10.116.65.23',master_user='puyin',master_password='puyin2016',master_log_file='mysql-bin.000027',master_log_pos=106,master_port=3306;

Query OK, 0 rows affected (0.05 sec)

MySQL> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G

Slave_IO_Running: Yes 

Slave_SQL_Running: Yes   \\如果此2项都为yes,master-master配置即成功

 

测试是否成功:

如上述均正确配置,现在在任何一台MySQL上更新数据都会同步到另一台MySQL(仅限mysql库)

 

 

keepalived的作用是,再两台机器(10.116.65.23和10.116.65.24)上都安装好之后,配置文件里指定virtual_ipaddress也就是vip(10.116.65.25虚ip),
指定每台机器的priority(优先级一台为255 一台为10),这时在外部连接10.116.65.25实际上连接的就是10.116.65.23这台机器,如果10.116.65.23上的keepalived服务
意外停止之后,vip会自动漂移到10.116.65.24上,外界连接25实际上连接的就是24这台服务器,这样在外界看来服务器一直在正常使用


keepalived和mysql结合起来是有就是,keepalived里有一个自动去检测virtual_ipaddress 10.116.65.23 3306的配置,如果3306端口挂了,就会自动执行notify_down指定的
shell脚本(这个shell脚本里是杀死keepalived进程,这时因为keepalived进程死了,所以自动漂移到24这台服务器上,使用24上的mysql数据库)
这种情况的前提是两台服务器的数据库必须保持一致,这时就要配置两台mysql的主从关系了,配置好之后实现的效果是,你在23上增删改数据24上也自动进行更改,在24上
更改数据23上也相应有变化,时刻保持数据的一致性。配置mysql主从步骤在上面。

 

//keepalived配置文件
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 58
    priority 255
    advert_int 1   
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.116.65.25
    }
}
virtual_server 10.116.65.25 3306 {
    delay_loop 6
    #lb_algo wrr
    #lb_kind DR
    persistence_timeout 10
    protocol TCP

    real_server 10.116.65.23 3306 {
        weight 3
        notify_down /usr/local/mysql/my.sh  #检测到服务down后执行的脚本

      TCP_CHECK {
       connect_timeout 3    #连接超时时间
       nb_get_retry 2        #重连次数
      delay_before_retry 3   #重连间隔时间
       connect_port 3306      #健康检查端口
      }
    }
}

keepalived安装过程
1、解压
   tar zxvf /usr/local/keepalived.tar.gz
将解压后的文件更名为keepalived
 ./configure --prefix=/usr/local/keepalived
//如果出现错误提示,问题是缺东西,需要yum
   yum -y install openssl-devel
安装
 make &&make install

2、//设置keepalived的配置文件路径以及启动服务快捷方式,开机启动等。
 mkdir /etc/keepalived

 cp /usr/app_server/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

 cp /usr/app_server/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

 cp /usr/app_server/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

 cp /usr/app_server/keepalived/sbin/keepalived /usr/sbin/

 chkconfig --level 2345 keepalived on  #注册开机启动


3、运行时可能会遇到问题permission denied  给相应文件赋予执行权限X


防火墙可能导致keepalived不自动切换(测试的时候最好先关闭防火墙,能测试通过之后再考虑防火墙规则设置)

 

 

 

 

 

 

 

keepalived的自动检测的notify_down无法执行,导致mysql服务断掉时无法去切断keepalived从而导致vip无法漂移
现在采用linux定时任务的办法来实现该功能,写shell脚本检测mysql服务,如果包含mysqld_safe表示mysql在运行,否则
表示mysql服务断开,则自动kill  keepalived服务。然后把该脚本加入到linux的定时任务crontab中,每分钟执行一次。
键入 crontab  -e 编辑crontab服务文件*/1 * * * * /usr/local/mysql/checkMysql.sh
输入i表示开始编辑,编辑完之后输入esc表示进入命令模式,然后输入:wq表示保存并退出  输入:q!表示退出不保存


checkMysql.sh脚本如下:
#!/bin/bash

resp=`ps -ef | grep mysqld`
if [[ $resp =~ "mysqld_safe" ]]
then
 echo "mysql running"
else
 pkill keepalived  
fi

//注释  if  then else fi是linux shell脚本的if else格式  echo是输出文字命令
//`ps -ef | grep mysqld`  是检测mysqld的状态命令,这里注意两边的`号,然后将得到的结果赋值给变量resp
//  [[ $resp =~ "mysqld_safe" ]] 是用来判断resp里是否包含mysqld_safe字符串,如果包括输出mysql running  否则啥事keepalived进程。

0 0
原创粉丝点击