阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL + MHA +Keepalive + VIP安装配置

148次阅读
没有评论

共计 23174 个字符,预计需要花费 58 分钟才能阅读完成。

一、总概:

本文介绍了 MySQL 高可用性的实现方案 MHA,MHA 由 Node 和 Manager 组成,Node 运行在每一台 MySQL 服务器上,不管是 MySQL 主服务器,还是 MySQL 从服务器,都要安装 Node。主从安装 keepalived,实现虚拟 ip 漂移,程序不用改 IP 自动切换。

二、环境

1、操作系统:CentOS 6.5 64 位

2、数据库:MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar 下载

3、MHA 版本:mha4mysql-node-0.54-0.el6.noarch.rpm,

                    mha4mysql-manager-0.54-0.el6.noarch.rpm

4、keepalived 版本:

5、主机部署:

manager 机:192.168.1.201
master 机:192.168.1.231
slave1 机:192.168.1.232(备用 master)

6、大致步骤:

(1)、安装 MYSQL 5.6.
(2)、MYSQL 配置主重复制.
(3)、首先用 ssh-keygen 实现四台主机之间相互免密钥登录.
(4)、安装 MHAmha4mysql-node,mha4mysql-manager 软件包
(5)、在 MHA 配置 master,slave1 的相关文件。(6)、管理机 manager 上配置 MHA 文件
(7)、masterha_check_ssh 工具验证 ssh 信任登录是否成功
(8)、masterha_check_repl 工具验证 mysql 复制是否成功
(9)、启动 MHA manager, 并监控日志文件.
(10)、测试 master 宕机后,是否会自动切换。(11)、主从安装 keepalived,实现虚拟 ip 漂移。

 三、mysql 安装

1、下载 MYSQL 5.5

wget http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar
tar -cf MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar

2、解压后文件有:

MySQL-client-5.6.17-1.el6.x86_64.rpm
MySQL-devel-5.6.17-1.el6.x86_64.rpm
MySQL-embedded-5.6.17-1.el6.x86_64.rpm
MySQL-server-5.6.17-1.el6.x86_64.rpm
MySQL-shared-5.6.17-1.el6.x86_64.rpm
MySQL-shared-compat-5.6.17-1.el6.x86_64.rpm
MySQL-test-5.6.17-1.el6.x86_64.rpm

  注意:其实只要安装,服务器端MySQL-server-5.6.17-1.el6.x86_64.rpm 客户端 MySQL-client-5.6.17-1.el6.x86_64.rpm 及MySQL-shared-compat-5.6.17-1.el6.x86_64.rpm(可以解决一些兼容性)

3、安装

rpm -ivh MySQL-client-5.6.17-1.el6.x86_64.rpm
rpm -ivh MySQL-server-5.6.17-1.el6.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.6.17-1.el6.x86_64.rpm

4、可能会报的错:

(1)、已有数据库的存在

[root@localhost local]# rpm -ivh MySQL-server-5.6.17-1.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
file /usr/share/mysql/charsets/Index.xml from install of MySQL-server-5.6.17-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.71-1.el6.x86_64
file /usr/share/mysql/charsets/armscii8.xml from install of MySQL-server-5.6.17-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.71-1.el6.x86_64
file /usr/share/mysql/charsets/ascii.xml from install of MySQL-server-5.6.17-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.71-1.el6.x86_64
file /usr/share/mysql/charsets/cp1250.xml from install of MySQL-server-5.6.17-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.71-1.el6.x86_64  

  说明:系统中已存在 mysql-libs-5.1.71-1.el6.x86_64 必须把它卸载掉。解决方法:

yum -y remove mysql-libs-5.1.71*

(2)、缺少一下依赖的组件

error: Failed dependencies:
    /usr/bin/perl is needed by MySQL-server-5.6.17-1.el6.x86_64
    libaio.so.1()(64bit) is needed by MySQL-server-5.6.17-1.el6.x86_64
    libaio.so.1(LIBAIO_0.1)(64bit) is needed by MySQL-server-5.6.17-1.el6.x86_64
    libaio.so.1(LIBAIO_0.4)(64bit) is needed by MySQL-server-5.6.17-1.el6.x86_64

 解决方法:

yum install perl
yum install libaio

 再重新安装,安装成功。默认 root 没有密码,端口为:3306.

5、由于是 RPM 安装的所以在 /etc/ 下没有 MYSQL 的 my.cnf 文件。解决方法:

cp /usr/share/mysql/my-medium.cnf  /etc/my.cnf

 这样可以修改 MYSQL 的一些配置文件了。

6、mysql 启动、停止、重启。

service mysql start    或  /etc/init.d/mysql start
service mysql stop     或  /etc/init.d/mysql stop
service mysql restart  或  /etc/init.d/mysql restart

7、创建用户,用于主从复制的账号

 CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
    username – 你将创建的用户名,
    host – 指定该用户在哪个主机上可以登陆, 如果是本地用户可用 localhost, 如果想让该用户可以从任意远程主机登陆, 可以使用通配符 %.
    password – 该用户的登陆密码, 密码可以为空, 如果为空则该用户可以不需要密码登陆服务器.
例如:
CREATE USER 'sunney'@'%' IDENTIFIED BY 'sunney';

8、用户授权

    grant privileges ON databasename.tablename TO ‘username’@’host’ identified by “password”;
例如:
grant all privileges  ON *.* TO 'sunney'@'%' identified by "sunney";  
FLUSH PRIVILEGES  //修改生效

 9、已可以远程访问数据库了。

    如上步骤两台主机:231、232 都按已上步骤安装 MYSQL.

四、建产 mysql 主从数据库配置

[master:231]
1.shell>vi /etc/my.cnf
server-id=1
log-bin=mysql-bin
binlog_format=mixed
2.mysql>show master status;

[slave1]
3.change master 操作
mysql>change master to
master_host='192.168.1.231',
master_port=3306,
master_user='sunney',
master_password='sunney',
master_log_file='mysql-bin.000001',
master_log_pos=112;

[master,slave1]
4. 查看主从复制是否成功的一些命令
mysql>start slave;
mysql>stop slave;
mysql>reset slave;
mysql>show slave status\G;
5. 所有主机上设置复制权限帐号
mysql>GRANT ALL PRIVILEGES ON*.*TO'sunney'@'%'IDENTIFIED BY 'sunney';

 注意:

(1)、master_log_file=’mysql-bin.000001′,master_log_pos=112;

        这两名是通过 maste 中用:show master status;查出来的。

(2)、master与 slave 的server-id 是不能相同,否则不能同步成功。

       slave 的 server-id 可以通过修改 /etc/my.cnf 或

      mysql> set global server_id=2; #此处的数值和 my.cnf 里设置的一样就行。

五、总结

    数据库的安装及 master 与 slave配置成功,可以进行主从同步了!主从同步的常见错误,其实不外乎就是网络、权限、iptables、SELinux 等问题,我们平时注意检查这些问题,处理起来应该不是很困难,大家记得关闭 iptables(或开通对应的端口)和 SELinux, 注意 Slave_IO_Running 和 Slave_SQL_Running 状态必须确保主 Yes 才行,另外也要注意从机的 Seconds_Behind_Master 值及主从机的server-id 不可以相同!

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-06/132065p2.htm

Linux 下 HAProxy+Keepalived 双机高可用方案  http://www.linuxidc.com/Linux/2016-02/128566.htm

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

一、总概

1、MHA 介绍

      MHA(Master High Availability)是自动的 master 故障转移和 Slave 提升的软件包. 它是基于标准的 MySQL 复制 (异步 / 半同步).
      MHA 有两部分组成:MHA Manager(管理节点) 和 MHA Node(数据节点).
      MHA Manager 可以单独部署在一台独立机器上管理多个 master-slave 集群, 也可以部署在一台 slave 上.MHA Manager 探测集群的 node 节点, 当发现 master 出现故障的时候, 它可以自动将具有最新数据的 slave 提升为新的 master, 然后将所有其 它的 slave 导向新的 master 上. 整个故障转移过程对应用程序是透明的。
      MHA node 运行在每台 MySQL 服务器上(master/slave/manager), 它通过监控具备解析和清理 logs 功能的脚本来加快故障转移的。

2、MHA 工作原理

- 从宕机崩溃的 master 保存二进制日志事件 (binlog events)。
- 识别含有最新更新的 slave。
- 应用差异的中继日志(relay log) 到其它 slave。
- 应用从 master 保存的二进制日志事件(binlog events)。
- 提升一个 slave 为新 master。
- 使其它的 slave 连接新的 master 进行复制。

3、MHA 工具包:

(1)、Manager 工具:
– masterha_check_ssh : 检查 MHA 的 SSH 配置。
– masterha_check_repl : 检查 MySQL 复制。
– masterha_manager : 启动 MHA。
– masterha_check_status : 检测当前 MHA 运行状态。
– masterha_master_monitor : 监测 master 是否宕机。
– masterha_master_switch : 控制故障转移(自动或手动)。
– masterha_conf_host : 添加或删除配置的 server 信息。

(2)、Node 工具(这些工具通常由 MHA Manager 的脚本触发, 无需人手操作)。
– save_binary_logs : 保存和复制 master 的二进制日志。
– apply_diff_relay_logs : 识别差异的中继日志事件并应用于其它 slave。
– filter_mysqlbinlog : 去除不必要的 ROLLBACK 事件(MHA 已不再使用这个工具)。
– purge_relay_logs : 清除中继日志(不会阻塞 SQL 线程)。

二、主机部署

manager 机:192.168.1.201  manager 安装:mha4mysql-manager-0.54-0.el6.noarch.rpm
master 机:192.168.1.231   节点安装:mha4mysql-node-0.54-0.el6.noarch.rpm
slave1 机:192.168.1.232(备用 master) 节点安装:mha4mysql-node-0.54-0.el6.noarch.rpm

 三、首先用 ssh-keygen 实现三台主机之间相互免密钥登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[manager--201]
1、生成证书
shell> ssh-keygen -t rsa -b 2048  // 一直按回车直接生成。
shell> scp id_rsa.pub root@192.168.1.231:/root/.ssh/  // 复现到主机 231
shell> scp id_rsa.pub root@192.168.1.232:/root/.ssh/  // 复现到主机 232
2. 在主机 231232 中 /root/.ssh/ 下 执行
cat id_rsa.pub >> authorized_keys
// 导入公钥到 /root/.ssh/authorized_keys 文件中
3. 测试 201 无密登录到231232
ssh 192.168.1.231
ssh 192.168.1.232
[node--231232]
重复执行上面的步骤。
通过 ssh 测试任何两台主机间两两可以无密登录。

 注意:如果不能实现任何两台主机间两两可以无密登录,后面的步骤会有问题。

四、安装 MHAmha4mysql-node,mha4mysql-manager 软件包

1、manager mha4mysql-manager 软件安装

[manager--201]
shell> yum install perl
shell> yum install cpan
shell> rpm -ivh mha4mysql-manager-0.53-0.el6.noarch.rpm
error:
perl(Config::Tiny) is needed by mha4mysql-manager-0.53-0.noarch
perl(Log::Dispatch) is needed by mha4mysql-manager-0.53-0.noarch
perl(Log::Dispatch::File) is needed by mha4mysql-manager-0.53-0.noarch
perl(Log::Dispatch::Screen) is needed by mha4mysql-manager-0.53-0.noarch
perl(Parallel::ForkManager) is needed by mha4mysql-manager-0.53-0.noarch
perl(Time::HiRes) is needed by mha4mysql-manager-0.53-0.noarch

说明有很多依赖包没有安装,解决方法:

shell> wget ftp://ftp.muug.mb.ca/mirror/CentOS/5.10/os/x86_64/CentOS/perl-5.8.8-41.el5.x86_64.rpm 
shell> wget ftp://ftp.muug.mb.ca/mirror/centos/6.5/os/x86_64/Packages/compat-db43-4.3.29-15.el6.x86_64.rpm 
shell> wget http://downloads.naulinux.ru/pub/NauLinux/6x/i386/sites/School/RPMS/perl-Log-Dispatch-2.27-1.el6.noarch.rpm 
shell> wget http://dl.Fedoraproject.org/pub/epel/6/i386/perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm 
shell> wget http://dl.fedoraproject.org/pub/epel/6/i386/perl-Mail-Sender-0.8.16-3.el6.noarch.rpm 
shell> wget http://dl.fedoraproject.org/pub/epel/6/i386/perl-Mail-Sendmail-0.79-12.el6.noarch.rpm 
shell> wget http://mirror.centos.org/centos/6/os/x86_64/Packages/perl-Time-HiRes-1.9721-136.el6.x86_64.rpm
shell> rpm -ivh perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm perl-Log-Dispatch-2.27-1.el6.noarch.rpm perl-Mail-Sender-0.8.16-3.el6.noarch.rpm perl-Mail-Sendmail-0.79-12.el6.noarch.rpm perl-Time-HiRes-1.9721-136.el6.x86_64.rpm

再安装

shell> rpm -ivh mha4mysql-manager-0.53-0.el6.noarch.rpm

2、node MHAmha4mysql-node 软件安装

shell>wget http://mirror.centos.org/centos/6/os/x86_64/Packages/perl-DBD-MySQL-4.013-3.el6.x86_64.rpm
shell>rpm -ivh perl-DBD-MySQL-4.013-3.el6.x86_64.rpm
shell>wget http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.54-0.el6.noarch.rpm
shell>rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm
安装过程可能会报错 (具体错误我没有记下) 都是依赖包的问题,这么解决吧
shell>yum install perl-MIME-Lite
    yum install perl-Params-Validate

五、MHA 的配置

1、管理机 manager 上配置 MHA 文件

shell> mkdir -p /masterha/app1    //创建目录
shell> mkdir /etc/masterha        //创建目录
shell> vi /etc/masterha/app1.cnf  //创建配置文件
[server default]
user=root                //linux 用于管理 mysql 用戶名
password=sunney          //linux 用于管理 mysql 密码
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
remote_workdir=/masterha/app1
ssh_user=root            //ssh 免密钥登录的帐号名
repl_user=sunney         //mysql 复制帐号,用来在主从机之间同步二进制日志等
repl_password=sunney     //mysql 密码
ping_interval=1          //ping 间隔,用来检测 master 是否正常
[server1]
hostname=192.168.1.231
#ssh_port=9999
master_binlog_dir=/var/lib/mysql //mysql 数据库目录不同的安装方式目录不一样
candidate_master=1               //master 机宕掉后, 优先启用这台作为新 master
[server2]
hostname=192.168.1.232
#ssh_port=9999
master_binlog_dir=/var/lib/mysql
candidate_master=1

2、masterha_check_ssh 工具验证 ssh 信任登录是否成功

[manager:201]
shell> masterha_check_ssh --conf=/etc/masterha/app1.cnf

 注意:用 ssh-keygen 实现三台主机之间相互免密钥登录决定这一步是否成功。

Wed Apr  23 22:10:01 2014 - [debug]   ok.
Wed Apr  23 22:10:01 2014 - [info] All SSH connection tests passed successfully.

成功!

3、masterha_check_repl 工具验证 mysql 复制是否成功

[manager:201]
shell> masterha_check_repl --conf=/etc/masterha/app1.cnf

 注意:上一篇文章中的 master–slaver 是否成功决定这一步是否成功。或是 MHA 文件配置的用户账号有关。

Wed Apr 23 22:10:56 2014 - [info] Checking replication health on 192.168.1.232..
Wed Apr 23 22:10:56 2014 - [info]  ok.
Wed Apr 23 22:10:56 2014 - [warning] master_ip_failover_script is not defined.
Wed Apr 23 22:10:56 2014 - [warning] shutdown_script is not defined.
Wed Apr 23 22:10:56 2014 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

成功。

4、启动 MHA manager, 并监控日志文件

[manager:201]
shell> nohup masterha_manager --conf=/etc/masterha/app1.cnf > /tmp/mha_manager.log 2>&1 
shell> tail -f /masterha/app1/manager.log  //这名最好在新窗口执行

结果:

Thu Apr 24 04:41:03 2014 - [info] Slaves settings check done.
Thu Apr 24 04:41:03 2014 - [info] 
192.168.1.231 (current master)
 +--192.168.1.232
Thu Apr 24 04:41:03 2014 - [warning] master_ip_failover_script is not defined.
Thu Apr 24 04:41:03 2014 - [warning] shutdown_script is not defined.
Thu Apr 24 04:41:03 2014 - [info] Set master ping interval 1 seconds.
Thu Apr 24 04:41:03 2014 - [warning] secondary_check_script is not defined. It is highly recommended setting it to check master reachability from two or more routes.
Thu Apr 24 04:41:03 2014 - [info] Starting ping health check on 192.168.1.231(192.168.1.231:3306)..
Thu Apr 24 04:41:03 2014 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond..

5、测试 master(231)宕机后,是否会自动切换

[master--231]
shell>service mysql stop
 
[manager--201]
shell>tail -f tail -f /masterha/app1/manager.log
----- 日志显示如下 ------
-------- Failover Report -----

app1: MySQL Master failover 192.168.1.231 to 192.168.1.232 succeeded

Master 192.168.1.231 is down!

Check MHA Manager logs at localhost.localdomain:/masterha/app1/manager.log for details.

Started automated(non-interactive) failover.
The latest slave 192.168.1.232(192.168.1.232:3306) has all relay logs for recovery.
Selected 192.168.1.232 as a new master.
192.168.1.232: OK: Applying all logs succeeded.
Generating relay diff files from the latest slave succeeded.
192.168.1.232: Resetting slave info succeeded.
Master failover to 192.168.1.232(192.168.1.232:3306) completed successfully.

6、故障转移后,用命令恢复原来的 master

(1)、在旧 master 上执行

1. 在旧 master 上执行
shell>service mysql start // 数据库启动
shell>mysql -usunney -psunney
mysql> reset master;
mysql> change master to master_host='192.168.1.232', master_port=3306, master_user='sunney', master_password='sunney', master_log_file='mysql-bin.000031', master_log_pos=112;
mysql> start slave;      #暂时先把旧 master 变为 slave

(2)然后在 manager 节点上:

shell> masterha_master_switch --master_state=alive --conf=/etc/masterha/app1.cnf

 过程中一直输入 YES;

 这样的话 mysql 主从机进行了切换。可以测试一下数据在新的 master(232)的表中新增数据后,在新 slave(231)对应的表中是否已实现数据同步。

六、MHA 已完成配置并进行了测试。但如果是程序连接数据库并不会自动切换 IP, 那我们如何实现呢,请期待一篇keepalive + VIP 安装配置。

一、总概:

本文介绍了 MySQL 高可用性的实现方案 MHA,MHA 由 Node 和 Manager 组成,Node 运行在每一台 MySQL 服务器上,不管是 MySQL 主服务器,还是 MySQL 从服务器,都要安装 Node。主从安装 keepalived,实现虚拟 ip 漂移,程序不用改 IP 自动切换。

二、环境

1、操作系统:CentOS 6.5 64 位

2、数据库:MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar 下载

3、MHA 版本:mha4mysql-node-0.54-0.el6.noarch.rpm,

                    mha4mysql-manager-0.54-0.el6.noarch.rpm

4、keepalived 版本:

5、主机部署:

manager 机:192.168.1.201
master 机:192.168.1.231
slave1 机:192.168.1.232(备用 master)

6、大致步骤:

(1)、安装 MYSQL 5.6.
(2)、MYSQL 配置主重复制.
(3)、首先用 ssh-keygen 实现四台主机之间相互免密钥登录.
(4)、安装 MHAmha4mysql-node,mha4mysql-manager 软件包
(5)、在 MHA 配置 master,slave1 的相关文件。(6)、管理机 manager 上配置 MHA 文件
(7)、masterha_check_ssh 工具验证 ssh 信任登录是否成功
(8)、masterha_check_repl 工具验证 mysql 复制是否成功
(9)、启动 MHA manager, 并监控日志文件.
(10)、测试 master 宕机后,是否会自动切换。(11)、主从安装 keepalived,实现虚拟 ip 漂移。

 三、mysql 安装

1、下载 MYSQL 5.5

wget http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar
tar -cf MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar

2、解压后文件有:

MySQL-client-5.6.17-1.el6.x86_64.rpm
MySQL-devel-5.6.17-1.el6.x86_64.rpm
MySQL-embedded-5.6.17-1.el6.x86_64.rpm
MySQL-server-5.6.17-1.el6.x86_64.rpm
MySQL-shared-5.6.17-1.el6.x86_64.rpm
MySQL-shared-compat-5.6.17-1.el6.x86_64.rpm
MySQL-test-5.6.17-1.el6.x86_64.rpm

  注意:其实只要安装,服务器端MySQL-server-5.6.17-1.el6.x86_64.rpm 客户端 MySQL-client-5.6.17-1.el6.x86_64.rpm 及MySQL-shared-compat-5.6.17-1.el6.x86_64.rpm(可以解决一些兼容性)

3、安装

rpm -ivh MySQL-client-5.6.17-1.el6.x86_64.rpm
rpm -ivh MySQL-server-5.6.17-1.el6.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.6.17-1.el6.x86_64.rpm

4、可能会报的错:

(1)、已有数据库的存在

[root@localhost local]# rpm -ivh MySQL-server-5.6.17-1.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
file /usr/share/mysql/charsets/Index.xml from install of MySQL-server-5.6.17-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.71-1.el6.x86_64
file /usr/share/mysql/charsets/armscii8.xml from install of MySQL-server-5.6.17-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.71-1.el6.x86_64
file /usr/share/mysql/charsets/ascii.xml from install of MySQL-server-5.6.17-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.71-1.el6.x86_64
file /usr/share/mysql/charsets/cp1250.xml from install of MySQL-server-5.6.17-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.71-1.el6.x86_64  

  说明:系统中已存在 mysql-libs-5.1.71-1.el6.x86_64 必须把它卸载掉。解决方法:

yum -y remove mysql-libs-5.1.71*

(2)、缺少一下依赖的组件

error: Failed dependencies:
    /usr/bin/perl is needed by MySQL-server-5.6.17-1.el6.x86_64
    libaio.so.1()(64bit) is needed by MySQL-server-5.6.17-1.el6.x86_64
    libaio.so.1(LIBAIO_0.1)(64bit) is needed by MySQL-server-5.6.17-1.el6.x86_64
    libaio.so.1(LIBAIO_0.4)(64bit) is needed by MySQL-server-5.6.17-1.el6.x86_64

 解决方法:

yum install perl
yum install libaio

 再重新安装,安装成功。默认 root 没有密码,端口为:3306.

5、由于是 RPM 安装的所以在 /etc/ 下没有 MYSQL 的 my.cnf 文件。解决方法:

cp /usr/share/mysql/my-medium.cnf  /etc/my.cnf

 这样可以修改 MYSQL 的一些配置文件了。

6、mysql 启动、停止、重启。

service mysql start    或  /etc/init.d/mysql start
service mysql stop     或  /etc/init.d/mysql stop
service mysql restart  或  /etc/init.d/mysql restart

7、创建用户,用于主从复制的账号

 CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
    username – 你将创建的用户名,
    host – 指定该用户在哪个主机上可以登陆, 如果是本地用户可用 localhost, 如果想让该用户可以从任意远程主机登陆, 可以使用通配符 %.
    password – 该用户的登陆密码, 密码可以为空, 如果为空则该用户可以不需要密码登陆服务器.
例如:
CREATE USER 'sunney'@'%' IDENTIFIED BY 'sunney';

8、用户授权

    grant privileges ON databasename.tablename TO ‘username’@’host’ identified by “password”;
例如:
grant all privileges  ON *.* TO 'sunney'@'%' identified by "sunney";  
FLUSH PRIVILEGES  //修改生效

 9、已可以远程访问数据库了。

    如上步骤两台主机:231、232 都按已上步骤安装 MYSQL.

四、建产 mysql 主从数据库配置

[master:231]
1.shell>vi /etc/my.cnf
server-id=1
log-bin=mysql-bin
binlog_format=mixed
2.mysql>show master status;

[slave1]
3.change master 操作
mysql>change master to
master_host='192.168.1.231',
master_port=3306,
master_user='sunney',
master_password='sunney',
master_log_file='mysql-bin.000001',
master_log_pos=112;

[master,slave1]
4. 查看主从复制是否成功的一些命令
mysql>start slave;
mysql>stop slave;
mysql>reset slave;
mysql>show slave status\G;
5. 所有主机上设置复制权限帐号
mysql>GRANT ALL PRIVILEGES ON*.*TO'sunney'@'%'IDENTIFIED BY 'sunney';

 注意:

(1)、master_log_file=’mysql-bin.000001′,master_log_pos=112;

        这两名是通过 maste 中用:show master status;查出来的。

(2)、master与 slave 的server-id 是不能相同,否则不能同步成功。

       slave 的 server-id 可以通过修改 /etc/my.cnf 或

      mysql> set global server_id=2; #此处的数值和 my.cnf 里设置的一样就行。

五、总结

    数据库的安装及 master 与 slave配置成功,可以进行主从同步了!主从同步的常见错误,其实不外乎就是网络、权限、iptables、SELinux 等问题,我们平时注意检查这些问题,处理起来应该不是很困难,大家记得关闭 iptables(或开通对应的端口)和 SELinux, 注意 Slave_IO_Running 和 Slave_SQL_Running 状态必须确保主 Yes 才行,另外也要注意从机的 Seconds_Behind_Master 值及主从机的server-id 不可以相同!

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-06/132065p2.htm

Linux 下 HAProxy+Keepalived 双机高可用方案  http://www.linuxidc.com/Linux/2016-02/128566.htm

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

一、概述

keepalive d 介绍:Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自动将 web 服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人 工做的只是修复故障的 web 服务器。

二、环境

1
2
3
vip:192.168.1.203\204
MySQL-master:192.168.1.231
mysql-slave:192.168.1.232

三、keepalive d 安装

安装步骤两台机 mysql-master、mysql-slave 一样,如下:

1、下载地址:http://www.keepalived.org/software/keepalived-1.2.12.tar.gz

1
shell>wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz

2、安装环境

1
yum -y install openssl-devel

 否则会报如下错误

1
2
3
configure: error:
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.

3、安装

1
2
3
4
5
shell>tar -zxvf  keepalived-1.2.12.tar.gz
shell>cd keepalived-1.2.12
shell>./configure --prefix=/opt/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/
shell>make
shell>make install

 说明:

 –prefix:安装路径

 –with-kernel-dir:这个是重要的参数,这个参数并不表示我们要把 Keepalived 统进内核,而是指使用内核源码里面的头文件,也就是 include 目录。

  2.6.32-431.el6.x86_64 可以通过

1
shell>uname -r 命令查看到

 4、配置

1
2
3
4
5
# cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# mkdir /etc/keepalived
# cp /opt/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /opt/keepalived/sbin/keepalived /usr/sbin/

 5、启动 / 停止

1
2
3
shell>service keepalived start
shell>service keepalived stop
shell>service keepalived restart

四、keepalive d 配置

1、mysql-master:192.168.1.231 的配置

1
shell>vim /etc/keepalived/keepalived.conf

 配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
global_defs {
 router_id mysql-master #修改为自己的主机名
 notification_email {
 mengtao10@163.com  #接收邮件,可以有多个,一行一个
}
 # 当主、备份设备发生改变时,通过邮件通知
 notification_email_from lzyangel@126.com
 # 发送邮箱服务器
 smtp_server stmp.163.com
 # 发送邮箱超时时间
 smtp_connect_timeout 30
 }
################## 第一部分 ###################
vrrp_instance VI_1 {
     state BACKUP    #都修改成 BACKUP
     interface eth0    #绑定的网卡
     virtual_router_id 60 # 默认 51 主从都修改为60
     priority 100            # 优先级,在 mysql-slave 上 LVS 上修改成80
     advert_int 1
     nopreempt #不抢占资源,意思就是它活了之后也不会再把主抢回来
   
     authentication {
     # 认证方式,可以是 PASS 或 AH 两种认证方式
     auth_type PASS
     # 认证密码
     auth_pass 1111
     }
virtual_ipaddress {
     192.168.1.203
     192.168.1.204  # 这可以增加多个 VIP
     }
}
################## 第二部分 ###################
virtual_server 192.168.1.203 3306 {
     delay_loop 6
     lb_algo wrr
     lb_kind DR
     nat_mask 255.255.255.0
     persistence_timeout 50
     protocol TCP
    real_server 192.168.1.231 3306 {
     weight 1
     notify_down /root/mysql_down.sh
     TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         connect_port 3306
         }
     }
}

 2、mysql-master:192.168.1.232 的配置

1
shell>vim /etc/keepalived/keepalived.conf

 配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
global_defs {
 router_id mysql-master #修改为自己的主机名
 notification_email {
 mengtao10@163.com  #接收邮件,可以有多个,一行一个
}
 # 当主、备份设备发生改变时,通过邮件通知
 notification_email_from lzyangel@126.com
 # 发送邮箱服务器
 smtp_server stmp.163.com
 # 发送邮箱超时时间
 smtp_connect_timeout 30
 }
################## 第一部分 ###################
vrrp_instance VI_1 {
     state BACKUP    #都修改成 BACKUP
     interface eth0    #绑定的网卡
     virtual_router_id 60 # 默认 51 主从都修改为60
     priority 80          # 优先级,在 mysql-master 上 LVS 上修改成100
     advert_int 1
     authentication {
     # 认证方式,可以是 PASS 或 AH 两种认证方式
     auth_type PASS
     # 认证密码
     auth_pass 1111
     }
virtual_ipaddress {
     192.168.1.203
     192.168.1.204  # 这可以增加多个 VIP
     }
}
################## 第二部分 ###################
virtual_server 192.168.1.203 3306 {
     delay_loop 6
     lb_algo wrr
     lb_kind DR
     nat_mask 255.255.255.0
     persistence_timeout 50
     protocol TCP
    real_server 192.168.1.232 3306 {
     weight 1
     notify_down /root/mysql_down.sh
     TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         connect_port 3306
         }
     }
}

 3、myslq_down.sh 配置,两台机都要配置这一步!!!

    这里需要注意的是,notify_down /root/mysql_down.sh 这个选项,这个是是在 keepalived 检测不到 mysql 的时候要执行的脚本,从上面的配置文件来看 real 服务器只有本机。那么,keeaplived 如果启动,客户端也只是访问本机的 mysql。nopreempt 这个选下也得注意,这个是不抢占资源在优先级高的机器上配置就可以。
看下这个脚本的内容:

1
2
3
4
# vim /root/mysql_down.sh
#!/bin/bash
pkill keepalived
# chmod +x /root/mysql_down.sh #授权可执行权限

 脚本内容就一条命令:pkill keepalived,主要作用是如果本机的 mysql 挂掉了,那么同时会杀死本机的 keepalived,这样另外一台就会接替他工作,虚拟 IP 也会被另一台接管,如果不杀死 keepalived 虚拟 IP 不会被另一台接管,mysql 访问也就不会切换过去。

 注意:必须要先启动 MYSQL, 再启动 keepalived,否则 keepalived 启动后会运行 mysql_down.sh 脚本,等于自杀。

4、mysql-master(231)启动后查看 IP 的绑定情况,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
shell> ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:cc:92:22 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.232/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.203/32 scope global eth0
    inet 192.168.1.204/32 scope global eth0
    inet6 fe80::a00:27ff:fecc:9222/64 scope link
       valid_lft forever preferred_lft forever

 

五、测试

1、231、232 两台机同时启动 MYSQL 及 Keepalived.

  通过 win cmd 命令行的客户端 (或程序) 连接 VIP:192.168.1.203 或 204,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
C:\Users\Duncan>mysql -h192.168.1.203 -usunney -psunney
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1440
Server version: 5.5.37-log MySQL Community Server (GPL)
 
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sunney            |
| test              |
+--------------------+
5 rows in set (0.04 sec)
 
mysql>

注意:这时存储的数据库是 mysql-master(192.168.1.231)因为他是主库。配置 priority 100 优先级高。

2、mysql-slave(232)的机同时关闭 MYSQL 及 Keepalived. 这时关闭上以上的是一样的。因为他没有走这个库。

3、mysql-master(231)同时关闭 MYSQL 及 Keepalived,mysql-slave(232)同时启动 MYSQL 及 Keepalived

    切换很快,大概在 2 到 3 秒之间!

  通过 win cmd 命令行的客户端 (或程序) 连接 VIP:192.168.1.203 或 204,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
C:\Users\Duncan>mysql -h192.168.1.203 -usunney -psunney
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1440
Server version: 5.5.37-log MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sunney            |
| test              |
+--------------------+
5 rows in set (0.04 sec)
 
mysql>

 成功!

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132065.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计23174字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中