标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 2663 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,718)
- DB2 (22)
- MySQL (74)
- Oracle (1,577)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (160)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (68)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (576)
- Oracle安装升级 (94)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (81)
- PostgreSQL (19)
- PostgreSQL恢复 (7)
- SQL Server (28)
- SQL Server恢复 (9)
- TimesTen (7)
- 达梦数据库 (2)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (37)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (20)
-
最近发表
- PostgreSQL恢复工具—pdu工具介绍
- 近1万个数据文件的恢复case
- 不当使用_allow_resetlogs_corruption参数引起ORA-600 2662错误
- CSSD signal 11 in thread clssnmRcfgMgrThread故障处理
- 使用sid方式直接访问pdb(USE_SID_AS_SERVICE_LISTENER)
- ORA-00069: cannot acquire lock — table locks disabled for xxxx
- ORA-600 [4000] [a]相关bug
- sql server数据库“正在恢复”故障处理
- 如何判断数据文件是否处于begin backup状态
- CDM备份缺少归档打开数据库报ORA-600 kcbzib_kcrsds_1故障处理
- ORA-07445: exception encountered: core dump [expgod()+43] [IN_PAGE_ERROR]
- 2025年第一起ORA-600 16703故障恢复
- _gc_undo_affinity=FALSE触发ORA-01558
- public授权语句
- 中文环境显示AR8MSWIN1256(阿拉伯语字符集)
- 处理 Oracle 块损坏
- Oracle各种类型坏块说明和处理
- fio测试io,导致磁盘文件系统损坏故障恢复
- ORA-742 写丢失常见bug记录
- Oracle 19c 202501补丁(RUs+OJVM)-19.26
分类目录归档:MySQL
基于innobackupex的mysql备份脚本
#! /bin/bash #数据库相关信息 dbuser=root dbpasswd=password mycnf=/etc/mysql/my.cnf #如果bin-log没有指定路径 dir_bin=/opt/mysql/mysqldata/mysqllog #数据库备份的路径 install_dir=/opt/MySqlBackUp data_dir=$install_dir/data temp_dir=$install_dir/temp log_dir=$install_dir/logs bin_dir=$install_dir/bin #接受邮箱 mail=chengfei@srt.com.cn #备份文件名、日志名、备份日志 sj=`date +\%Y``date +\%m``date +\%d``date +\%H``date +\%M``date +\%S` datafile=$sj"_data.tar.gz" log=$sj".log" binlogfile=$sj"_bin.tar.gz" #使用mysqldump备份 #是否启动dump功能(0表示不启用,1表示启用) dump_flag=1 #需要dump出来的数据库名 dumpdb=srtair #dump文件名 dumpfile=$sj"_"$dumpdb".sql.gz" #是否备份至远程 #是否启用ftp传输功能 ftp_flag=0 #ftp IP地址 ftp_ip= #ftp 用户名 ftp_user= #ftp 密码 ftp_passwd= #上传ftp 路径 ftp_dir= #读取my.cnf文件 process_readconfig() { echo "-----------开始读my.cnf文件--`date`-------------" #没有具体路径情况或者有具体路径 bin_log=`cat $mycnf | grep -i '^log-bin' | awk -F = '{print $2}'|sed s/\ //g` #数据文件路径 datadir=`cat $mycnf | grep -i '^datadir' | awk -F = '{print $2}'|sed s/\ //g` #需要判断是否有/,然后决定是否是全路径 #basedir路径 basedir=`cat $mycnf | grep -i '^basedir' | awk -F = '{print $2}'|sed s/\ //g` } #日志处理 process_binlog() { echo "……………………………开始备份日志文件--`date`………………………………">>"$log_dir/$log" echo "……………………………开始备份日志文件--`date`………………………………" echo "需要备份二进制日志列表……">>"$log_dir/$log" ls -tl "$bin_log."[0-9]* >>"$log_dir/$log" echo "开始备份二进制日志文件……"`date`>>"$log_dir/$log" tar czvfP "$data_dir/$binlogfile" "$bin_log".[0-9]* echo "结束备份二进制日志文件……"`date`>>"$log_dir/$log" #删除一天以前的日志文件 echo "删除过期二进制日志文件……"`date`>>"$log_dir/$log" echo "删除过期二进制日志列表……">>"$log_dir/$log" find $dir_bin -type f -mtime +1>>"$log_dir/$log" find $dir_bin -type f -mtime +1 -exec rm -f {} \; echo "删除过期二进制日志文件结束……"`date`>>"$log_dir/$log" echo "…………………………备份日志文件结束--`date`……………………………………">>"$log_dir/$log" echo "…………………………备份日志文件结束--`date`……………………………………" } #数据备份 process_backup() { process_readconfig #备份数据库 echo "……………………………开始备份数据文件--`date`………………………………" echo "……………………………开始备份数据文件--`date`………………………………">>"$log_dir/$log" source /root/.bash_profile $bin_dir/innobackupex --user="$dbuser" --password="$dbpasswd" --defaults-file="$mycnf" --stream=tar "$temp_dir" 2>"$temp_dir/$sj"_tmp.log | gzip>"$data_dir/$datafile" echo "……………………………备份数据文件结束--`date`………………………………">>"$log_dir/$log" echo "……………………………备份数据文件结束--`date`………………………………" cat "$temp_dir/$sj"_tmp.log>>"$log_dir/$log" #删除7天以前备份数据和信息 echo "清理7天前备份数据与相关信息……"`date`>>"$log_dir/$log" find $data_dir -type f -mtime +7>>"$log_dir/$log" find $data_dir -type f -mtime +7 -exec rm -f {} \; #mysqldump操作 if [ "$dump_flag" == 1 ]; then echo "……………… mysqldump操作开始--`date`……………" echo "……………… mysqldump操作开始--`date`………">>"$log_dir/$log" exp_sql echo "……………… mysqldump操作结束--`date`…………">>"$log_dir/$log" echo "……………… mysqldump操作结束--`date`……………………………" fi #登录mysql,切换日志 $basedir/bin/mysql -u$dbuser -p$dbpasswd<<XFF flush logs; exit XFF #备份日志文件 process_binlog #ftp(没有写是否上传失败,成功) if [ "$ftp_flag" == 1 ]; then echo "……………… ftp操作开始--`date`……………" echo "……………… ftp操作开始--`date`…………">>"$log_dir/$log" exec_ftp echo "……………… ftp操作结束--`date`…………">>"$log_dir/$log" echo "……………… ftp操作结束--`date`……………………………" fi #发送邮件 process_send } process_send() { #查找错误 grep "Error" "$temp_dir/$sj"_tmp.log > "$temp_dir/$sj".err IP=`/sbin/ifconfig ${eth} | grep 'inet addr:'| awk '{print $2}' | awk -F : '{print $2}'` IP=`echo $IP|awk '{print $1}'` echo `grep "innobackupex: completed OK\!" "$temp_dir/$sj"_tmp.log | awk -F : '{print $4}'|sed s/\ //g`>"$temp_dir/$sj".good GOOD_COUNT=`cat "$temp_dir/$sj".good |wc -l` ERROR_COUNT=`cat "$temp_dir/$sj".err |wc -l` if [ "$ERROR_COUNT" == 0 -a "$GOOD_COUNT" == 1 ]; then echo "`date`-----MySql备份成功-----">>"$log_dir"/result.log echo "-----------------------------------">>"$log_dir"/result.log echo "……………………………开始发送邮件--`date`………………………………" echo "……………………………开始发送邮件--`date`………………………………">>"$log_dir/$log" echo "MySql_Backup_Succeed" | mutt -s "$IP"_MySql_Backup_Succeed -a "$log_dir/$log" ${mail} else echo "`date`-----MySql备份失败,请检查$temp_dir"/"$sj"_tmp.log>>"$log_dir"/result.log echo "-----------------------------------">>"$log_dir"/result.log echo "……………………………开始发送邮件--`date`………………………………" echo "……………………………开始发送邮件--`date`……………………………">>"$log_dir/$log" cat "$temp_dir/$sj".err | mutt -s "$IP"_MySql_Backup_Fail -a "$temp_dir/$sj"_tmp.log ${mail} fi #删除7天前的日志文件 find $temp_dir -type f -mtime +7 -exec rm -f {} \; echo "……………………………发送邮件结束--`date`………………………………">>"$log_dir/$log" echo "……………………………发送邮件结束--`date`………………………………" } #导出sql语句 exp_sql() { mysqldump -u "$dbuser" -p"$dbpasswd" --single-transaction --allow-keywords --add-locks --add-drop-table -F -q "$dumpdb" |gzip 1>"$data_dir/$dumpfile" } #ftp操作 exec_ftp() { echo "#!/bin/bash">"$temp_dir/$sj"_ftp.sh echo "ftp -n $ftp_ip <<XFF">>"$temp_dir/$sj"_ftp.sh echo "user $ftp_user $ftp_passwd">>"$temp_dir/$sj"_ftp.sh echo "bin">>"$temp_dir/$sj"_ftp.sh echo "cd $ftp_dir">>"$temp_dir/$sj"_ftp.sh echo "lcd $data_dir">>"$temp_dir/$sj"_ftp.sh echo "put $datafile">>"$temp_dir/$sj"_ftp.sh echo "put $dumpfile">>"$temp_dir/$sj"_ftp.sh echo "put $binlogfile">>"$temp_dir/$sj"_ftp.sh echo "lcd $log_dir">>"$temp_dir/$sj"_ftp.sh echo "put $log">>"$temp_dir/$sj"_ftp.sh echo "close">>"$temp_dir/$sj"_ftp.sh echo "bye" >>"$temp_dir/$sj"_ftp.sh echo "XFF">>"$temp_dir/$sj"_ftp.sh chmod 777 "$temp_dir/$sj"_ftp.sh sh "$temp_dir/$sj"_ftp.sh } #执行备份 process_backup
mysql_backup.sh程序安装说明
1、安装mysqlbackup程序
上传mysqlbackup到服务器/tmp目录
cd /tmp
unzip mysqlbackup.zip
cp /tmp/mysqlbackup/* /opt/mysql/product/5.1/bin
mkdir -p /opt/MySqlBackUp/bin
mkdir -p /opt/MySqlBackUp/data
mkdir -p /opt/MySqlBackUp/logs
mkdir -p /opt/MySqlBackUp/temp
ln -s /opt/mysql/product/5.1/bin/innobackupex /opt/MySqlBackUp/bin/innobackupex
对innobackupex进行授权
cd /opt/mysql/product/5.1/bin/
chmod +x innobackupex*
chmod +x xtrabackup*
chmod +x tar4ibd
cp /tmp/mysqlbackup/mysql_backup.sh /opt/MySqlBackUp/bin/
chmod 775 /opt/MySqlBackUp/bin/mysql_backup.sh
2、修改mysql_backup.sh中的相关数据
dbuser
dbpasswd
mail
dumpdb
3、配置mysql环境变量到root中
export MYSQL_BASE=/opt/mysql
export BASEDIR=$MYSQL_BASE/product/5.1
export DATADIR=$MYSQL_BASE/mysqldata
export LD_LIBRARY_PATH=$BASEDIR/lib:/lib:/usr/lib:/usr/local/lib
export TMPDIR=/tmp
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$BASEDIR/bin:$MYSQL_BASE:$BASEDIR:$LD_LIBRARY_PATH
添加到/root/.bash_profile文件中
4、测试备份
cd /opt/MySqlBackUp/bin
./mysql_backup.sh
5、查看备份是否成功
cat /opt/MySqlBackUp/logs/result.log
如果提示备份成功,则表示程序安装成功,可能不熟到crontab中
6、部署crontab
0 1 * * * (cd /opt/MySqlBackUp/bin;sh ./mysql_backup.sh)
说明:参数配置,均是基于按照mysql安装路径配置
MYSQL修改密码
方法一
(适用于管理员或者有全局权限的用户重设其它用户的密码)
进入命令行模式
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD(“new password”) WHERE user=’name’;
mysql> FLUSH PRIVILEGES;
mysql> QUIT
方法二
(应用同上,只是方法不同)
mysql -u root mysql
mysql> SET PASSWORD FOR name=PASSWORD(‘new password’);
mysql> QUIT
方法三
mysqladmin -u root “old password” “new password”
发表在 MySQL
评论关闭
使用xtrabackup 配置主从服务器
1、备份主机数据
innobackupex –user=root –password=xifenfei –defaults-file=/etc/my.cnf –stream /tmp/mysql 2>/tmp/mysql.log | gzip> /tmp/data/mysql.tar.gz
2、查看/tmp/mysql.log,记录下当前日志位置
innobackupex: MySQL binlog position: filename ‘mysql-bin.000018′, position 107
3、备份文件恢复
scp /tmp/data/mysql.tar.gz root@192.168.1.2:/tmp/
mkdir /tmp/mysql
cd /tmp/mysql
tar izxvf /tmp/mysql.tar.gz
–恢复数据库
innobackupex –apply-log –user=root –password=xifenfei /tmp/mysql
–复制到my.cnf中指定地方
innobackupex –copy-back –user=root –password=xifenfei /tmp/mysql
chmod -R mysql.mysql /var/lib/mysql
4、修改my.cnf文件
主服务器:
server-id=1
innodb_flush_log_at_trx_commit=1
sync-binlog=1
从服务器:
server-id=2
relay-log=/var/lib/mysql/replicate
relay-log-index=/var/lib/mysql/replicate.index
read-only
7、添加复制用户(主数据库上)
GRANT REPLICATION SLAVE ON *.*
TO ‘repl’@’192.168.1.2′ IDENTIFIED BY ‘xifenfei’;
8、配置从数据库
CHANGE MASTER TO
MASTER_HOST=’192.168.1.4′,
MASTER_USER=’repl’,
MASTER_PASSWORD=’xifenfei’,
MASTER_LOG_FILE=’mysql-bin.000018′,
MASTER_LOG_POS=107;
start slave;
9、查看主从是否正常
SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.4
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000022
Read_Master_Log_Pos: 1185
Relay_Log_File: replicate.000007
Relay_Log_Pos: 588
Relay_Master_Log_File: mysql-bin.000022
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1185
Relay_Log_Space: 1627
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: mysql-bin.000022
Position: 1185
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
SHOW PROCESSLIST\G
–从服务器进程
*************************** 2. row ***************************
Id: 22
User: system user
Host:
db: NULL
Command: Connect
Time: 1136
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 23
User: system user
Host:
db: NULL
Command: Connect
Time: 1676370
State: Slave has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
–主服务器进程
*************************** 1. row ***************************
Id: 14
User: repl
Host: 192.168.1.2:34594
db: NULL
Command: Binlog Dump
Time: 1207
State: Master has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
10、管理从服务器
start slave;
reset slave;
stop slave;