天天看點

怎麼恢複MySQL資料庫

雲資料庫 rds是阿裡雲提供的即開即用的關系型資料庫服務,相容了mysql、sql server、postgresql、ppas(高度相容oracle)四種資料庫引擎。在傳統資料庫的基礎上,阿裡雲rds提供了強大豐富的功能進而保證了高可用性、高安全性以及高性能。此外,rds還提供了諸多便利功能提升了rds的易用性。

如今資料對每個使用者來說都是非常寶貴的财産,在使用阿裡雲rds産品過程中,使用者對資料庫誤操作引起的損失可以通過資料恢複功能最大程度地減少。接下來,我們會針對怎麼恢複阿裡雲rds資料庫,進行做如下操作(以下操作以mysql為列,不同引擎的操作方式請參考阿裡雲官方文檔):

<b>一、首先下載下傳備份檔案</b>

怎麼恢複MySQL資料庫
怎麼恢複MySQL資料庫

<b>二、其次,解壓備份檔案到指定目錄</b>

 1.下載下傳 xtrabackup:

 http://www.percona.com/downloads/xtrabackup/xtrabackup-2.0.6/rpm/rhel6/x86_64/percona-xtrabackup-2.0.6-521.rhel6.x86_64.rpm

 2.安裝依賴包:

yum -y install perl perl-devel libaio libaio-devel perl-time-hires perl-dbd-mysql mysql-devel

 3.安裝 xtrabackup:

rpm -ivh percona-xtrabackup-2.0.6-521.rhel6.x86_64.rpm

 4.将hins190855_xtra_20150312120203.tar.gz解壓到指定目錄(不會自動建立子目錄,要先設計好)

 mkdir /home/mysql/mysqldb cd /home/mysql/mysqldb

 tar -izxvf hins190855_xtra_20150312120203.tar.gz

<b>三、接着,恢複資料到一緻的狀态</b>

 1.innobackupex --defaults-file=./backup-my.cnf --apply-log ./

 2.删除此目錄下的mysql,重新生成mysql系統庫進而擁有資料庫的root權限

   rm -rf mysql    (這裡删除mysql目錄是為了以後連接配接資料庫權限)

 3.更新目錄權限

   chown -r mysql:mysql /home/mysql/mysqldb/  (備份檔案所屬目錄)  并檢查檔案所屬為mysql使用者

<b>注意:我們需要配置my.cnf ,如果說你之前linux伺服器就已經有一個執行個體,那麼現在你還要建立一個執行個體(也就是一台多個mysql服務)</b>

/usr/local/lnmp/mysql/bin/mysql_install_db --user=mysql --datadir=/mysql2/

 vi /etc/my.cnf

[client] 

default-character-set = utf8

[mysqld_multi]

mysqld = /usr/local/lnmp/mysql/bin/mysqld_safe

mysqladmin = /usr/local/lnmp/mysql/bin/bin/mysqladmin

user = root

[mysqld1]

port = 3306

socket = /tmp/mysql.sock

datadir = /date/lnmp/mysql

pid-file = /date/lnmp/mysql/mysql1.pid

log-error = /date/lnmp/log1/mysql_error.log

skip-locking

max_connections = 600

event_scheduler=on

server-id = 1

[mysqld2]

port = 3307

socket = /tmp/mysql2.sock

datadir = /mysql2

pid-file = /mysql2/mysql.pid

log-error = /date/lnmp/log1/mysql_error2.log

innodb_data_file_path=ibdata1:200m:autoextend

innodb_log_files_in_group=2

innodb_log_file_size=1048576000      

<b>(注:最後三行很重要,可在/mysql2/mysql-my.cnf中複制過來即可,不然innodb表打不開)</b>

啟動執行個體

/usr/local/lnmp/mysql/bin/mysqld_multi --defaults-file=/etc/my.cnf start 1

/usr/local/lnmp/mysql/bin/mysqld_multi --defaults-file=/etc/my.cnf start 2 

怎麼恢複MySQL資料庫

停止執行個體方法

kill -9 `ps -ef | grep 3307 | grep -v grep | awk '{print $2}' | xargs`

修改mysql資料庫使用者名

mysql -uroot -proot -s /tmp/mysql2.sock

grant all on *.* to root@'localhost' identified by 'password'

4.以上第3步是針對一台多個執行個體,如果就一個執行個體的話就不需要那麼麻煩,直接進行第3步,如下:

vi /etc/my.cnf

/wdzj/lnmp/mysql/my.cnf

[client]

#password       = your_password

port            = 3306

socket          = /wdzj/lnmp/mysql/mysql.sock

 # here follows entries for some specific programs

 # the mysql server

[mysqld]

skip-external-locking

key_buffer_size = 16m

max_allowed_packet = 1m

table_open_cache = 64

sort_buffer_size = 512k

net_buffer_length = 8k

read_buffer_size = 256k

read_rnd_buffer_size = 512k

myisam_sort_buffer_size = 8m

datadir         = /home/mysql/mysqldb

max_connections=1000

innodb_log_file_size=1048576000

<b>四、最後,重新生成root使用者密碼及權限</b>

1. 重置root密碼:

service mysql start

cd /wdzj/lnmp/mysql

./bin/mysqladmin -u root password 'linux'

2. 為root使用者賦權

grant all on *.* to root@'localhost' identified by 'linux'  with grant option;

flush privileges;

 grant all on *.* to root@'%' identified by 'linux'  with grant option;

(建立新使用者及賦權的語句要記得

grant all privileges on test.test to test@localhost identified by 'test' ;) 

<b>參考</b>

<a href="http://www.cnblogs.com/zenghui940/p/4239336.html">mysql rds 資料庫恢複</a>