Mysql資料備份演練 Xtrabackup

2022-09-13 10:36:09 字數 2811 閱讀 5792

需求:公司內部的資料庫使用版本是mysql5.6.42,但是無任何備份,擔心資料庫奔潰或者磁碟損壞導致資料無法恢復,影響公司的業務,因此把mysql5.6綠色遷移到另外一台父親在另一台測試伺服器,並且建立測試資料庫,使用xtrabackup進行備份。

mysql資料庫操作:

遷移資料庫:scp -rp -p5012 root@ip:/usr/local/mysql /usr/local/

建立mysql使用者:groupadd -g 1000 mysql

useradd -u 1000 -g mysql -s /sbin/nologin mysql

***根據配置檔案建立相對應的資料儲存目錄,主要修改檔案的所有者

因為兩個啟動了兩個資料庫例項在mysql5.6.14版本中,mysql_install_db命令讀取my.cnf配置檔案時,只會讀取[mysqld]配置模組,它不會讀取多例項中配置的[mysqldnnn],解決方案為修改my.cnf,把[mysqldnnn]依次修改為[mysqld],每次初始化乙個資料庫。

[root@localhost mysql]# pwd

/usr/local/mysql

[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf 

啟動mysql例項:

/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/home/mysq_data --plugin-dir=/usr/local/mysql/lib/plugin --user=root --log-error=/var/log/mysqld.log --pid-file=/home/mysql_data/db.pid --socket=/homemysql_data/mysql.sock --port=3306

設定初始化密碼:[root@localhost mysql]# ./bin/mysqladmin -u root password '11111'

建立使用者,實現可遠端登入:create user 'li'@'%' identified by '123456';

grant all privileges on *.* to 'li'@'%';

flush privileges;

xtrabackup演練:

設定percona倉庫:[root@localhost home]# yum -y install

安裝xtracbakup:[root@localhost home]# yum install percona-xtrabackup -y

修改my.cnf檔案,新增一下配置:

[xtrabackup]

user=li

password=123456

建立儲存資料庫備份的目錄:

[root@localhost xtra]# pwd

/data/xtra

資料庫備份命令:[root@localhost xtra]# innobackupex -uroot /data/xtra/

##看到innobackupex: completed ok!代表成功,備份成功後產生三個與xtrabackup的檔案( xtrabackup_info,xtrabackup_checkpoints,xtrabackup_logfile):

[root@localhost 2020-07-16_09-35-37]# cat xtrabackup_checkpoints 

backup_type = full-backuped      ###完全備份      

from_lsn = 0

to_lsn = 2979610

last_lsn = 2979610

compact = 0

recover_binlog_info = 0

##一般情況先,完全備份後,資料尚不能用於回覆操作,因為備份的資料可能包含尚未提交的事務或者事務已經提交但是資料為同步到資料檔案中。因此資料檔案可能出現處理不一致狀態,「準備」主要是通過回滾未提交的事務及同步已經提交的事務至資料檔案

再次檢視狀態:

[root@localhost 2020-07-16_09-35-37]# cat xtrabackup_checkpoints 

backup_type = full-prepared           ###預備好的狀態,可直接恢復

##進行向資料庫中插入幾條資料——mysql> insert into new values(7);

[root@localhost 2020-07-16_17-26-45]# innobackupex --incremental/data/xtra/ --incremental-basedir/data/xtra/2020-07-16_17-05-27/

##模擬資料庫崩潰(直接在資料庫執行狀態中,rm -rf 所有資料目錄下的檔案,這樣只能通過kill -9 pid殺死mysql程序),停止資料庫服務後,直接通過命令恢復資料庫:

預處理完全備份:

合併增量備份:

恢復資料庫:

innobackupex --copy-back /data/xtra/2020-07-16_17-05-27/

恢復完成後檢查檔案許可權即檔案所有者的屬性,確保mysql的啟動者能夠擁有足夠大的許可權,最後啟動mysql,即能恢復資料庫:

[root@localhost 2020-07-16_09-35-37]# /usr/local/mysql/support-files/mysql.server start

mysql 備份源資料 mysql 資料備份與還源

一 資料備份 1 使用mysqldump命令備份 mysqldump命令將資料庫中的資料備份成乙個文字檔案。表的結構和表中的資料將儲存在生成的文字檔案中。mysqldump命令的工作原理很簡單。它先查出需要備份的表的結構,再在文字檔案中生成乙個create語句。然後,將表中的所有記錄轉換成一條ins...

mysql備份資料 mysql 備份資料

1 備份命令 格式 mysqldump h主機名 p埠 u使用者名稱 p密碼 dbname tbname 檔名.sql 如果tbname不填,就是單個資料據的所有表 例如 mysqldump h 192.168.1.100 p 3306 uroot ppassword database cmdb d...

mysql資料備份

mysql教程資料庫教程的備份 匯入 匯出 資料匯入 資料匯出 資料庫和資料表的匯入匯出我們用的是mysqldump 來操作,資料的匯入匯出我們用load data infile 與 load data outfile操作 匯出資料庫方法 引數 mysqldump u使用者名稱 p密碼 資料庫 儲存...