如何实现Linux数据库双机热备? (linux数据库双机热备)

随着现代企业业务的日益复杂和数据量的不断增加,数据库高可靠性和可用性成为了关键的问题。为了确保数据的安全性和连续性,常常采用双机热备的方案来实现数据库的高可用性。本文将介绍如何在Linux环境下实现数据库双机热备的方案。

一、概述

数据库双机热备是指在两台服务器之间建立主从备份关系,主服务器故障时自动切换到备服务器上,保证数据的高可用性和可靠性。关键技术包括主从同步、心跳检测、自动故障切换等。

在Linux环境下,主流的数据库软件有MySQL和PostgreSQL,本文将以MySQL为例进行介绍。

二、安装配置MySQL

1.安装MySQL

在Linux系统中,可以通过包管理器来安装MySQL。例如,在Debian和Ubuntu系统中,可以使用以下命令进行安装:

sudo apt-get install mysql-server

在CentOS和RedHat系统中,可以使用以下命令进行安装:

sudo yum install mysql-server

2.配置MySQL

安装完成后,需要对MySQL进行一些基本配置,包括设置root密码、创建数据库等。

首先设置root密码:

sudo mysql_secure_installation

然后创建数据库:

mysql -u root -p

CREATE DATABASE dbname;

GRANT ALL PRIVILEGES ON dbname.* TO ‘username’@’%’ IDENTIFIED BY ‘password’;

FLUSH PRIVILEGES;

其中,dbname为数据库名称,username为用户名,password为密码。

三、配置主从复制

1.配置主服务器

在主服务器上,需要进行一系列的配置,以开启主从复制功能。具体步骤如下:

1)编辑/etc/mysql/my.cnf文件,添加以下语句:

log-bin=mysql-bin

server-id=1

其中,log-bin设置MySQL日志记录方式为二进制格式,server-id设置主服务器唯一标识号为1。

2)重启MySQL服务器:

sudo systemctl restart mysql

3)创建从服务器连接主服务器的用户账号:

mysql -u root -p

GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘password’;

其中,slave_user为从服务器连接主服务器的用户名,password为密码。

4)查看主服务器当前状态:

SHOW MASTER STATUS;

记录下File和Position两个参数的值,将在后续配置从服务器时需要使用。

2.配置从服务器

在从服务器上,也需要进行一系列的配置,以连接到主服务器并完成同步。具体步骤如下:

1)编辑/etc/mysql/my.cnf文件,添加以下语句:

server-id=2

relay-log=/var/log/mysql/mysql-relay-bin

relay-log-index=/var/log/mysql/mysql-relay-bin.index

其中,server-id设置从服务器唯一标识号为2,relay-log和relay-log-index设置从服务器日志的记录方式。

2)重启MySQL服务器:

sudo systemctl restart mysql

3)连接到主服务器:

mysql -u root -p

CHANGE MASTER TO

MASTER_HOST=’master_ip_address’,

MASTER_USER=’slave_user’,

MASTER_PASSWORD=’password’,

MASTER_LOG_FILE=’mysql-bin.000001′,

MASTER_LOG_POS=190;

其中,master_ip_address为主服务器的IP地址,slave_user和password为从服务器的连接用户名和密码,MASTER_LOG_FILE和MASTER_LOG_POS为在主服务器中查询到的File和Position值。

4)启动从服务器的复制功能:

START SLAVE;

5)查看从服务器的复制状态:

SHOW SLAVE STATUS\G

确保Slave_IO_Running和Slave_SQL_Running均为Yes。

四、实现自动故障切换

1.配置IP地址

在主从服务器之间进行自动故障切换时,需要在两台服务器上配置相同的虚拟IP地址,让客户端连接到该虚拟IP地址上,自动将请求转发到当前运行的主服务器上。

具体步骤如下:

1)安装keepalived:

在Debian和Ubuntu系统中,可以使用以下命令进行安装:

sudo apt-get install keepalived

在CentOS和RedHat系统中,可以使用以下命令进行安装:

sudo yum install keepalived

2)编辑/etc/keepalived/keepalived.conf文件,在vrrp_instance段中添加以下配置:

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 123

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100/24

}

}

其中,state为MASTER表示当前服务器为主服务器,interface为网卡名称,virtual_router_id为虚拟路由器编号,priority为优先级,advert_int为心跳检测间隔时间,authentication为认证方式,virtual_ipaddress为指定的虚拟IP地址。

3)在从服务器上进行相同的操作,只需要将vi_1中的state值改为BACKUP即可。

2.实现自动故障切换

一旦主服务器出现了故障,从服务器将会接管虚拟IP地址,成为新的主服务器。当主服务器恢复正常后,也会自动将虚拟IP地址转交回去。

在保证更改完成的情况下,可以手动测试。只需停止主服务器的MySQL服务,然后再查看从服务器的MySQL状态即可。

通过以上步骤,即可实现在Linux环境下的数据库双机热备。我们可以对数据库的高可用性和可靠性有更好的保证。

相关问题拓展阅读:

Linux双机热备中如何设置心跳线

双机热备使用lifekeeper或其他软件,所谓心跳线就是两台服务器之间再搭一个

内网

进行通信。所以每台机器上要再准备一个网卡才行。

1、如果是

虚拟机

,每台新增一个网卡然后,然后两台

服务器设置

新网卡的ip在同一个内网段,能相互ping通即可;如果是实体机需要新增网卡,然后像虚拟机一样设置ip。

2、确保新的ip能ping通后,再在双机中新增心跳线即可。

心跳线主要是保障主线断了,两台服务器还能通过内网线路通信。

心跳线就是两台服务器之间用一根网线连接起来就OK了,然后配上IP,这个IP可以是任何IP段的,只要不是局域网内的IP就成!

linux下怎么将oracle配置成双机热备

做oracle 的RAC可以实现

【DataGuard高可用性】

DataGuard确保企业数据的高可用性,数据保护以及灾难恢复。在主数据库故障无法修复时启动DataGuard的备份库,可以像主库一样继续对外提供服务而不影响业务的持续运行。

主备数据库之间通过日志传输实现数据库数据同步。

日志传输过程

1、在主系统中利用LNS进程(日志传输进程)将日志传输到备用系统

2、备用系统利用RFS(日志接收进程)接收主库传输过来的日志并利用MRP(日志恢复进程)同步数据

3、DataGuard环境中必须保证3个进程正常工作,否则此DataGuard环境将不能满足灾备需要。

【DG可以解决的问题】

1、在主库停机维护时,备份库顶上,使业务应用影响最小

   (1)主库安装OS补丁或Oracle补丁

   (2)主库进行数据整理

2、一个新的数据迁移项目,将数据迁移同型号更高端IBM服务器与存储中,主库数据2T,并且此迁移操作必须停机时间控制在30分钟以内(此次时间远远适于迁移数据库文件所需时间),怎么办?

    (1)把备份库顶上去

3、由于主库(仓库)数据量非常巨大(50T),所以没有常规备份,但此系统存在DataGuard灾备系统,如果主库某数据文件由于某种原因导致介质故障,你将如何对其进行恢复。

4、异地归档日志

主库:18.150  备库:18.160

1、主库和备库:开启归档模式

archive log list;查看归档启动否

shutdown immediate;开启归档前要正常关库

startup mount;启动Mount状态

alter database archivelog;开启归档模式

alter database open;开启数据库

2、确认主库强制写日志

select force_logging from v$database;

(所有sql语句nologging操作时 也会强制写日志)

SQL> alter database force logging;

3、修改主备数据库的参数文件

【主】

SQL>create pfile from spfile;

cd /oracle/app/oracle/product/10.2.0/db_1/dbs/

vi initTEST.ora

  DB_UNIQUE_NAME=TEST

  LOG_ARCHIVE_CONFIG=’DG_CONFIG=(DB150,DB160)’

  LOG_ARCHIVE_DEST_1=’LOCATION=/home/oracle/archive  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST’  

  LOG_ARCHIVE_DEST_2=’SERVICE=DB160 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST’

  FAL_SERVER=DB

  FAL_CLIENT=DB160

  STANDBY_FILE_MANAGEMENT=AUTO

【备】

SQL>create pfile from spfile;

cd /oracle/app/oracle/product/10.2.0/db_1/dbs/

vi initTEST.ora

  DB_UNIQUE_NAME=TEST

  LOG_ARCHIVE_CONFIG=’DG_CONFIG=(DB150,DB160)’

  LOG_ARCHIVE_DEST_1=’LOCATION=/home/oracle/archive  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST’  

  LOG_ARCHIVE_DEST_2=’SERVICE=DB150 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST’

  FAL_SERVER=DB

  FAL_CLIENT=DB150

  STANDBY_FILE_MANAGEMENT=AUTO

4、主库和备库

都配置“监听”、“传输文件”,并开启监听

5、主库和备库

都创建“归档日志”目录:mkdir /home/oracle/archive

6、主库和备库

cd /oracle/app/oracle/product/10.2.0/db_1/dbs/

rm -rf spfileTEST.ora

sqlplus / as sysdba

SQL> startup force;

SQL>create spfile from pfile;

7、备库

SQL> shutdown immediate

$ sqlplus sys/lipengfei as sysdba

(连接成功)

SQL> startup nomount force;

8、主库

SQL> show parameter ARCHIVE(查看到刚才配置的值生效了)

9、备库

(报错没有相应目录)

$ mkdir -p /oracle/app/admin/TEST/adump

$ mkdir -p /oracle/app/admin/TEST/bdump

$ mkdir -p /oracle/app/admin/TEST/cdump

$ mkdir -p /oracle/app/flash_recovery_area

$ mkdir -p /oracle/app/admin/TEST/udum

保证数据库两边的密码文件中的密码一致(主备数据库sys用户密码必须相同,如果备库中没有orapwTEST,从主库中拷贝到来)

10、主库

mkdir /home/oracle/db_bak/

rman target /

RMAN> backup full database format=’/home/oracle/db_bak/%U’ include current controlfile for standby;

(别退出RMAN,第12步用)

11、备库

mkdir /home/oracle/db_bak/

12、主库(把全库备份的文件拷贝到备库)

cd /home/oracle/db_bak/

scp 备份文件 :/home/oracle/db_bak/

RMAN>connect auxiliary sys/lipengfei@DB160

RMAN> duplicate target database for standby nofilenamecheck;—-异机(备库)恢复,保证主备库的数据和状态一样

13、备库

cd /oracle/app/oradata/TEST

ls>查看有没有文件

sqlplus / as sysdba

SQL>select open_mode from v$database;mount状态

14、主库

SQL> select process from v$managed_standby;

(没有灾备的进程)

SQL> alter system switch logfile;

SQL> select process from v$managed_standby;

PROCESS

ARCH

ARCH

LNS

已经有了进程,lns传输进程)

15、备库

SQL> select process from v$managed_standby;

PROCESS

ARCH

ARCH

RFS

RFS

(已经有了进程,rfs接收进程)

SQL> alter database recover managed standby database disconnect from session;

SQL>  select process from v$managed_standby;

PROCESS

ARCH

ARCH

RFS

RFS

MRP0

16、主库

SQL>create table haha as select * from dba_objects;

SQL>insert into haha select * from haha;

SQL>alter system switch logfile;

17、备库

SQL> alter database recover managed standby database cancel;

(备库上,只有把恢复日志进程MRP0取消,才可以打开数据库)

SQL> alter database open;

SQL> select count(*) from haha

【注意】

(1)备用数据库在日志恢复过程中(MRP进程存在期间)数据库处于MOUNTED状态,此时备用数据库无法打开供读取使用

(2)打开备用数据库

     停止备用库的日志恢复进程MRP

     alter database recover managed standby database cancel;

     open备用数据库,备用数据库默认打开为只读方式

     alter database open;

(3)重新启动备用数据库的MRP进程,数据库自动从OPEN状态转换到MOUNT 状态

     alter database recover managed standby database disconnect from session;

(4)mrp进程停止期间,只要RFS进程存在,那么不影响日志的接收

兄弟,以上就是关于oracle DG构架的实验材料,希望可以帮到你!

如果你是Redhat Linux ,可以使用Redhat Cluster Server, 简称 RHCS, 在安装的 ISO 中有, 推荐你使用 Redhat Enterprise Linux 6 系列的版本。

有个建议:

既然你有支持双机热备的硬件存储和2台服务器,为什么不弄成 RAC呢, RAC的数据安全性、稳定性,以及硬件资源的充分利用,都双比双机热备好。

如果指的是rac,clusterware或者grid里面自带详细操作步骤的,或者付费找oracle的来干啊哈哈

1. 最简单的办法:采购一套商业热备软件(Rose双机/赛门等)

2. 操作系统自带的集群模块:比较复杂,Linux平台的下目前这个模块还不是太成熟和完成

3. 数据库自带冗余组件:缺点是只管数据库本身状态,其余硬、软件、网络等故障时不作为。

从配置调试和后期运维管理来看,推荐使用商业软件实现,毕竟也不贵。

关于linux数据库双机热备的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 如何实现Linux数据库双机热备? (linux数据库双机热备)