Mysql基礎九之複製 備份與還原

2022-09-04 02:39:11 字數 4000 閱讀 3299

mysql複製表結構和內容到另一張表中的sql語句

1.複製表結構及資料到新錶

複製****如下:

create table 新錶

select * from 舊表

2.只複製表結構到新錶

複製****如下:

create table 新錶

select * from 舊表 where 1=2

即:讓where條件不成立.

方法二:(低版本的mysql不支援,mysql4.0.25 不支援,mysql5已經支援了)

複製****如下:

create table 新錶

like 舊表

3.複製舊表的資料到新錶(假設兩個表結構一樣)

複製****如下:

insert into 新錶

select * from 舊表

4.複製舊表的資料到新錶(假設兩個表結構不一樣)

複製****如下:

insert into 新錶(欄位1,欄位2,…….)

select 欄位1,欄位2,…… from 舊表

mysql備份與還原

一、備份常用操作基本命令

1、備份命令mysqldump格式

格式:mysqldump -h主機名 -p埠 -u使用者名稱 -p密碼 –database 資料庫名 > 檔名.sql

2、備份mysql資料庫為帶刪除表的格式

備份mysql資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。

mysqldump --add-drop-table -uusername -ppassword -database databasename > backupfile.sql

3、直接將mysql資料庫壓縮備份

mysqldump -hhostname -uusername -ppassword -database databasename | gzip > backupfile.sql.gz

4、備份mysql資料庫某個(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

5、同時備份多個mysql資料庫

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

6、僅備份份資料庫結構

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

7、備份伺服器上所有資料庫

mysqldump –all-databases > allbackupfile.sql

8、還原mysql資料庫的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

9、還原壓縮的mysql資料庫

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

10、將資料庫轉移到新伺服器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -c databasename

11、--master-data 和--single-transaction

在mysqldump中使用--master-data=2,會記錄binlog檔案和position的資訊 。--single-transaction會將隔離級別設定成repeatable-commited

12、匯入資料庫

常用source命令,用use進入到某個資料庫,mysql>source d:\test.sql,後面的引數為指令碼檔案。

13、檢視binlog日誌

檢視binlog日誌可用用命令 mysqlbinlog binlog日誌名稱|more

14、general_log

general_log記錄資料庫的任何操作,檢視general_log 的狀態和位置可以用命令show variables like "general_log%" ,開啟general_log可以用命令set global general_log=on

二、增量備份

小量的資料庫可以每天進行完整備份,因為這也用不了多少時間,但當資料庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份。增量備份的原理就是使用了mysql的binlog志。

1、首先做一次完整備份:

mysqldump -h10.6.208.183 -utest2 -p123 -p3310 --single-transaction --master-data=2 test>test.sql這時候就會得到乙個全備檔案test.sql

在sql檔案中我們會看到:

-- change master to master_log_file='bin-log.000002', master_log_pos=107;是指備份後所有的更改將會儲存到bin-log.000002二進位制檔案中。

2、在test庫的t_student表中增加兩條記錄,然後執行flush logs命令。這時將會產生乙個新的二進位制日誌檔案bin-log.000003,bin-log.000002則儲存了全備過後的所有更改,既增加記錄的操作也儲存在了bin-log.00002中。

3、再在test庫中的a表中增加兩條記錄,然後誤刪除t_student表和a表。a中增加記錄的操作和刪除表a和t_student的操作都記錄在bin-log.000003中。

三、恢復

1、首先匯入全備資料

mysql -h10.6.208.183 -utest2 -p123 -p3310 < test.sql,也可以直接在mysql命令列下面用source匯入

2、恢復bin-log.000002

mysqlbinlog bin-log.000002 |mysql -h10.6.208.183 -utest2 -p123 -p3310

3、恢復部分 bin-log.000003

在general_log中找到誤刪除的時間點,然後更加對應的時間點到bin-log.000003中找到相應的position點,需要恢復到誤刪除的前面乙個position點。

可以用如下引數來控制binlog的區間

--start-position 開始點 --stop-position 結束點

--start-date 開始時間 --stop-date 結束時間

找到恢復點後,既可以開始恢復。

mysqlbinlog mysql-bin.000003 --stop-position=208 |mysql -h10.6.208.183 -utest2 -p123 -p3310

mysql 如何複製 備份表資料

大家需要記住生產上運算元據一定需要小心小心再小心。所以當你需要更新生產上表資料的時候,需要先備份表資料。驗證沒有問題後再刪掉備份。直接使用如下sql create table new table name select field1,field2.from old table name 有時候運維會...

Mysql資料庫備份與恢復(一) 邏輯備份與還原

邏輯備份實際上就是把資料匯出為sql語句,優點是對於任何儲存引擎 myisam或innodb 都可用。一 備份 mysqldump options db name options 備份test資料庫中的documents 到指定的檔案d documentss.sql d xampp mysql bi...

mysql學習之九 mysql備份與恢復

mysql使用最為廣泛的備份工具是mysqldump。使用mysqldump進行基本的資料庫備份恢復。備份乙個資料庫 mysqldump u root p stefan stefan.sql從乙個備份檔案恢復乙個資料庫 mysql u root p stefan stefan.sql從乙個mysql...