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

MySQL + MHA +Keepalive + VIP安装配置

482次阅读
没有评论

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7975592
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...