溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

應該怎么樣備份mysql

發布時間:2020-05-19 11:21:27 來源:網絡 閱讀:246 作者:三月 欄目:數據庫

本文主要給大家介紹應該怎么樣備份mysql,文章內容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下應該怎么樣備份mysql吧。                                                          

備份的目的:
    實現災難恢復:誤操作、硬件故障、軟件故障、自然災害、******
	
注意的要點:
    1、能夠容忍丟失多少數據
    2、恢復數據所用的時間
    3、備份需要的時間
    4、是否對業務有影響
    5、備份時云服務器負載
	
	
備份類型
    完全備份:備份整個數據庫的數據
    部分備份:備份指定的一部分數據
    增量備份:備份上一次備份后增加的數據
    差異備份:備份從最后一次完全備份后起發生改變的數據
    熱備份:讀寫操作均可以進行
    溫備份:只讀
    冷備份:不可寫,不可讀
    邏輯備份:從數據庫中導出數據,與存儲引擎無關
    物理備份:直接復制數據文件
	

備份需要:
    數據
    二進制日志,事務日志
    配置文件
	
	
備份的設計方案:
    數據:完全+增量、完全+部分
    備份手段:邏輯或物理


常用的備份工具:
    mysqldump:mysql自帶的備份工具,邏輯備份、完全備份、部分備份、溫備
    lvm2快照:幾乎熱備,需要借助cp,tar等工具完成,lvm2只負責生成快照
    xtrabackup:支持對InnoDB的熱備份(物理備份
    tar,cp:冷備份


    mysqldump工具使用:邏輯備份工具,在數據小于1G時可以使用,數據大于1G之后則不建議使用
	
	mysqldump [OPTIONS] database [tables]	#不會自動創建數據庫
	mysqldump [OPTIONS] --databases DB1 [DB2 ...]	#備份指定數據庫,會自動創建數據庫
	mysqldump [OPTIONS] --all-databases 	#備份所有數據庫,會自動創建數據庫
	    常用選項:
		-u			#用戶
		-p			#密碼
		--flush-logs 		#執行二進制日志文件滾動
		--single-transaction	#對InnoDB存儲引擎進行熱備份(只有InnoDB支持)
		--master-data=2	   #在數據文件中,記錄備份那一刻二進制日志文件的位置,
				    并注釋主要用于參考,多用于進行基于時間點還原
	        --lock-all-tables    #在執行備份時鎖定所有庫的所有表(二選一,必須)
		--lock-tables	    #對單個數據庫在備份時鎖定所有表(二選一,必須)
        例:mysqldump -uroot -p123.com --databases --lock-tables --flush-logs 
            --master-data=2 test > /tmp/mysql.back.`date "+%F__%R"`

	
	
    LVM2快照實現數據幾乎熱備
        實現條件:mysql數據存儲在LVM邏輯卷中,需要有足夠的空間做快照
	備份策略:    
	    1、創建全局鎖
	        mysql> FLUSH TABLES WITH READ LOCK;
	    2、記錄二進制日志文件及事件位置
	        mysql -uroot -p123.com -e 'FLUSH LOGS;'		#進行日志滾動
	        mysql -uroot -p123.com -e 'SHOW MASTER STATUS;'>/tmp/test.`date +%F`
	        	  #記錄二進制日志位置
	    3、創建LVM快照
	        lvcreate -L 1GB -s -n test_snap /dev/vg_test/lv_test
	                -L 1G 		#快照大小,一般和數據文件差不多
	                -s    		#表示創建快照 
		        -n test_snap 	#快照名
			/dev/vg_test/lv_test 	#要創建快照的邏輯卷
	    4、釋放全局鎖
	        mysql> UNLOCK TABLES;
		    
	    5、掛載快照卷
	        mount /dev/vg_test/test_snap /mnt
		    
	    6、備份數據并刪除快照卷
	        cp -a /mnt/date/mysql /tmp		#復制數據文件
	        umount /mnt				#卸載快照卷
	        lvremove /dev/vg_test/test_snap 	#刪除快照
		    
	    7、制定好備份計劃,每隔一段時間對二進制文件進行備份
	        每隔一段時間對mysql的二進制文件進行備份,以實現將來的基于時間點還原數據
	            例:cp -p /data/mysql-bin.000007 /tmp/mysql_7.sql	#備份二進制日志
				
	8、還原
            還原時只需要將數據文件復制到mysql的數據目錄中,在使用二進制日志對數據進行時間點還原
		例:cp -a /tmp/mysql /data/mysql		#還原數據
		    mysql> source /tmp/mysql_7.sql;		#進行基于時間點的還原


	xtrabackup實現mysql熱備:
	    注意:xtrabackup只能對InnoDB實現熱備和增量備份
	    https://www.percona.com/downloads/XtraBackup/LATEST/	#下載地址
	    安裝:
		1、配置好epel源
		2、yum -y localinstall percona-xtrabackup-2.3.2-1.el6.x86_64.rpm    #安裝

		
	    備份工具:
		xtrabackup包含兩個主要的工具,即xtrabackup和innobackupex
		innobackupex:是xtrabackup重封裝的Perl腳本,能對innodb和myisam備份,
		                對myisam不能實現熱備和增量備份
		xtrabackup:xtrabackup只能備份innodb和xtradb兩種引擎的表,
		                而不能備份myisam引擎的表
			
			
		innobackupex基本使用
		    常用參數:
		        --help					#查看幫助信息
			--backup				#進行備份操作,可省,默認為執行備份操作
			--apply-log				#恢復前必須的整理工作
			--defaults-file			#指定配置文件路徑,可省,會自動到數據庫中讀取
			--redo-only 			#在做整理操作時,未提交的數據不進行回滾,做增量備份恢復時必須加的選項
			--copy-back				#執行還原操作
			--incremental			#執行增量備份
			--user=name				#指定用戶名,默認為root
			--host=name				#指定主機名,默認為host
			--port=					#指定端口,默認為3306
			--password=name			#指定密碼,默認為空
			--databases='db1 bd2' 	#備份指定的數據庫,
			--defaults-file=		#指定配置文件,可省
			--no-timestamp=			#自定義備份目錄名
			incremental-basedir=	#基于那一次備份做增量備份
				
		
		
		
    使用實例:
	innodb_file_per_table=1	    #在mysql配置文件中添加,表示每個表使用單獨的表空間文件
	datadir=/usr/local/mysql/data	#在mysql配置文件中添加,表示指定數據文件位置	
	mkdir /backups			#創建備份文件存放目錄
			
    全庫完全備份:
	innobackupex --user=root --password=123.com /backups/
		/backups/			#備份文件存放目錄
		注意:結尾出現completed OK!則為成功,否則則為錯誤
		
		
		
    還原一個完全備份:
	innobackupex --apply-log /backups/2017-02-20_04-40-44/	#對備份文件進行整理
	innobackupex --copy-back /backups/2017-02-20_04-40-44/	#還原數據
	chown mysql:mysql /usr/local/mysql/*			#修改權限
				
		
		
    增量備份:
	innobackupex --user=root --password=123.com  --incremental /backups/ 
	            --incremental-basedir=/backups/2017-02-20_04-40-44/	    
            	/backups/		#增量備份存儲位置
		--incremental-basedir	#指定基于哪一個備份文件進行增量備份,通常都是上一個增量備份
		
		
    增量備份還原:
        innobackupex --apply-log  --redo-only /backups/2017-02-20_05-01-49/	#整理完全備份
        innobackupex --apply-log  --redo-only /backups/2017-02-20_05-01-49
               --incremental-dir=/backups/2017-02-20_05-04-34	#整理第一個增量備份
        innobackupex --copy-back /backups/2017-02-20_05-01-49/	#還原數據
				
		
    部分備份:    
        innobackupex --databases="testdb mysql" /backups/ --user=root --password=123.com
        #備份testdb和mysql數據庫,不管備份那個數據庫都應該備份mysql數據庫
				
    還原部分備份:
        innobackupex --apply-log /backups/2017-02-20_05-24-07/		#準備
        innobackupex --copy-back /backups/2017-02-20_05-24-07/		#還原
        chown mysql:mysql /usr/local/mysql/*				#修改權限				
				

	

看完以上關于應該怎么樣備份mysql,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業知識信息 ,可以持續關注我們的行業資訊欄目的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女