随着现代企业业务的日益复杂和数据量的不断增加,数据库高可靠性和可用性成为了关键的问题。为了确保数据的安全性和连续性,常常采用双机热备的方案来实现数据库的高可用性。本文将介绍如何在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双机热备中如何设置心跳线
- linux下怎么将oracle配置成双机热备
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数据库双机热备的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。