mysql5.6部署集群基础环境

-----------------------------

部署集群基础环境

MySQL-MMM架构部署

MySQL-MMM架构使用

部署集群基础环境

192.168.4.10     master1

192.168.4.11     master2

192.168.4.12     slave1

192.168.4.13     slave2

192.168.4.100     monitor

使用5台mysql5.6 其中192.168.4.10、192.168.4.11作为mysql双主服务器,192.168.4.12、  192.168.4.13作为主服务器的从服务器。

192.168.4.100 作为mysql-MMM架构中管理监控服务器,

步骤一:配置hosts本地解析

1.配置本机hosts解析记录

[[email protected] ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.4.10    master1         master1.tarena.com

192.168.4.11    master2         master2.tarena.com

192.168.4.12    slave1          slave1.tarena.com

192.168.4.13    slave2          slave2.tarena.com

192.168.4.100   monitor         monitor.tarena.com

2.测试hosts解析成功

[[email protected] ~]# ping -c 3 master1

PING master1 (192.168.4.10) 56(84) bytes of data.

64 bytes from master1 (192.168.4.10): icmp_seq=1 ttl=64 time=0.019 ms

64 bytes from master1 (192.168.4.10): icmp_seq=2 ttl=64 time=0.019 ms

64 bytes from master1 (192.168.4.10): icmp_seq=3 ttl=64 time=0.022 ms

--- master1 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2000ms

rtt min/avg/max/mdev = 0.019/0.020/0.022/0.001 ms

---------------------------------------------------

步骤二:部署数据库主机

http://xmomo.blog.51cto.com/5994484/1939747

步骤三:部署双主多从结构

1)数据库授权(4台数据库主机master1,master2,slave1,slave2执行以下操作)

部署主从同步只需要授权一个主从同步用户即可,但是我们要部署mysql-MMM架构,

所以在这里我们将mysql-MMM所需用户一并进行授权设置。再授权一个测试用户,在架构搭建完成时测试使用。

master1设置:

[[email protected] ~]# mysql -uroot -ppwd123

数据库授权部分为了方便试验我直接允许所有地址访问了,生产环境需谨慎

mysql> grant   replication  slave  on  *.*  to  [email protected]"%" identified by  "pwd123"; //主从同步授权

Query OK,0 rows affected(0.00 sec)

mysql> grant  replication  client  on *.*  to  [email protected]"%" identified by "monitor";      //MMM所需架构用户授权

Query OK,0 rows affected(0.06 sec)

mysql> grant  replication client,process,super   on *.*  to  [email protected]"%" identified by "agent";  //MMM所需架构用户授权

Query OK,0 rows affected(0.00 sec)

mysql> grant  all  on *.*  to  [email protected]"%" identified by "pwd123";   //测试用户授权

Query OK,0 rows affected(0.00 sec)

mysql>

2)开启主数据库bin-log日志、设置server_id(master1,master2)

master1设置:

[[email protected] ~]# vi /etc/my.cnf

[mysqld]

server_id=100      //设置server_id,服务器唯一ID,必须是1至232-1之间的整数

log-bin            //(主库必须开启)开启bin-log日志

master2设置:

[[email protected] ~]# vi /etc/my.cnf

[mysqld]

server_id=101

log-bin

重启两台主库的mysql服务

3)从库设置server_id(slave1,slave2)

slave1设置:

[[email protected] ~]#vi /etc/my.cnf

[mysqld]

log-bin                  //主库必须开启

server-id=102

注意:在集群,所有的服务器ID编号都必须是唯一的。

mysql主库的二进制日志必须要开启,从服务器上二进制日志功能是不需要开启的。

但是,你也可以通过启用从服务器的二进制日志功能,实现数据备份与恢复,此外在一些更复杂的拓扑环境中,mysql从服务器也可以扮演其他从服务器的主服务器。

slave2设置:

[[email protected] ~]#vi /etc/my.cnf

[mysqld]

log-bin

server-id=103

重启两台从库的mysql服务

4)配置主从从从关系

配置master2、slave1、slave2成为master1的从服务器

查看master1服务器bin-log日志使用节点信息:

[[email protected] ~]# mysql -uroot -ppwd123

....

mysql> flush tables with read lock;

mysql> show master status\G

***************************1. row ***************************

File: master1-bin.000001

Position:120

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row inset(0.00 sec)

mysql>

mysql> unlock tables;

注意:执行完此步骤后不要再操作主服务器mysql,防止主服务器状态值变化

防止其他主机操作主数据库,可以用只读锁表的方式来防止数据库被修改。

flush tables with read lock; 命令的作用是对所有数据库的所有表执行只读锁定,

只读锁定后所有数据库的写操作将被拒绝,但读操作可以继续。

执行锁定可以防止在查看二进制日志信息的同时有人对数据进行修改操作,

最后使用unlock tables; 语句对全局锁执行结束操作。

设置master2为master1的从库:

[[email protected] ~]# mysql -uroot -ppwd123

....

mysql> change master to master_host=‘192.168.4.10‘,master_user=‘slaveuser‘,master_password=‘pwd123‘,master_log_file=‘master1-bin.000001‘,master_log_pos=120;

数据复制的关键操作是配置从服务器去连接主服务器进行数据复制,我们需要告知从服务器建立网络连接所有必要的信息。

使用CHANGE MASTER TO 语句即可完成该项工作,

MASTER_HOST          指定主服务器主机名或IP地址,

MASTER_USER          为主服务器上创建的拥有复制权限的账户名称,

MASTER_PASSWORD      为该账户的密码,

MASTER_LOG_FILE      指定主服务器二进制日志文件名称,

MASTER_LOG_POS       为主服务器二进制日志当前记录的位置。

mysql> start slave;  //启动同步进程

注:以为我之前做过主从,在启动同步进程的时候报错(1872)。可以用命令 reset slave;  然后在change master to重新连接。

mysql> show slave status\G                        //查看主从是否成功

....

启动同步进程后查看IO节点和SQL节点是否为Yes如果均为Yes表示主从正常。

Slave_IO_Running: Yes                //IO节点正常

Slave_SQL_Running: Yes                //SQL节点正常

....

设置slave1为master1从:

[[email protected] ~]# mysql -uroot -ppwd123

mysql>change master to master_host=‘192.168.4.10‘,master_user=‘slaveuser‘,master_password=‘pwd123‘,master_log_file=‘master1-bin.000001‘,master_log_pos=120;

mysql> start slave;

mysql> show slave status\G

....

Slave_IO_Running: Yes                //IO节点正常

Slave_SQL_Running: Yes                //SQL节点正常

....

mysql>

设置slave2为master1从:

[[email protected] ~]# mysql -uroot -ppwd123

....

mysql>change master to master_host=‘192.168.4.10‘,master_user=‘slaveuser‘,master_password=‘pwd123‘,master_log_file=‘master1-bin.000001‘,master_log_pos=120;

mysql> start slave;

mysql> show slave status\G

....

Slave_IO_Running: Yes                //IO节点正常

Slave_SQL_Running: Yes                //SQL节点正常

....

---------------------------------------------------------------------------------------------

5)配置主主从从关系,将master1配置为master2的从

查看master2的bin-log使用信息:

[[email protected] ~]# mysql -uroot -ppwd123

....

mysql> show master status\G

***************************1. row ***************************

File: master2-bin.000001

Position:120

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row inset(0.00 sec)

设置master1成为master2的从:

[[email protected] ~]# mysql -uroot -ppwd123

....

mysql> change master to master_host=‘192.168.4.11‘,master_user=‘slaveuser‘,master_password=‘pwd123‘,master_log_file=‘master2-bin.000001‘,master_log_pos=120;

mysql> start slave;

Query OK,0 rows affected(0.27 sec)

mysql> show slave status\G

....

Slave_IO_Running: Yes                //IO节点正常

Slave_SQL_Running: Yes                //SQL节点正常

....

6)测试主主从从架构是否成功

master1更新数据,查看其它主机是否同步:

[[email protected] ~]# mysql -uroot -ppwd123

....

mysql> show databases;

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| test               |

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

4 rows inset(0.00 sec)

mysql> create database tarena;

mysql> show databases;

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| tarena             |

| test               |

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

5 rows inset(0.00 sec)

mysql>

master2主机查看:

[[email protected] ~]# mysql -uroot -ppwd123 -e "show databases"

Warning: Using a password on the command line interface can be insecure.

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| tarena             |

| test               |

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

slave1主机查看:

[[email protected] ~]# mysql -uroot -ppwd123 -e "show databases"

Warning: Using a password on the command line interface can be insecure.

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| tarena             |

| test               |

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

slave2主机查看:

[[email protected] ~]# mysql -uroot -ppwd123 -e "show databases"

Warning: Using a password on the command line interface can be insecure.

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| tarena             |

| test               |

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

=============================================================

2 mysql-MMM架构部署

使用5台centos服务器,其中192.168.4.10、192.168.4.11作为mysql双主服务器,192.168.4.12、192.168.4.13作为主服务器的从服务器,

192.168.4.100 作为mysql-MMM架构中管理监控服务器,实现监控mysql主从服务器的工作状态及决定故障节点的移除或恢复工作。

步骤一:安装mysql-MMM

安装依赖yum源(mysql集群内5台服务器master1,master2,slave1,slave2,monitor)均需安装

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

1) 安装监控程序

在管理服务器(monitor)上,执行下面命令:

[[email protected] ~]# yum -y install mysql-mmm-monitor*   perl-Time-HiRes*

2) 安装代理程序

mysql集群内4台服务器(master1、master2、slave1、slave2)

# yum -y install mysql-mmm-agent*

....

步骤二:修改配置文件

1)修改公共配置文件

本案例中mysql集群的5台服务器(master1、master2、slave1、slave2、monitor)都需要配置,可以先配好一台后使用scp复制。

[[email protected] ~]# vim  /etc/mysql-mmm/mmm_common.conf

active_master_role    writer

<host default>

cluster_interface        eth0

pid_path                /var/run/mmm_agentd.pid

bin_path                /usr/lib/mysql-mmm/

replication_user        slaveuser            //设置主从同步的用户

replication_password    pwd123            //设置主从同步用户密码

agent_user            agent              //mmm-agent控制数据库用户

agent_password        agent             //mmm-agent控制数据库用户密码

</host>

<host master1>  //设置第一个主服务器

ip                      192.168.4.10//master1 IP 地址

mode                    master

peer                    master2            //指定另外一台主服务器

</host>

<host master2>  //指定另外一台主服务器

ip                    192.168.4.11

mode                    master

peer                    master1

</host>

<host slave1>  //设置第一台从服务器

ip                    192.168.4.12//slave1 IP 地址

mode                    slave                //本段落配置的是slave服务器

</host>

<host slave2>

ip                    192.168.4.13

mode                    slave

</host>

<role writer>   //设置写入服务器工作模式

hosts                master1,master2        //提供写的主服务器

ips                    192.168.4.200       //设置VIP地址

mode                    exclusive          //排他模式

</role>

<role reader>  //设置读取服务器工作模式

hosts                slave1,slave2         //提供读的服务器信息

ips                    192.168.4.201,192.168.4.202   //多个虚拟IP

mode                    balanced                        //均衡模式

</role>

....

2)修改管理主机配置文件(monitor主机配置)

[[email protected] ~]# vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf

<monitor>

ip                        192.168.4.100//设置管理主机IP地址

pid_path                /var/run/mmm_mond.pid

bin_path                /usr/lib/mysql-mmm/

status_path                /var/lib/misc/mmm_mond.status

ping_ips                192.168.4.10,192.168.4.11,192.168.4.12,192.168.4.13   //设置被监控数据库

</monitor>

<host default>

monitor_user            monitor                    //监控数据库mysql用户

monitor_password        monitor                    //监控数据库mysql用户密码

</host>

debug 0

....

[[email protected] ~]#

3)修改客户端配置文件

master1配置

[[email protected] ~]# vi /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this master1

master2配置

[[email protected] ~]# vi /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this master2

slave1配置

[[email protected] ~]# vi /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this slave1

slave2配置

[[email protected] ~]# vi /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this slave2

==========================================================

3 mysql-MMM架构使用

启动MMM集群架构

设置集群中服务器为online状态

mysql-MMM架构部署完成后需要启动,数据库端启动mmm-agent进程,管理端启动mmm-monitor进程,启动完成后设置所有数据库主机状态为online。

步骤一:启动MMM集群架构

1)启动mmm-agent进程

master1操作:

[[email protected] ~]# /etc/init.d/mysql-mmm-agent start

master2操作:

[[email protected] ~]# /etc/init.d/mysql-mmm-agent start

slave1操作:

[[email protected] ~]# /etc/init.d/mysql-mmm-agent start

slave2操作:

[[email protected] ~]# /etc/init.d/mysql-mmm-agent start

2)启动mmm-monitor进程

monitor主机操作:

[[email protected] ~]# /etc/init.d/mysql-mmm-monitor start

步骤二:设置集群中服务器为online状态

控制命令只能在管理端monitor服务器上执行。

查看当前集群中各服务器状态:

[[email protected] ~]# mmm_control show

master1(192.168.4.10)master/AWAITING_RECOVERY. Roles:

master2(192.168.4.11)master/AWAITING_RECOVERY. Roles:

slave1(192.168.4.12)slave/AWAITING_RECOVERY. Roles:

slave2(192.168.4.13)slave/AWAITING_RECOVERY. Roles:

设置4台数据库主机状态为online:

[[email protected] ~]# mmm_control set_online master1

OK: State of ‘master1‘ changed to ONLINE. Now you can wait some time and check its new roles!

[[email protected] ~]# mmm_control set_online master2

OK: State of ‘master2‘ changed to ONLINE. Now you can wait some time and check its new roles!

[[email protected] ~]# mmm_control set_online slave1

OK: State of ‘slave1‘ changed to ONLINE. Now you can wait some time and check its new roles!

[[email protected] ~]# mmm_control set_online slave2

OK: State of ‘slave2‘ changed to ONLINE. Now you can wait some time and check its new roles!

再次查看当前集群中各服务器状态:

[[email protected] ~]# mmm_control show

master1(192.168.4.10)master/ONLINE. Roles:writer(192.168.4.200)

master2(192.168.4.11)master/ONLINE. Roles:

slave1(192.168.4.12)slave/ONLINE. Roles:reader(192.168.4.201)

slave2(192.168.4.13)slave/ONLINE. Roles:reader(192.168.4.202)

步骤三:测试mysql-MMM架构

2)mysql-MMM虚拟IP访问测试

[[email protected] ~]# mysql -h192.168.4.200-uroot -ppwd123 -e "show databases"

Warning: Using a password on the command line interface can be insecure.

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| tarena             |

| test               |

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

[[email protected] ~]#

[[email protected] ~]# mysql -h192.168.4.201-uroot -ppwd123 -e "show databases"

Warning: Using a password on the command line interface can be insecure.

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| tarena             |

| test               |

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

[[email protected] ~]#

[[email protected] ~]# mysql -h192.168.4.202-uroot -ppwd123 -e "show databases"

Warning: Using a password on the command line interface can be insecure.

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| tarena             |

| test               |

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

[[email protected] ~]#

3)主数据库宕机测试

[[email protected] ~]# service mysql stop                    //停止master1上服务

Shutting down mysql....[确定]

[[email protected] ~]# mmm_control show                        //查看集群内服务器状态

通过输出信息可以看到虚拟IP从master1切换到master2:

master1(192.168.4.10)master/HARD_OFFLINE. Roles:

master2(192.168.4.11)master/ONLINE. Roles:writer(192.168.4.200)

slave1(192.168.4.12)slave/ONLINE. Roles:reader(192.168.4.201)

slave2(192.168.4.13)slave/ONLINE. Roles:reader(192.168.4.202)

[[email protected] ~]# mysql -h192.168.4.200-uroot -ppwd123 -e "show databases"  //访问虚拟IP测试

Warning: Using a password on the command line interface can be insecure.

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

| Database           |

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

| information_schema |

| mysql              |

| performance_schema |

| tarena             |

| test               |

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

[[email protected] ~]#

MySQL-MMM集群架构就完成了。

过程中遇到的问题:

我在第一次 mmm_control show 查看集群服务器状态的时候,发现除了master1的状态为AWAITING_RECOVERY, 其他三台为HARD_OFFLINE。

这是因为我最开始创建的monitor用户没有被同步过去,在主库master1 重新创建就好。

查看MYSQL数据库中所有用户 ,

mysql> SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS query FROM mysql.user;

还有一个问题,我的环境是虚拟机克隆的,配置主从的时候遇到UUID冲突的问题,

停止数据库 把数据库所在目录下的auto.cnf 备份一份之后,删除。 重启就好了。

主库master1 一定要记得开启 log-slave-updates

时间: 2024-10-18 14:13:32

mysql5.6部署集群基础环境的相关文章

部署集群基础环境,MySQL-MMM架构部署,MySQL-MMM架构使用

部署集群基础环境 1.1 问题 本案例要求为MySQL集群准备基础环境,完成以下任务操作: 数据库授权 部署MySQL双主多从结构 配置本机hosts解析记录 1.2 方案 使用4台RHEL 6虚拟机,如图-1所示.其中192.168.4.10.192.168.4.11作为MySQL双主服务器,192.168.4.12.192.168.4.13作为主服务器的从服务器. 图-1 1.3 步骤 实现此案例需要按照如下步骤进行. 步骤一:准备环境 [[email protected] ~]# cat

Database基础(七):部署集群基础环境、MySQL-MMM架构部署、MySQL-MMM架构使用

一.部署集群基础环境 目标: 本案例要求为MySQL集群准备基础环境,完成以下任务操作: 数据库授权 部署MySQL双主多从结构 配置本机hosts解析记录 方案: 使用4台RHEL 6虚拟机,如下图所示.其中192.168.4.10.192.168.4.11作为MySQL双主服务器,192.168.4.12.192.168.4.13作为主服务器的从服务器. 步骤: 步骤一:准备环境 [[email protected] ~]# cat /etc/hosts    127.0.0.1   loc

实现MySQL读写分离 部署集群基础环境(有图)

实现MySQL读写分离 部署集群基础环境 1 实现MySQL读写分离1.1 问题 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 1.2 方案 使用4台RHEL 7.2虚拟机,如图-1所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服

07: MMM集群概述 、 部署集群基础环境 、 MMM集群部署 、 总结和答疑

day07 部署MySQL高可用集群 高可用集群介绍: 主备模式 当主不能提供服务的时候备用主机接替它提供服务,这个过程对于客户端是透明的. 一 配置MySQL主从同步主主结构主从从一主多从 二配置MySQL-mmm perl mmm_monitor 监控服务 运行在管理节点主机上.mmm_agentd 代理服务 运行在所有的数据节点主机上. writer-vip : 192.168.4.100 read -vip : 192.168.4.101/102 2.1 在所有主机上安装mysql-mm

部署mysql集群基础环境

设置slave2为master1从:部署集群基础环境 1.1 问题 本案例要求为MySQL集群准备基础环境,完成以下任务操作: 数据库授权 部署MySQL双主多从结构 配置本机hosts解析记录 1.2 方案 使用4台RHEL 6虚拟机,如图-1所示.其中192.168.4.10.192.168.4.11作为MySQL双主服务器,192.168.4.12.192.168.4.13作为主服务器的从服务器. 图-1 1.3 步骤 实现此案例需要按照如下步骤进行. 步骤一:准备环境 [[email p

HPC 高性能集群基础环境安装

HPC 基础环境配置 1.1.操作系统 配置? 操作系统:redhat enterprise linuxt 6? 管理节点:HOSTNAME:desktop IP:192.168.199.132计算节点: HOSTNAME:c1 IP:192.168.199.133 HOSTNAME:c2 IP:192.168.199.134? 网络配置:固定IP,各个节点互通? 配置本地域名解析(所有节点):将所有的节点的IP HOSTNAME 写入到 /etc/hosts 并分发到所有节点. [[email

通过Rancher部署并扩容Kubernetes集群基础篇二

接上一篇通过Rancher部署并扩容Kubernetes集群基础篇一 7. 使用ConfigMap配置redis https://github.com/kubernetes/kubernetes.github.io/blob/master/docs/user-guide/configmap/redis/redis-config redis-config maxmemory 2mb     maxmemory-policy allkeys-lru # kubectl create configma

mysql5.7 MGR集群搭建

mysql5.7 MGR集群搭建部署 此文章由队员(谆谆)拟写 此文章来自 乌龟运维 官网 wuguiyunwei.com QQ群 602183872 最近看了一下mysql5.7的MGR集群挺不错的,有单主和多主模式,于是乎搭建测试了一下效果还不错,我指的不错是搭建和维护方面都比较简单.网上绝大多数都是单主模式,当然我这里也是,为了加深印象,特意记录一下搭建过程,等以后再去尝试多主模式,相信大家现在数据库的瓶颈基本都是在写,读写分离虽然是一种可行的解决方案,但是如果数据量很大,写一样会有问题,

如何在一台ESXi主机上搭建一整套VSAN集群的环境

从上周起,我开始翻译一本新书.IT类中文书籍的翻译往往有一个术语的问题,如何选择最准确的中文术语,让读者清楚明白而且在实际操作和配置的时候不至于误解,是一件不那么容易的事情.一个简单的例子就是cluster,中文可以译作"集群"或者"群集".这两者本身都广为使用,而且是完全相同的意思.我查了一下中文亚马逊书店,136本IT类中文图书用了"集群",29本用了"群集".看上去"集群"更为普及一些,而且我本人也习