Linux服务器数据库(MySQL、ORACLE)简单的异地备份方案

Linux服务器MySQL数据库简单的异地备份方案

首先简单说下:

1、执行脚本导出数据库。

mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname > /bak/db/backup.sql

2、使用scp将导出的数据库文件传输到其他服务器上,一般进行异地备份,容灾。

scp -P 195 /bak/db/backup.sql root@xxx.xxx.xxx.xxx:/bak

其中195为ssh端口号,如果是默认的22,可以省略 -P 22。

-----------------------------------------------------------------------------------------------------------------

现在需要编写一个sh脚本,并设定到定时任务中

sh脚本内容如下:

#!/bin/sh

filename=`date '+%Y%m%d-%H%M%S'`
filename="${filename}bak.sql"

mysqldump -h127.0.0.1 -P3306 -uroot -ppassword dbname > /bak/db/${filename}

scp -P 195 /bak/db/${filename} root@xxx.xxx.xxx.xxx:/bak

echo "success"

sh文件不要忘记使用 chmod +x backup.sh 进行授予可执行权限。

假设我们将sh文件存放与opt目录下,需要配置一下定时任务

编辑文件:vi /etc/crontab 设定每天凌晨4点半执行

30 04 * * * root /bin/sh /opt/db/backup-database.sh

可以使用命令:cat /var/log/cron  查看定时任务执行日志

如上处理后,服务器就会自动进行数据库备份并上传到异地服务器上了,但是有个问题还需要解决,那就是让scp命令不需要密码才行。

具体配置方法参考我的另一篇博客:http://blog.csdn.net/catoop/article/details/8284803

下面说一下oracle与mysql的不同之处

oracle备份一般情况需要使用 su - oracle 切换到oracle用户下才能执行,下面说一下直接在root用户下如何进行操作。

特殊的地方就是,有的操作需要root用户(比如无密码scp操作,我这里只是举例),有的操作需要oracle用户(exp导出用户)。

关键命令:su - oracle -c "/opt/expdatabase.sh"

意思是在root用户下不需要切换到oracle用户,而直接使用oracle用户的角色执行 expdatabase.sh 文件。

我们需要在 root 下的 sh 文件中调用 expdatabase.sh 文件。

shell 脚本如下:

1、主 sh 脚本,root 执行

#!/bin/sh

filename=`date '+%Y%m%d-%H%M%S'`
filename="${filename}bak.dmp"

su - oracle -c "/u01/oradata/bak/expdatabase.sh ${filename}"

scp -P 195 /u01/oradata/bak/${filename} root@124.207.35.132:/bak/202.102.41.35

echo "Execution completed"

2、需要用oracle用户的角色来执行的sh脚本 expdatabase.sh

#!/bin/sh

#进入oracle home
cd /u01/oracle
#加载oracle用户环境变量
. ./.bash_profile

exp user/password@clmt file=/u01/oradata/bak/$1 full=y
 
时间: 2024-11-01 17:28:48

Linux服务器数据库(MySQL、ORACLE)简单的异地备份方案的相关文章

数据库mysql,oracle,sqlite,mariadb 相关收藏

数据库 mysql MySql动态SQL - 风生水起 - 博客园 MySQL :: MySQL 5.1参考手册 :: B. 错误代码和消息 mysql 表空间及索引的查看 - 爱测试的猫咪 - 博客园 复制 mysql数据库复制_百度文库 mysql数据库'复制'的办法 - wren_blog - 51CTO技术博客 命令 Out of resources when opening file './xxx.MYD' (Errcode: 24) 解决 - MySQL - Database - C

windows/linux服务器下mysql备份恢复命令介绍

设mysql安装在c:盘,mysql数据库的用户名是root,密码是123456,数据库名是database_name,在d:盘根目录下面存放备份数据库,备份数据库名字为backup20070713.sql(20070713.sql为备份日期) 备份数据库: mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法.  代码如下 复制代码 mysqldump -uroot -p123456 data

linux服务器忘记mysql密码的解决方法

1.ssh登陆到linux服务器,向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在mysql的数据库所在的目录中.(命令输入部分用红色标注)  代码如下 复制代码 #killall -TERM mysqld 2.使用`--skip-grant-tables' 参数来启动 mysqld(/www/wdlinux/mysql/bin/为wdcp系统的mysql路径,非此系统的,请变更mysql的路径).  代码如下 复制代

Linux环境下双机(多机)自动互备份方案

问 题:我们公司有两台LINUX服务器,每个服务器只有一个硬盘.所以备份的问题就显得特别重要.我们装有mysql数据库.当然同时也要解决mysql备份的问题. 目 的:host 机器(最终所有备份都在其上留备份)ship机器(保存host机器备份) 方 法:通过shell脚本,打包相关要备份的文件.然后通过ftp操作下载,上载完成解决方案. 两台机器root通过crontab让脚本在各自机器定时. 建议host 每天早上3点 建议ship 每天早上6点 注意点: 两台服务器系统时间最好相差不要超

Linux下 mysql oracle 简单使用手册_数据库其它

安装好mysql后,配置好环境变量,然后 敲入 mysql 进入mysql 然后可以 Use mysql; Select * from user; 来查看所有的用户: Mysql 下执行脚本文件: Mysql > source xxx.sql; 1.1 两种方式增加用户:(转) 有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表.比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些. 下面的例子显示出如何使用MySQL客户安装新用户.这些例子假定权限已缺

Linux系统下Mysql使用简单教程(一)_Mysql

如果你会查询这些相关的问题,说明你是一个正在或者准备从事IT的程序猿,对于一个程序猿而言,不会使用linux系统的程序猿不是一好的程序猿哦!因为windows有时候真的让人很抓狂,而本人也相信没有什么习惯是不可以改变的.so以下都是在linux系统中的使用: 安装mysql命令 :$ sudo apt-get install -y mysql-server 查看mysql的版本命令(注意-V是大写,不然会出现如下错误):$ mysql -V 启动mysql命令(其它关闭,重启等功能只需将star

查看linux服务器上mysql配置文件路径的方法_Mysql

在类NUIX的系统中,配置文件的位置一般在/etc/my.cnf 或者 /etc/MySQL/my.cnf 我们见过有些人尝试修改配置文件但是不生效,因为他们修改的并不是服务器读取的文件.例如Debian下,/etc/mysql/my.cnf才是MySQL读取的配置文件,而不是/etc/my.cnf. 如果不知道当前使用的配置文件路径,可以尝试下面的操作: 对于服务器上只有一个MySQL实例的典型安装,这个命令很有用

linux服务器实例MYSQL每日备份脚本

目前为止没有一台MYSQL是永远不出问题的. 发现备份才是王道. 脚本如下  代码如下 复制代码 #!/bin/sh # File: /home/mysql/backup.sh # Database info DB_NAME="myad" DB_USER="ad123" DB_PASS="ad^%%#dd" # Others vars BIN_DIR="/opt/lampp/bin" BCK_DIR="/backup

linux服务器清空MySQL的history历史记录 删除mysql操作记录_Mysql

1. 不再保存历史记录或者减少历史记录保存数量 修改/etc/profile将HISTSIZE=1000 改成 0 或 要保留的数量清除用户home路径下的 .bash_history 复制代码 代码如下: echo '' > /home/user/.bash_history 2. 立即清空里的history当前历史命令的记录 复制代码 代码如下: history -c 当然,如果你想要当前执行的命令立即写入到history里面的话,可以执行 复制代码 代码如下: history -w 否则就只