一、備份單個表
語法:mysqldump -u 用戶名 -p 數據庫名 表名 >備份的文件名
mysqldump -u root -pdubin oldboy test >/opt/table.sql
執行結果:
[root@localhost ~]# mysqldump -u root -pdubin oldboy test >/opt/table.sql [root@localhost ~]# egrep -v "#|\*|--|^$" /opt/table.sql DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; LOCK TABLES `test` WRITE; INSERT INTO `test` VALUES (1,'oldboy'),(2,'oldgirl'),(3,'inca'),(4,'zuma'),(5,'kaka'); UNLOCK TABLES;
二、備份多個表
語法:mysqldump -u 用戶名 -p 數據庫名 表名1 表名2 >備份的文件名
[root@localhost ~]# mysqldump -u root -pdubin oldboy test student>/opt/table.sql [root@localhost ~]# egrep -v "#|\*|--|^$" /opt/table.sql DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; LOCK TABLES `test` WRITE; INSERT INTO `test` VALUES (1,'oldboy'),(2,'oldgirl'),(3,'inca'),(4,'zuma'),(5,'kaka'); UNLOCK TABLES; DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, `age` tinyint(2) NOT NULL DEFAULT '0', `dept` varchar(16) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uni_inde_name` (`name`), KEY `index_dept` (`dept`(8)), KEY `ind_name_dept` (`name`(8),`dept`(10)) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; LOCK TABLES `student` WRITE; UNLOCK TABLES;
分表備份缺點:文件多,碎。
1、備一個完整全備,再做一個分庫分表備份。
2、腳本批量服務多個SQL文件。
三、備份表結構 -d
[root@localhost ~]# mysqldump -u root -pdubin oldboy test -d >/opt/table.sql [root@localhost ~]# egrep -v "#|\*|--|^$" /opt/table.sql DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
四、備份數據 -t(只導出數據)
[root@localhost ~]# mysqldump -u root -pdubin oldboy test -t --compact INSERT INTO `test` VALUES (1,'oldboy'),(2,'oldgirl'),(3,'inca'),(4,'zuma'),(5,'kaka');
五、刷新binlog參數
-F --master-data [root@localhost ~]# mysqldump -uroot -pdubin --master-data=1 --compact oldboy CHANGE MASTER TO MASTER_LOG_FILE='mysqlbin_oldboy.000002', MASTER_LOG_POS=14729;
記錄當時的文件大小
[root@localhost ~]# mysqlbinlog /application/mysql/data/mysqlbin_oldboy.000001 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #190920 22:12:42 server id 1 end_log_pos 107 Start: binlog v 4, server v 5.5.32-log created 190920 22:12:42 at startup ROLLBACK/*!*/; BINLOG ' Wt6EXQ8BAAAAZwAAAGsAAAAAAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAABa3oRdEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA== '/*!*/; # at 107 #190920 22:13:02 server id 1 end_log_pos 177 Query thread_id=1 exec_time=0 error_code=0 SET TIMESTAMP=1568988782/*!*/; SET @@session.pseudo_thread_id=1/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; SET @@session.sql_mode=0/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C utf8 *//*!*/; SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; BEGIN /*!*/;
--mater-data=2 備份的記錄提示前加注釋,恢復的時候不執行該條語句 [root@localhost ~]# mysqldump -uroot -pdubin --master-data=2 --compact oldboy -- CHANGE MASTER TO MASTER_LOG_FILE='mysqlbin_oldboy.000002', MASTER_LOG_POS=14729;
