A、邏輯備份和恢復(mysqldump)
1、邏輯備份數據文件
1、備份數據庫中特定的表
a、對於MyISAM表
#mysqldump -uroot -p --master-data=2 --lock-tables db_name table_name>/path_name/db_table.sql
b、對於InnoDB表
#mysqldump -uroot -p --master-data=2 --single-transaction db_name table_name>/path_name/db_table.sql
2、備份數據庫中所有的表
#mysqldump -uroot -p --master-data=2 --lock-all-tables db_name>/path_name/db_name.sql
3、備份整個mysql數據庫所有的表
#mysqldump -uroot -p --master-data=2 --lock-all-tables --all-databases>/path_name/all.sql
2、邏輯備份當前二進制日誌文件
# mysqlbinlog -uroot -p myrhcs2-bin.000002
CHANGE MASTER TO MASTER_LOG_FILE='myrhcs2-bin.000002', MASTER_LOG_POS=15846;
mysql> flush logs;
# mysqlbinlog -uroot -p myrhcs2-bin.000002 --start-position 15846 --stop-position 16532 >>/backup/bin2.sql
3、恢復邏輯備份的數據
mysql> source /backup/test.sql
4、恢復二進制日誌文件數據
1、通過二進制日誌文件直接恢復
# mysqlbinlog myrhcs2-bin.000002 --start-position 15846 --stop-position 16532|mysql -uroot -p
2、通過備份的二進制sql文本恢復
mysql> source /backup/bin.sql
5、SELECT 和INTO OUTFILE 導出數據
mysql>select name,countrycode into outfile '/backup/City.txt' from City where CountryCode='CHN';
6、LOAD DATA INFILE 導入數據
mysql> load data infile '/backup/City.txt' into table test1;
B、物理備份(Xtrabackup2.3.4版本)
1、如果要使用一個最小權限的用戶進行備份,則可基於如下命令創建此類用戶:
mysql> CREATE USER ’bkpuser’@’localhost’ IDENTIFIED BY ’s3cret’;
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ’bkpuser’;
mysql>GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ’bkpuser’@’localhost’;
mysql> FLUSH PRIVILEGES;
2、備份數據文件
# innobackupex --user=root --password=mysql /backup/full
3、對備份中的數據提交或回滾操作
#innobackupex --user=root --password=mysql --apply-log --raed-only /backup/full/2016-06-25_20-23-15/
4、恢復數據庫
#innobackupex --user=root --password=mysql --copy-back /backup/full/2016-06-25_20-23-15
5、增量備份數據庫
a、第一次增量備份
#innobackupex --user=root --password=mysql --incremental /backup/inc1 --incremental-basedir=/backup/full/2016-06-25_20-23-15
b、第二次增量備份
#innobackupex --user=root --password=mysql --incremental /backup/inc2 --incremental-basedir=/backup/full/2016-06-25_20-23-15
6、對增量數據提交或者回滾並且合併增量與全備數據
#innobackupex --user=root --password=mysql --apply-log --redo-only /backup/full/2016-06-25_20-23-15 --incremental-dir=/backup/inc1/2016-06-23_19-49-25
#innobackupex --user=root --password=mysql --apply-log --redo-only /backup/full/2016-06-25_20-23-15 --incremental-dir=/backup/inc2/2016-06-23_20-08-51
7、對增量後的數據庫進行恢復(注意:只能對最新--apply-log-only的增量狀態進行恢復)
#innobackupex --user=root --password=mysql --copy-back /backup/full/2016-06-25_20-23-15
#innobackupex --user=root --password=mysql --copy-back /backup/full/2016-06-25_20-23-15
8、對物理備份的數據庫的二進制文件進行備份恢復
從備份目錄中xtrabackup_info文件獲取到binlog和pos位置
binlog_pos = filename 'mysql-bin.000002', position '7082993'
#mysqlbinlog --skip-gtids /mysql/log/mysql-bin.000002 --start-position 7082993 /mysql/log/mysql-bin.000004 --stop-position 9082993 >>/backup/bin2.sql