須安裝Xtrabackup工具 註:生產環境中還原恢復操作不可直接使用備份源文件,須單獨拷貝一份做恢復使用 一、完全備份及還原 1、備份資料庫 2、破壞資料庫 3、恢複數據庫 二、完全、增量備份及還原 1、完全備份資料庫 2、對資料庫修改並做增量備份 3、破壞資料庫 4、恢複數據庫 三、單表導出和導 ...
須安裝Xtrabackup工具
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm yum install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
註:生產環境中還原恢復操作不可直接使用備份源文件,須單獨拷貝一份做恢復使用
一、完全備份及還原
1、備份資料庫
innobackupex --user=root --password=li123456 /backups
2、破壞資料庫
rm -rf /app/mysqldb/*
3、恢複數據庫
systemctl stop mysqld #停止服務
innobackupex --apply-log /backups/2018-03-05_18-11-28/ #對備份進行整理
innobackupex --copy-back /backups/2018-03-05_18-11-28/ #還原資料庫,還原前需確認資料庫目錄為空
chown -R mysql.mysql /app/mysqldb/ #修複屬主屬組
systemctl start mysqld #啟動服務
二、完全、增量備份及還原
1、完全備份資料庫
innobackupex --user=root --password=li123456 /backups/
2、對資料庫修改並做增量備份
MariaDB [(none)]> create database ceshi;
mkdir /backups/inc1 #創建存儲第一次增量備份的目錄,便於管理 innobackupex --user=root --password=li123456 --incremental /backups/inc1 --incremental-basedir=/backups/2018-03-07_15-23-30
MariaDB [(none)]> drop database test ;
mkdir /backups/inc2 #創建存儲第二次增量備份的目錄
innobackupex --user=root --password=li123456 --incremental /backups/inc2 --incremental-basedir=/backups/inc1/2018-03-07_15-42-56
3、破壞資料庫
rm -rf /app/mysqldb/*
4、恢複數據庫
systemctl stop mysqld #停止服務
innobackupex --apply-log --redo-only /backups/2018-03-07_15-23-30/ #對完全備份進行整理
innobackupex --apply-log --redo-only /backups/2018-03-07_15-23-30/ --incremental-dir=/backups/inc1/2018-03-07_15-42-56 #對第一次增量備份進行整理
innobackupex --apply-log --redo-only /backups/2018-03-07_15-23-30/ --incremental-dir=/backups/inc2/2018-03-07_16-00-17 #對第二次增量備份進行整理
innobackupex --copy-back /backups/2018-03-07_15-23-30/ #還原資料庫,還原前需確認資料庫目錄為空
chown -R mysql.mysql /app/mysqldb/ #修複屬主屬組
systemctl start mysqld #啟動服務
三、單表導出和導入
註:需MySQL 5.6及以上版本才支持此功能
1、單表備份
innobackupex --user=root --password=li123456 --include='reset_gq.wp_users' /backups
2、導出表結構
mysql -uroot -p -e 'show create table reset_gq.wp_users'
3、刪除表
mysql -uroot -p -e 'drop table reset_gq.wp_users'
4、單表恢復
innobackupex --apply-log --export /backups/2018-03-09_12-26-33/
創建表結構
MariaDB [reset_gq]> CREATE TABLE `wp_users` (
-> `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
-> `user_login` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_pass` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_nicename` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_url` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
-> `user_activation_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> `user_status` int(11) NOT NULL DEFAULT 0,
-> `display_name` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
-> PRIMARY KEY (`ID`),
-> KEY `user_login_key` (`user_login`),
-> KEY `user_nicename` (`user_nicename`),
-> KEY `user_email` (`user_email`)
-> ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
MariaDB [reset_gq]> alter table wp_users discard tablespace; #刪除wp_users表空間
cp /backups/2018-03-09_12-26-33/reset_gq/wp_users.{cfg,exp,ibd} /app/mysqldb/reset_gq/
chown -R mysql.mysql /app/mysqldb/reset_gq/
MariaDB [reset_gq]> alter table wp_users import tablespace; #導入表空間