Linux同平台数据库整体物理迁移

本文详细介绍如何在相同Linux平台上,通过自动化脚本实现Oracle数据库的整体物理迁移过程,包括从A机器迁移到B机器的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux同平台数据库整体物理迁移
需求:A机器不再使用,要将A机器的Oracle迁移到B机器。
之前写过类似需求的文章:http://www.cnblogs.com/jyzhao/p/3968504.html
本文这次旨在更多用到自动化通用的整合脚本去实现同平台的数据库整体迁移。

  1. A机器操作
  2. B机器操作

A机器操作

0.系统版本:

[root@DB-A tmp]# uname -a
Linux DB-A 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@DB-A tmp]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.4 (Santiago)
Kernel \r on an \m

1.A数据库当前信息

select status from v$instance union all
select open_mode from v$database union all
select * from v$version where rownum = 1;

2.确认参数文件的位置

show parameter pfile

这里需要根据当前的spfile创建pfile文件,后面要用到。

create pfile from spfile;

3.数据文件、临时文件、控制文件、重做日志文件的位置

set linesize 140 pagesize 100
select name from v$datafile union all
select name from v$tempfile union all
select name from v$controlfile union all
select member from v$logfile;

4.干净关闭数据库:

shutdown immediate;

5.确定ORACLE软件目录并打包传到B机器

echo $ORACLE_BASE
/ora/app/oracle
tar -zcvf /tmp/oracle.tar.gz /ora/app/oracle

将打包的Oracle软件目录以及所有的参数文件,控制文件,数据文件,临时文件,重做日志文件都拷贝到B机器。

B机器操作

0.系统版本:

[root@DB-B irnop]# uname -a
Linux DB-B 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@DB-B irnop]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Kernel \r on an \m

1.安装依赖包和调整系统参数

略。可参考:http://www.cnblogs.com/jyzhao/p/3891769.html

2.解压ORACLE_HOME到B机器上规划的软件安装目录:/u01/app/oracle

tar zxvf oracle.tar.gz 

解压后的oracle目录直接mv到/u01/app下

3.修改参数文件pfile并启动数据库到nomount

根据B机器实际情况修改数据库占用内存的值,并确认参数文件中写的路径都是存在的。
startup nomount pfile='$ORACLE_HOME/dbs/initirnop.ora'

SQL> startup nomount pfile='$ORACLE_HOME/dbs/initirnop.ora'
ORACLE instance started.

Total System Global Area 2.3717E+10 bytes
Fixed Size  2239176 bytes
Variable Size1.3153E+10 bytes
Database Buffers 1.0536E+10 bytes
Redo Buffers   25612288 bytes

4.启动到mount

SQL> alter database mount;

Database altered.

5.数据文件,临时文件,日志文件的rename重定向

set linesize 140 pagesize 100
select 'alter database rename file '''||name||''' to ''/xxx'||name||''';' from v$datafile union all
select 'alter database rename file '''||name||''' to ''/xxx'||name||''';' from v$tempfile union all
select 'alter database rename file '''||member||''' to ''/xxx'||member||''';' from v$logfile;

根据实际情况将old_name替换成new_name

old_name: /xxx/oradata
new_name: /new/oradata  

然后执行重定向SQL,检查当前路径是否修改正确:

select name from v$datafile union all
select name from v$tempfile union all
select member from v$logfile;

修改系统的目录权限:

chown -R oracle:oinstall /new/oradata

6.打开数据库:

SQL> alter database open;
### MySQL 数据库物理迁移方法 对于MySQL数据库物理迁移,通常涉及将数据文件直接从一个服务器传输到另一个服务器。这种方法不仅快速而且高效,因为不需要解析SQL语句或重新创建表结构[^1]。 #### 使用 `mysqldump` 进行逻辑备份再恢复的方式不是物理迁移 尽管 `mysqldump` 是一种常用的工具来导出整个数据库的内容以便于移植,但这属于逻辑迁移而非物理迁移。此过程会生成一系列 SQL 命令用于重建源数据库中的对象及其数据,在目标环境中执行这些命令可以实现数据转移的目的,但它并不适用于追求速度和效率的场景下完成真正的物理迁移任务[^2]。 #### 利用 LVM 快照进行在线热迁移 Linux 环境下的 Logical Volume Manager (LVM) 提供了一种机制叫做快照(snapshot),这使得可以在不影响现有业务运行的情况下制作磁盘卷的一致性副本。通过先暂停 MySQL 的写入操作、创建 LVM 快照并立即解锁 I/O 操作,之后就可以安全地复制该快照至新位置作为新的启动介质的一部分[^3]。 ```bash # 创建 LVM 快照前需确保已安装配置好 LVM 并且有足够的空间可用 lvcreate --size 10G --snapshot --name mysqldata-snap /dev/vg/mysql-data-lv ``` #### 复制原始数据目录 如果两台机器的操作系统版本,并且都使用相的存储引擎(例如 InnoDB),那么可以直接停止服务端进程(`mysql`)并将 `/var/lib/mysql/` 下的数据文件夹完整拷贝过去;重启目的地上相应的实例即可让其识别刚迁过来的新资料集[^4]。 ```bash # 关闭 MySQL 服务 sudo systemctl stop mysql.service # 将旧主机上的 MySQL 数据目录打包压缩后传送到新主机上解压覆盖名路径下的内容 tar czf - /var/lib/mysql | ssh user@newhost "cd /var/lib && tar xzf -" ``` #### 使用 Percona XtraBackup 实现无停机时间迁移 Percona XtraBackup 是一款专为 Innodb 存储引擎设计的支持增量备份与即时恢复特性的开源软件包。借助它能够做到几乎零宕机时间内完成大型生产环境里复杂关系型数据库系统的整体搬迁工作。XtraBackup 可以在不锁定表格的前提下获取一致性的全量备份镜像,非常适合那些对连续性和性能有严格要求的应用场合[^5]。 ```bash # 安装 Percona XtraBackup yum install percona-xtrabackup-24 # 对应 CentOS/RHEL 用户 apt-get install percona-xtrabackup-24 # 针对 Debian/Ubuntu 发行版 # 执行完全备份 innobackupex --user=root --password=secret --no-timestamp /path/to/backupdir/ # 准备备份以供恢复 innobackupex --apply-log /path/to/backupdir/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值