精华内容
下载资源
问答
  • 几经周折,最终实现回滚操作,鉴于目前关于ambari的升级失败回滚及数据库rollback的资料很少很零散,笔者总结了这篇文章,和大家分享。遇到升级失败的问题,请仔细阅读本文,应该都能找到解决办法。 二.误操作 2.2...

    一.背景介绍

    之前一直在使用Ambari的2.2.18版本,作者在一次试图升级的过程中因操作不当导致了升级失败。几经周折,最终实现回滚操作,鉴于目前关于ambari的升级失败回滚及数据库rollback的资料很少很零散,笔者总结了这篇文章,和大家分享。遇到升级失败的问题,请仔细阅读本文,应该都能找到解决办法。

    二.误操作

    1. 2.2到2.4升级是需要分开升级ambari-server/agent/grafana/ambari metrics collector等多个组件的,且顺序必须按照官方文档要求。没有升级前就启动ambari server会导致不可预知的错误。
    2. ambari-server web UI的backgroud options如果卡住不动,一定是有报错心跳等待中,切记不要发送大量的暂停终止操作。正确的做法是查看/var/log下面的相关日志,排除问题后,自然option会继续。
    3. 切忌在没有备份数据库的情况下执行ambari-server reset,否则将失去现有集群,重新回到ambari的安装界面。
    4. 在一切升级操作前务必备份数据库ambari、ambarirca。同时务必备份/etc/ambari-server/conf/ambari.properties文件,笔者推荐的操作是备份整个conf文件夹
      1.备份ambari数据库
      pg_dump -U postgres ambari > /usr/local/ambari_bak/ambari_rec.sql
      2.备份ambarirca数据库
      pg_dump -U postgres ambarirca > /usr/local/ambari_bak/ambarirca_rec.sql
      3.备份ambari-server的conf目录
      cp -R /etc/ambari-server/conf /usr/local/ambari_bak

    三.重点bug-fix记录

    • 错误升级或者降级导致数据库schema记录的server版本与server真实版本不一致。在执行ambari-server upgrade之前必须检查数据库里面的server版本信息是否和真实信息一致。
    Current database store version is not compatible with current server version

    分析:这里的database的version可能高于或者低于current server version,一般是升级的时候遇到的问题,这个时候表现为database version低于current server version,一般网上资料都是这种。这个时候应该执行ambari-server upgrade。但是笔者遇到的是降级时候发生的错误,表现为database version高于current server version。这种情况只能重装数据库或者重新初始化数据库了。

    • 报agent节点的common-services文件夹下面的服务metainfo.xml找不到
    Caused by: org.apache.ambari.server.AmbariException: Stack Definition Service at '/var/lib/ambari-server/resources/common-services/PXF/3.0.0/metainfo.xml' doesn't contain a metainfo.xml file

    分析:这个错误一般是未正确重装或者未完全卸载ambari-agent造成的。需要删除所有agent节点的/var/lib/ambari-agent目录,并在所有节点执行yum -y remove ambari-agent

    • 部分升级完ambari后agent启动不了,agent日志如下
    ('INFO 2013-03-06 10:37:42,580 NetUtil.py:58 - Failed to connect to https://localhost:8440/cert/ca due to [Errno 111] Connection refused
    INFO 2013-03-06 10:37:42,580 NetUtil.py:77 - Server at https://localhost:8440 is not reachable,

    分析:这个错误在网上的说法很多,有的是升级openssl,有的说升级oracle JDK,有的说修改但是笔者尝试都无果。一般这个错误会在手动安装ambari-agent或者部分版本升级ambari后导致。正确做法是修改/etc/ambari-agent/conf下面的ambari-agent.ini这个文件。可按照下面的流程验证:

    1.这里的hostname一定是全部agent节点都填写主节点(ambari-server)节点的hostname
    [server]
    hostname=bdp01.szmg.com.cn
    url_port=8440
    secured_url_port=8441
    
    
    2.如果无法解决,可尝试下面策略(增加protocol信息)
    [security]
    keysdir=/var/lib/ambari-agent/keys
    server_crt=ca.crt
    passphrase_env_var_name=AMBARI_PASSPHRASE
    #下面这行是增加的
    force_https_protocol=PROTOCOL_TLSv1_2
    
    
    • 启动ambari-server的时候报各种检查数据库字段类型不符合,object类型错误等的...

    解决方法:rollback数据库

     

    四.数据库rollback(回滚)+服务downgrade(降级)

    如果以上操作仍然无法解决升级失败的问题,那么最后万能一招就是全部回滚加降级了。这往往是危险操作造成的,比如笔者就遇到了升级失败,未检查数据库就upgrade甚至reset了ambari-server,最后全部通过以下的流程实现了业务恢复:

    1. ambri-server、agent全部关闭,ambari元数据库关闭
    2. 备份ambari.properties
    3. 所有节点的ambari.repo全部由之前的repo文件覆盖
    4. 所有版本全部降级到升级前版本,包含ambari-server,ambari-agent,grafana,ambari-metrics-collector,ambari-metrics-monitor,ambari-metrics-hadoop-sink。子节点的服务要所有节点全部降级,降级完查看版本:
    降级命令:
    替换repo后 yum update
    降级:
    yum downgrade ambari-server
    yum downgrade ambari-agent
    yum downgrade grafana
    yum downgrade ambari-metrics-monitor ambari-metrics-hadoop-sink ambari-metrics-collector
    主节点:
    [root@bdp01 package]# rpm -qa|grep ambari
    ambari-metrics-collector-2.2.2.18-1.x86_64
    ambari-metrics-monitor-2.2.2.18-1.x86_64
    ambari-server-2.2.2.18-1.x86_64
    ambari-metrics-hadoop-sink-2.2.2.18-1.x86_64
    ambari-agent-2.2.2.18-1.x86_64
    子节点:
    [root@bdp07 conf]# rpm -qa |grep ambari
    ambari-metrics-hadoop-sink-2.2.2.18-1.x86_64
    ambari-metrics-monitor-2.2.2.18-1.x86_64
    ambari-agent-2.2.2.18-1.x86_64
    
    1. 重新安装ambari元数据库
    1.删除postgresql数据库
    yum -y remove postgresql postgresql-libs
    2.重装
    yum -y install postgresql
    3.数据库init
    sudo service postgresql initdb 
    4.rollback
     CREATE ROLE ambari WITH LOGIN PASSWORD 'bigdata';
     CREATE ROLE mapred WITH LOGIN PASSWORD 'mapred';
     create database ambari;
     create database ambarirca;
     psql -U postgres ambari < /usr/local/ambari_bak/ambari_rec.sql
     psql -U postgres -d ambarirca < /usr/local/ambari_bak/ambarirca_rec.sql
    
    

     

    展开全文
  • 数据库中回滚ROLLBACK

    千次阅读 2018-09-25 15:53:43
    数据库中的更新通常是由客观世界的所发生的事件引起的.为保证数据库内容一致,要么完全成功,要么完全失败。 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个...

    数据库中的更新通常是由客观世界的所发生的事件引起的.为保证数据库内容一致,要么完全成功,要么完全失败。

    • 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
    • 事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。 COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。 ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。
    展开全文
  • 数据库中回滚rollback

    千次阅读 2014-09-09 22:03:26
    数据库中 据库中的更新通常是由客观世界的所发生的事件引起的.为保证数据库内容一致,要么完全成功,要么完全失败 1):事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不...
    数据库中的更新通常是由客观世界的所发生的事件引起的.为保证数据库内容一致,要么完全成功,要么完全失败
    
    1):事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
    (2):事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。
    COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。
    ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态.



    展开全文
  • db.transRollback() 事务回滚。在开启事务之后,如果单个逻辑工作单元执行的操作出现异常,执行事务回滚命令,那么数据库回到原来状态。 参数描述 无 返回值 无返回值,出错抛异常,并输出错误信息,可以通过...

    语法

    db.transRollback()

    事务回滚。在开启事务之后,如果单个逻辑工作单元执行的操作出现异常,执行事务回滚命令,那么数据库回到原来状态。

    参数描述

    返回值

    无返回值,出错抛异常,并输出错误信息,可以通过 getLastErrMsg() 获取错误信息 或 通过 getLastError() 获取错误码。

    关于错误处理可以参考常见错误处理指南 。

    错误

    常见错误可参考错误码

    示例

    展开全文
  • rollback  回滚的意思。 就是数据库里做修改后 ( update ,insert , delete)未commit 之前 使用rollback 可以恢复数据到修改之前。
  • 数据库MySQL中触发器中rollback报错。 首先我们看一下题目。数据库表的建立的数据详见: 数据库实验–数据修改、删除与视图,触发器 在 S 表中编写 insert 的触发器,假如每个班的学生不能超过 30 个,如果低于此数...
  • 数据库回滚(rollback)和撤销(undo)的区别就是把某一个数据库操作恢复到该操作之前的状态,下面结合自己理解总结一下区别,如有错误,欢迎各路大佬斧正: 数据库事务过程:执行SQL——提交 回滚:即在事务...
  • 数据库 重做undo和回滚rollback

    千次阅读 多人点赞 2019-12-23 22:12:01
    回滚:即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,滚回到事务开始时的状态。(需要在提交之前执行) 撤销:恢复程序要在不影响其他事务运行的情况下...
  • Oracle数据库中commit和rollback命令

    千次阅读 2014-05-10 18:08:06
    一个数据库事务起始于一个SQL语句,中止于以下4种事件之一: COMMIT或ROLLBACK语句 DDL/DCL隐式提交 用户退出时自动提交 系统强行关闭时取消事务 事务结束后,下一条SQL语句将开始一个新的事务。 语句 ...
  • 数据库的commit以及rollback

    千次阅读 2012-02-04 15:52:21
    介绍: 从功能上划分,SQL 语言可以分为... 数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ;  CREATE---创建表  ALTER---修改表  DROP---删除表  2. DML(Data Manipulation Languag
  • liquibase 官网上对于rollback 回滚有9种命令,这里只介绍rollback 与rollbackToDate。官网链接地址:http://www.liquibase.org/documentation/command_line.html一.命令行按时间回滚数据库liquibase --...
  • 在使用MySQL数据库时,有时会出现ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction...
  • 关于数据库的commit以及rollback(转载)

    千次阅读 2012-11-02 11:59:09
     就是数据库里做修改后 ( update ,insert , delete)未commit 之前 使用rollback 可以恢复数据到修改之前。 从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类。 1. DDL(Data Definition Language...
  • 转载:用于学习   从功能上划分,SQL ... 数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ;  CREATE---创建表  ALTER---修改表  DROP---删除表  2. DML(Data Manipulation Langu...
  • 数据库回滚机制(RollBack)的实现

    万次阅读 2016-11-28 20:45:47
    一、我们来看一个DML语句的处理过程描述 update undotest set object_type='VIEW' where object_type='PROCEDURE'; ...检查shared pool中是否存在相同的语句,如果存在,重用执行计划,执行扫描运算,如果不存在...
  • 一个数据库事务起始于一个SQL语句,中止于以下4种事件之一: COMMIT或ROLLBACK语句 DDL/DCL隐式提交 用户退出时自动提交 系统强行关闭时取消事务 事务结束后,下一条SQL语句将开始一个新的事务。 语句 功能
  • 今天看到数据库中有commit和rollback字段,收集了一些资料和信息,结果如下: commit 就是确定提交的意思,比如你用test账户登录数据库insert到表中一条记录,而不commit,那么别的账户在登录这个数据库时就查询不...
  • http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/ae4e35661dd7b503/3f202cc86825f022?hl=en&amp;lnk=gst&amp;q=about#3f202cc86825f022
  • 数据库异常: Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during rollback(). Transaction resolution unknown. 原因...
  • 数据库事务:commit(),rollback()

    千次阅读 2018-06-28 23:49:35
    回滚:rollback(),就是返回到上一条修改。 提交:commit(),提交修改的记录。事物:一种逻辑操作单元,使数据从一种状态变换到另一种状态。比如去饭店吃饭点了100个菜,第50个菜发现一只虫子,此时可以 让100个...
  • 触发器不能调用或间接调用COMMIT,ROLLBACK等DCL语句  ...ddl语句:DDL语句用语定义和管理数据库中的对象,如Create,Alter,Drop,truncate等;DDL操作是隐性提交的!      &...
  • 因为spring的事务是基于数据库的事务的。 spring在启动生成Bean之后,会为标注上@Transactional的类和方法生成代理,并将相关配置注入, 这样就在代理中为我们把事务的操作处理了。(commit,roolbackfor等) ...
  • 从图中可以看出,在 Python 中操作数据库,要经过五个步骤,分别是连接数据库,获取游标,数据库操作,关闭游标,关闭数据库连接。 在 Pyhton 中,使用 Pymysql 模块来对数据库进行编程。 数据库资源 1.导入模块 ...
  • 探索Oracle之数据库升级五 PSU11.2.0.4.3 rollback 11.2.0.4.0   一、进入PSU目录,执行opatch rollback   [root@db01~]# su - oracle [oracle@db01~]$ ls c18522509 Desktop OPatch p18522509_112040_...
  • 一、事务的基本介绍 1.概念:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。... 回滚:rollback;  3. 提交:commit; 3.例子: CREATE TABLE account ( id ...
  • 一,数据库中存储过程 (1)建立包 [code="java"]create or replace package t_allpackage is type mycursor is ref cursor; end t_allpackage; [/code] (2)存储过程主体 [code="java"...
  • import org.springframework.test.annotation.Rollback; import static org.hamcrest.Matchers.is; public class UserDaoTest { UserDao userDao = new UserDao(); @Test @Transactional @Rollback(true) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,247
精华内容 2,498
关键字:

数据库rollback