Centos6.5基于MariaDB10.x 主从复制高可用简单详解

主从复制目的:

mysql服务器稳定性提升,避免单台mysql服务器宕机后影响整个业务,当出现宕机问题后,可以立即可使从机提升为新的主服务器。从而实现sql高可用冗余性。

一、演示环境

os:centos6.5

sql:mariadb-10.0.12

iptables off

selinux disabled

已装组件:

Development tools

Server Platform Development

主机master:10.19.90.197

从机slave:10.19.90.111

二、(注:sql安装不演示,请参考http://ssc4469.blog.51cto.com/6315913/1627739里的mariadbab安装,另外我这里演示的数据库版本一致的)

master服务器配置:

1、停止服务

# /etc/init.d/mysqld stop

2、修改mysql配置文件,/etc/my.cnf,我这里仅修改了两项参数,如图所示,一个是mysql日志路径,一个是server-id为1

3、创建binlog目录,修改属组

# mkdir -pv /mydata/binlogs/
# chown -R mysql:mysql /mydata/binlogs/

4、启动mysql服务,查看启动信息

# /etc/init.d/mysqld start

5、登录mysql 授权远程用户

MariaDB [(none)]> grant replication slave,replication client on *.* to ‘用户‘@‘10.19.90.111‘ identified by ‘密码‘;    //注:用户密码必须是当前sql已创建的用户及密码

MariaDB [(none)]> flush privileges;   //刷新MySQL的系统权限相关表

slave服务器配置:

1、停止服务

# /etc/init.d/mysqld stop

2、修改mysql配置文件,/etc/my.cnf,我这里仅修改了两项参数,如图所示,一个是启用mysql中继日志路径,一个是server-id为2

3、创建binlog目录,修改属组

# mkdir -pv /mydata/binlogs/
# chown -R mysql:mysql /mydata/binlogs/

4、启动mysql服务,查看启动信息

# /etc/init.d/mysqld start

5、连接mysql,查看中继日志状态:

(注:中继日志:它其实跟复制相关的,与二进制日志几乎相同,只不过它不是用于记录事件的,而是作为读取数据的源并且在本地执行的,当然中继日志是在从服务器上)

6、查看验证(此时没有文件)

# ls /mydata/relaylogs

7、登录mysql 授权远程用户

MariaDB [(none)]> grant replication slave,replication client on *.* to ‘用户‘@‘10.19.90.197‘ identified by ‘密码‘;    //注:用户密码必须是当前sql已创建的用户及密码

MariaDB [(none)]> flush privileges;   //刷新MySQL的系统权限相关表

三、查看master、slave节点状态及启用slave节点

2、maser查看日志状态:

3、slave节点查看同步状态(注:配图是已经同步中的状态,实际刚创建完毕,Slave_IO_Running: No,Slave_SQL_Running: No,主要就是看这两项参数)

注:show slave status 解释  

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.19.90.197
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000002
          Read_Master_Log_Pos: 609
               Relay_Log_File: relay-bin.000006
                Relay_Log_Pos: 818
        Relay_Master_Log_File: master-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
      
SHOW SLAVE STATUS会返回以下字段:
Slave_IO_State
SHOW PROCESSLIST输出的State字段的拷贝。SHOW PROCESSLIST用于从属I/O线程。如果线程正在试图连接到主服务器,正在等待来自主服务器的时间或正在连接到主服务器等,本语句会通知您

Master_User
被用于连接主服务器的当前用户。

Master_Port
当前的主服务器接口。

Connect_Retry
–master-connect-retry选项的当前值

Master_Log_File
I/O线程当前正在读取的主服务器二进制日志文件的名称。

Read_Master_Log_Pos
在当前的主服务器二进制日志中,I/O线程已经读取的位置。

Relay_Log_File
SQL线程当前正在读取和执行的中继日志文件的名称。

Relay_Log_Pos
在当前的中继日志中,SQL线程已读取和执行的位置。

Relay_Master_Log_File
由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称。

Slave_IO_Running
I/O线程是否被启动并成功地连接到主服务器上。

Slave_SQL_Running
SQL线程是否被启动。

Replicate_Do_DB,Replicate_Ignore_DB
使用–replicate-do-db和–replicate-ignore-db选项指定的数据库清单。

Replicate_Do_Table,Replicate_Ignore_Table,Replicate_Wild_Do_Table,Replicate_Wild_Ignore_Table
使用–replicate-do-table,–replicate-ignore-table,–replicate-wild-do-table和–replicate-wild-ignore_table选项指定的表清单。

Last_Errno,Last_Error
被多数最近被执行的查询返回的错误数量和错误消息。错误数量为0并且消息为空字符串意味着“没有错误”。如果Last_Error值不是空值,它也会在从属服务器的错误日志中作为消息显示。

更多相关请参考:http://zhumeng8337797.blog.163.com/blog/static/10076891420115732244591/
或自行google,关键词:“show slave status”

4、启动slave同步连接服务:

MariaDB [(none)]> start slave
    -> ;
Query OK, 0 rows affected, 1 warning (0.00 sec)

5、slave节点验证文件查看:

6、slave节点同步状态查看:

四、master创建库,测试slave是否同步,这几步操作不在进行演示,大家自己去试试就OK,很简单、

五、我这里讲下,mysql主从同步,如何同步已有的数据。

问题:原本197这台服务器最开始是单项sql服务器,刚才创建的主从同步,不能同步之前的库和数据,下面我给大家讲下这个问题。

解决方法:

主机开两个shell窗口,一个进入mysql,一个是shell

1、master 主机阻断写操作

MariaDB [(none)]>  FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
MariaDB [zentao]> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 |     2040 |              |                  |
+-------------------+----------+--------------+------------------+

2、另一个shell导出master主机相应的数据库

mysqldump -u root -p --opt -R zentao > /opt/zento-0412.sql

3、解锁刚才的锁定

MariaDB [(none)]>  UNLOCK TABLES;

4、同步导出的数据

scp /opt/zentao-0412.sql [email protected]:/opt/

5、slave主机

停止slave

MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.03 sec)

6、创建mysql库

create database zentao;

7、导入数据

mysql -uroot -p‘密码‘ zentao < /opt/zentao-0412.sql

8、从启slave

MariaDB [(none)]> reset slave;
Query OK, 0 rows affected (0.00 sec)

六、验证

登录:master数据库连接的web端,后台创建一个新用户,如下:

登录master数据库查看 user表 是否有数据写入;

登录slave数据库查看对应的表是否有数据同步过来;

我这里已同步了 ,懒得写了,累死我了。。。。。。

特别注意注意:估计有人创建后同步数据库时,比如主库创建一条数据同步没事,但是修改一条数据无法同步,重启slave  在show slave status,会看到Last_SQL_Error:1062  报错 ,这里请修改从库的my.cof配置文件,在里面加上

slave-skip-errors = 1062 、在查看,数据就同步过来了,去掉配置里的slave-skip-errors = 1062,重启数据库,在更新主库表,在查看从库对应的数据,一切正常。OK,就这样。麻痹累死我了。。。。。。。

ps:高可用脚本过两天写出来放上

时间: 2024-10-10 17:40:02

Centos6.5基于MariaDB10.x 主从复制高可用简单详解的相关文章

干货,memcached+keepalived实现主主复制和高可用,详解!

keepalived+memcached主主复制高可用介绍: 客户端连接两台服务器之间的VIP地址,如果后端服务器故障自动切换. Keepalive原理: 1.故障检测: Keepalived的作用是检测memcached服务器的状态是否正常. 2.主从切换: Keepalived如果检测到memcached服务发生DOWN机或者死机等,能将VIP从主服务器移至从服务器 3.Keepalived如何发现memcached异常: 1) keepalived在memcached主服务器产生一个虚拟I

DRBD 高可用配置详解(转)

高可用性集群解释:一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上.还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行.今天来做个Heartbeat+DRBD+NFS的高可用文件系统1.实验VMware虚拟机2台 同时安装CentOS 6.6 x86_64的系统 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 #测试机1 [[email protected] ~]# ifconfig

centos7中keepalived原理及高可用(HA)详解

keepadlived原理:keepadlive是通过路由器的VRRP协议实现来实现服务器的高可用防止单点故障发生的技术. VRRP协议简介:VRRP是一种容错协议,它保证当主机的下一跳坏掉时,可以及时由另一台路由器来代替,从而保持通讯的连续性和可靠性.为了使vrrp能正常工作,要在路由器上配置虚拟路由器号和路由器的虚拟ip地址,同时产生一个虚拟MAC地址,这样在网络这就加入了一个虚拟路由器.一个主路由器和若干个备份路由器组成一个虚拟路由器,当主路由器发生故障时,一个备份路由器成为主路由器,接替

基于Keepalived实现Mysql高可用

前言 由于最近要使用Mysql数据库,而目前公司服务器与业务有限,于是只使用了一台Mysql.所以,问题很明显,如果这台Mysql坏了,那么将会影响整个公司的业务,所以考虑做Mysql的高可用方案.目前,Mysql的高可用方案很多,这里选择Keepalived+Mysql实现高可用. 环境介绍 ID OS IP Role node1 CentOS6.5_X64 192.168.1.159 Master node2 CentOS6.5_X64 192.168.1.160 Slave  Mysql

HAProxy基于KeepAlived实现Web高可用及动静分离

    前言     软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载均衡.LVS是基于Linux操作系统实现的一种软负载,而Haproxy则是基于第三方应用实现的软负载.Haproxy相比LVS的使用要简单很多,但跟LVS一样,Haproxy自己并不能实现高可用,一旦Haprox节点故障,将会影响整个站点.本文是haprox基于keepalived实现web高可用及动静分离.     相关介绍         HAProxy     haproxy是一款提供

基于heartbeat v2 crm实现基于nfs的mysql高可用集群

前言 因heartbeat v1内置的资源管理器haresource功能比较简单,且不支持图形化管理,所以heartbeat v2不再支持haresource,转而使用更加强大的资源管理器crm进行集群管理.本文将讲解如何基于heartbeat v2 crm实现基于nfs的mysql高可用集群. 高可用实现 实验拓扑 实验环境 node1:172.16.10.123 mariadb-5.5.36 CentOS6.6 node2:172.16.10.124 mariadb-5.5.36 CentO

基于keepalived的Haproxy高可用配置

一.概述: HAProxy是一个用于4层或7层的高性能负载均衡软件,在大型网站的大型Web服务器群集中,HAProxy可用来替代专业的硬件负载均衡设备,节省大量的开支. 通常情况下,为了避免整个体系中出现单点故障,在至关重要的架构中,都需要部署备份设备,同样,负载均衡设备也不能部署单台,一旦主设备出现问题之后,备份设备可对主设备进行接管.实现不间断的服务,这便是Keepalived的作用. 于是,HAProxy和Keepalived的组合便成了省钱高效的Web服务器负载均衡架构. 拓扑图: 二.

基于corosync+pacmaker实现高可用集群

目前,corosync功能和特性已经非常完善了,所以pacmaker独立出来之后通常都将pacmaker和corosync结合来使用,corosync并没有通用的资源管理器,因此要借助pacmaker来实现 常用的资源管理器: ·cman:rgmanager ·crm: crm的资源约束有: ·location :资源对节点的偏好 ·colocation:排序约束:资源运行在同一节点上的可能性,需要一定评估的 ·order: 资源采取动作的次序 资源有很多属性,以下为最常见的几类 ·集群属性 ·

Linux基于heartbeat配置httpd高可用服务

Heartbeat是一个基于Linux开源的,被广泛使用的高可用集群系统.我们可以基于Heartbeat构建web高可用服务环境.本文在CentOS 6.5下做了一个简单示例,并对其日志进行了初步分析,供大家参考. 有关Heartbeat的相关知识,可以参考: Heartbeat 集群组件概述 Heartbeat 安装及配置 一.配置host解析及网络 ###主机名配置,与/etc/hosts中的解析两者配置保持一致 [[email protected] ~]# more /etc/syscon