database

mysql MHA solutions

参考:https://code.google.com/p/mysql-master-ha/wiki/Overview

一、官网场景—— 一主多从

1.主要使用场景:提供master容灾,在master宕机之后,以最短的时间自动将slave提升为master。

工作方式:在master dead之后,自动选择一个slave(可以配置一个优先slave)接管master业务。并配置其他slave切换replication到新的master。

2.除此之外还有:在线master切换(0.5s-2s的不可写时间)。

二、难点——当然也就是MHA试图解决的问题

以下是手工打造时的难点,而MHA进行了解决。

1.选最新的slave接管master。

最新不好检查及选择。

2.其他不是最新的slave的一致性问题。

其他slave切换到新master,会丢失与原master的transaction,造成binary log event不一致。

手工检查binlog是一件很复杂且不易操作的事情。

三、官网wiki提供的其他各种solution

参考:https://code.google.com/p/mysql-master-ha/wiki/Other_HA_Solutions#Master,_one_candidate_master,_and_multiple_slaves

待续…

mysql MHA configuration

一、编写MHA配置文件

1.全局配置文件

编辑:/etc/masterha_default.cnf

2.应用配置文件

每个slaver的配置文件单独编写。而且需要为多个app单独编写配置文件,并在配置文件中使用不同的物理路径。

app1

app2

二、其他配置

参考:https://code.google.com/p/mysql-master-ha/wiki/Requirements

运行masterha_manager来检查配置是否有缺漏。

1.ssh 免密码登陆

检查:

注: masterha_check_ssh 不加配置文件则会报错:

2.关闭自动清除relay log[1]

关闭原因:By default, relay logs on slave servers are automatically removed if SQL threads have finished executing them. But such relay logs might still be needed for recovering other slaves.

什么是relay log: relay-log日志记录的是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器。

配置方法:

关闭之后要手工进行relay log文件的清理,使用Linux自己的cron。周期可以根据磁盘及文件保留期情况自行安排。

三、测试使用

1.测试master 不存在

关闭master

可以查看日志:

 

登陆slave机

可以代替master的功能接收数据。

2.重新启动原master

 

【注1】原master起来以后有个问题,就是其全局可写。如果这时有数据插进来,会造成新老master数据不一致。因此应该在重启原master后首先设置global read_only=1。然后将原master切为slave,从新master上同步所有数据。

【注2】同步数据时,原master会等到新master有一次数据操作时,统一将所有数据变化同步过来。这个时刻不是在配完slave后就完成,需等新master。

切换主从的blog:http://bananalighter.com/change-slaver2master/

参考:http://ylw6006.blog.51cto.com/470441/890360/

 

mysql MHA Install

一、MHA软件并没有实现主从复制的功能,所以:

1、可以用于现有系统

2、需要自己手动先把mysql的主从集群配起来

二、安装MHA

安装部分官方wiki:https://code.google.com/p/mysql-master-ha/wiki/Installation#Installation

1.安装MHA node(所有mysql server,包括master/slaver)

 

2.安装MHA Manager

参考:https://code.google.com/p/mysql-master-ha/wiki/Installation#Installing_MHA_Manager

MHA Manager提供了几个命令行管理工具,依赖于以下包(需要epel源):

  • MHA Node package
  • DBD::mysql
  • Config::Tiny
  • Log::Dispatch
  • Parallel::ForkManager
  • Time::HiRes (included from Perl v5.7.3)

安装完毕,接下来就是HA的配置。

下一篇:

参考:

https://code.google.com/p/mysql-master-ha/

https://code.google.com/p/mysql-master-ha/wiki/Tutorial

【从大坑中爬出】mysql将slave转为master

【从大坑中爬出】mysql将slave转为master

一、查看日志应用状态

(其实我也没看懂。。。)

二、修改/etc/my.cnf(参考master配置,此处祭出师父blog,略)

http://debugo.com/mysql-5-6-master-slave/

三、停slave,关掉只读

1.停slave

2.关只读

3.重置slave

四、如果未生效则重启下mysql进程试试

 

参考:http://blog.itpub.net/758322/viewspace-714346

 

 

oracle数据库数据字典及动态性能视图

oracle数据库数据字典及动态性能视图

oracle官方:http://docs.oracle.com/cd/E11882_01/server.112/e40540/datadict.htm#CNCPT002

数据字典是只读的表和视图,动态性能视图在数据库运行时不断进行更新。

Overview of the Data Dictionary

数据字典提供数据库的管理元数据。包含以下信息:

  • 所有schema object(模式对象 注1)的定义,包含列的默认值及完整性约束。

  • schema object所分配及已使用的空间

  • 为oracle用户分配的用户、特权、角色,用户的审计信息

数据字典是oracle数据库进行数据管理的主要部分。例如,oracle执行以下内容:

  • 通过查询数据字典来获得用户、模式对象、存储结构

  • 每当下达一次DDL(数据定义语言)声明,更新一次数据字典

数据字典存在数据库表中,可以使用sql访问。

数据字典定义

数据字典由以下类型的对象组成:

  • 基本表

这些底层表存储数据库信息,只有数据库可以访问及修改这些表。一般用户不会访问这些表,因为数据格式化存储,并进行了加密

  • 视图

这些视图将基本表中的数据解析为有用信息,例如用户,表名。这些视图包含基本表中所有对象的命名和描述。一些视图可以被所有用户访问,一些视图则只提供给管理员使用。

数据字典视图按照用户分组管理。通常来说,三组视图通过其前缀区分。每一组视图只提供给其对应的用户查看。如下表:

Prefix User Access Contents Notes

DBA_

Database administrators

All objects

Some DBA_ views have additional columns containing information useful to the administrator.

ALL_

All users

Objects to which user has privileges

Includes objects owned by user. These views obey the current set of enabled roles.

USER_

All users

Objects owned by user

Views with the prefix USER_ usually exclude the column OWNER. This column is implied in the USER_ views to be the user issuing the query.

不是所有的视图都包含前述三个用户组的数据。例如,数据字典只包含DBA_LOCK而不包含ALL_LOCK视图。

系统自带的DICTIONARY视图包括所有数据字典视图的名字和简短说明。例:

原文链接

Linux连接mysql报错Accessdenied for user

Linux连接mysql报错Accessdeniedforu

关键点:改密码。。。。

问题根源:安装mysql server后未设置管理员用户名密码。

转载原文:http://blog.csdn.net/love__coder/article/details/6937708

一、停原服务

二、mysqlsafe启动

三、登陆&改密码

四、重启服务

 

Oracle数据库用户管理

Oracle数据库用户管理

原文:http://dusong.blog.51cto.com/158065/139284

Oracle 数据库用户管理

Oracle 权限设置
一、权限分类:
系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。

实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

二、系统权限管理:
1、系统权限分类:
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体数据库表、视图、存储过程等),不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。

2、系统权限授权命令:
[系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)]
授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]…;

[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]

例:
SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect, resource to user50;

查询用户拥有哪里权限:
SQL> select * from dba_role_privs;
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs;

删除用户:SQL> drop user 用户名 cascade;  //加上cascade则将用户连同其创建的东西全部删除

3、系统权限传递:
增加WITH ADMIN OPTION选项,则得到的权限可以传递。

SQL> grant connect, resorce to user50 with admin option;  //可以传递所获权限。

4、系统权限回收:系统权限只能由DBA用户回收
命令:SQL> Revoke connect, resource from user50;

系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

三、实体权限管理
1、实体权限分类:select, update, insert, alter, index, delete, all  //all包括所有权限
execute  //执行存储过程权限

user01:
SQL> grant select, update, insert on product to user02;
SQL> grant all on product to user02;

user02:
SQL> select * from user01.product;

// 此时user02查user_tables,不包括user01.product这个表,但如果查all_tables则可以查到,因为他可以访问。


3. 将表的操作权限授予全体用户:
SQL> grant all on product to public;  // public表示是所有的用户,这里的all权限不包括drop。

[实体权限数据字典]:
SQL> select owner, table_name from all_tables; // 用户可以查询的表
SQL> select table_name from user_tables;  // 用户创建的表
SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 获权可以存取的表(被授权的)
SQL> select grantee, owner, table_name, privilege from user_tab_privs;   // 授出权限的表(授出的权限)

4. DBA用户可以操作全体用户的任意基表(无需授权,包括删除):
DBA用户:
SQL> Create table stud02.product(
 id number(10),
 name varchar2(20));
SQL> drop table stud02.emp;

SQL> create table stud02.employee
 as
 select * from scott.emp;
 
5. 实体权限传递(with grant option):
user01:

SQL> grant select, update on product to user02 with grant option; // user02得到权限,并可以传递。

6. 实体权限回收:
user01:
SQL>Revoke select, update on product from user02;  //传递的权限将全部丢失。


一、创建用户的Profile文件
SQL> create profile student limit  // student为资源文件名
 FAILED_LOGIN_ATTEMPTS  3  //指定锁定用户的登录失败次数
 PASSWORD_LOCK_TIME 5  //指定用户被锁定天数
 PASSWORD_LIFE_TIME 30  //指定口令可用天数
 

二、创建用户
SQL> Create User username
 Identified by password
 Default Tablespace tablespace
 Temporary Tablespace tablespace
 Profile profile
 Quota integer/unlimited on tablespace;

例:
SQL> Create user acc01
 identified by acc01   // 如果密码是数字,请用双引号括起来
 default tablespace account
 temporary tablespace temp
 profile default
 quota 50m on account;
SQL> grant connect, resource to acc01;

[*] 查询用户缺省表空间、临时表空间
SQL> select username, default_tablespace, temporary_tablespace from dba_users;

[*] 查询系统资源文件名:
SQL> select * from dba_profiles;
资源文件类似表,一旦创建就会保存在数据库中。
SQL> select username, profile, default_tablespace, temporary_tablespace from dba_users;

SQL> create profile common limit
 failed_login_attempts 5
 idle_time 5;
 
SQL> Alter user acc01 profile common;

三、修改用户:
SQL> Alter User 用户名
 Identified 口令
 Default Tablespace tablespace
 Temporary Tablespace tablespace
 Profile profile
 Quota integer/unlimited on tablespace;
 
1、修改口令字:
SQL>Alter user acc01 identified by “12345”;

2、修改用户缺省表空间:
SQL> Alter user acc01 default tablespace users;

3、修改用户临时表空间
SQL> Alter user acc01 temporary tablespace temp_data;

4、强制用户修改口令字:
SQL> Alter user acc01 password expire;

5、将用户加锁
SQL> Alter user acc01 account lock;  // 加锁
SQL> Alter user acc01 account unlock;  // 解锁

四、删除用户
SQL>drop user 用户名;  //用户没有建任何实体
SQL> drop user 用户名 CASCADE;  // 将用户及其所建实体全部删除

*1. 当前正连接的用户不得删除。


五、监视用户:
1、查询用户会话信息:
SQL> select username, sid, serial#, machine from v$session;

2、删除用户会话信息:
SQL> Alter system kill session ‘sid, serial#’;

3、查询用户SQL语句:
SQL> select user_name, sql_text from v$open_cursor;

SQL> ALTER SESSION SET 
 NLS_LANGUAGE= ‘SIMPLIFIED CHINESE’ 
 NLS_TERRITORY= ‘CHINA’ 
 NLS_CURRENCY= ‘RMB’ 
 NLS_ISO_CURRENCY= ‘CHINA’ 
 NLS_NUMERIC_CHARACTERS= ‘.,’ 
 NLS_CALENDAR= ‘GREGORIAN’ 
 NLS_DATE_FORMAT= ‘yyyy-mm-dd dy’ 
 NLS_DATE_LANGUAGE= ‘SIMPLIFIED CHINESE’  
 NLS_SORT= ‘BINARY’ 
 TIME_ZONE= ‘+08:00’ 
 NLS_DUAL_CURRENCY = ‘RMB’ 
 NLS_TIME_FORMAT = ‘HH.MI.SSXFF AM’ 
 NLS_TIMESTAMP_FORMAT = ‘DD-MON-RR HH.MI.SSXFF AM’ 
 NLS_TIME_TZ_FORMAT = ‘HH.MI.SSXFF AM TZH:TZM’ 
 NLS_TIMESTAMP_TZ_FORMAT = ‘DD-MON-RR HH.MI.SSXFF AM TZH:TZM’


 

一、Oracle 权限管理
SQL> grant connect, resource, dba to acc01;

SQL> revoke connect, resource from acc01;

二、Oracle 角色管理

SQL> Create Role <role_name>
 Identified by password/ Not Identified;
 
SQL> Alter Role <role_name> …

SQL> Grant <privs> to <role_name>;

SQL> Grant <role_name> to <user_name>

SQL> Set Role <role_name> 
 All Except <role_name2> / None 

oraclesys用户和system用户

oraclesys用户和system用户

原文:http://zhidao.baidu.com/link?url=YaJaenfeP9leY2rJaZ4fY_Kqn7rnGxY4PIg5WkCy6lYjpUUqfZG0bv49YxoVCQzjesdake23h1fHVURrLwHWh_

system是数据库内置的一个普通管理员,你手工创建的任何用户在被授予dba角色后都跟这个用户差不多。
sys用数据库的超级用户,数据库内很多重要的东西(数据字典表、内置包、静态数据字典视图等)都属于这个用户,sys用户必须以sysdba身份登录。

以上就是2个用户的区别。

另外你说的,system用户as sysdba登录时和sys一样的问题:
system用户以sysdba身份登录时就是sys,准确地说,任何用户以sysdba身份登录时都是sys,这一点,你登陆后执行show user可以验证。