日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysqldump逻辑备份与恢复

發布時間:2024/9/5 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysqldump逻辑备份与恢复 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文檔結構:

?

mysqldump備份影響性能,可能會把內存里面的熱數據給沖刷掉,5.7后,新增一個參數,innodb_buffer_pool_dump_pct,控制每個innodb_buffer中轉存活躍的使用innodb buffer pages的比例,只有當數據在1s內再次被訪問時,才能放到熱區域內,避免熱數據被刷掉,默認值25%。

?

?

重要的參數說明:

?

--single-transaction

用于保證innodb 備份數據時的一致性,配合RR隔離級別一起使用;當發起事物時,讀取一個事實的快照,直到備份結束時,都不會讀取到本事物開始之前提交的任何數據(這個參數相當重要)

?

--all-databases? (-A)

?備份所有數據庫。

?

--master-data

該參數有1和2,如果等于1 ,就會在備份出來的文件中添加一個change master的語句(后期配置搭建主從架構);如果值等于2,就會在備份出來的文件中添加一個change master語句,并在語句前面添加注釋符號(后期配置搭建主從架構)。

?

--dump-slave

該參數用于從庫端備份數據,在線搭建新的從庫時使用。

該參數也有1,2兩個值,值為1是,也是在備份出來的文件中添加一個change master的語句;值為2時,則會在change master命令前增加注釋信息。

?

--no-create-info(-t)

?

備份過程中,只備份表數據,并不備份表結構。

?

--no-data

備份過程中,只備份表結構,并不備份表數據。

?

--complete-insert

使用完整的insert語句會包含表中的列信息,這么做可以提高插入效率。

?

--databases

備份多個數據庫。

mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --set-gtid-purged=OFF --databases sys test > sys_test.sql

?

--default-character-set

字符集,MYSQL目前默認字符集,要與備份出的表的字符集保持一致。

?

--quick

相當于加 sql_no_query,意味著并不會讀取緩存中的數據。

?

--where=name

按條件備份出想要的數據。

?

備份所有數據庫

/usr/local/mysql5.7/bin/mysqldump --single-transaction -S /tmp/mysql3307.sock --set-gtid-purged=OFF -uroot -pmysql -A >all_20180524.sql

5.7已經開啟了GTID,備份過程中不想帶GTID信息,加上--set-gtid-purged=OFF

恢復全庫的過程

先刪除test 測試庫

?

?

mysql -S /tmp/mysql3307.sock -uroot -pmysql < all_20180524.sql

?

?

查看恢復后的數據庫:

?

?

備份單個數據庫test的過程:

mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF? test > 20180524test.sql

?

?

恢復單庫test的過程:

mysql> show databases;

+--------------------+

| Database?????????? |

+--------------------+

| information_schema |

| mysql????????????? |

| performance_schema |

| sys??????????????? |

| test?????????????? |

+--------------------+

5 rows in set (0.00 sec)

?

mysql> drop database test;

Query OK, 9 rows affected (0.18 sec)

?

mysql> show databases;

+--------------------+

| Database?????????? |

+--------------------+

| information_schema |

| mysql????????????? |

| performance_schema |

| sys??????????????? |

+--------------------+

4 rows in set (0.00 sec)

?

mysql> create database test;

Query OK, 1 row affected (0.00 sec)

?

mysql -S /tmp/mysql3307.sock -uroot -pmysql test < 20180524test.sql

?

?

mysql> use test;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

?

Database changed

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| t????????????? |

| t1???????????? |

| t2???????????? |

| t3???????????? |

| t4???????????? |

| tt???????????? |

| ttt??????????? |

| zs???????????? |

| zs1??????????? |

+----------------+

9 rows in set (0.00 sec)

?

備份單表:

mysql> select TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS from information_schema.TABLES where table_schema='test';

+--------------+------------+------------+--------+------------+

| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | TABLE_ROWS |

+--------------+------------+------------+--------+------------+

| test???????? | t????????? | BASE TABLE | InnoDB |????????? 6 |

| test???????? | t1???????? | BASE TABLE | InnoDB |???? 971290 |

| test???????? | t2???????? | BASE TABLE | InnoDB |????????? 3 |

| test???????? | t3???????? | BASE TABLE | InnoDB |????????? 3 |

| test???????? | t4???????? | BASE TABLE | InnoDB |????????? 3 |

| test???????? | tt???????? | BASE TABLE | InnoDB |????????? 4 |

| test???????? | ttt??????? | BASE TABLE | InnoDB |????????? 2 |

| test???????? | zs???????? | BASE TABLE | InnoDB |????????? 3 |

| test???????? | zs1??????? | BASE TABLE | InnoDB |????????? 4 |

+--------------+------------+------------+--------+------------+

9 rows in set (0.00 sec)

?

?

mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF test t1 >20180524_t1.sql

?

恢復表的過程:

先刪除,在恢復。

?

?

mysql -S /tmp/mysql3307.sock -uroot -pmysql test < 20180524_t1.sql

?

?

注意:

單表恢復的時候,不需要寫表的名字,只需要寫庫的名字。

?

備份test庫t1表的where 條件

mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF test t1 --where='RECEIVETIME >="2018-08-31 00:00:00" and? RECEIVETIME <="2018-10-09 00:00:00"' >/data_returnreport.sql

?

備份test庫t1表的結構

mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF -d test t1 > 20180504t1_meta.sql

?

?

或者

mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF --no-data test t1 > 20180504t1_meta01.sql

?

把-d 換成--no-date

?

備份test庫中t表中數據信息:

mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF -t test t1 >20180524t1_data.sql

?

?

?

從表結構備份和表數據備份中恢復單表

?

?

先恢復表結構,在往里面導數據

?

?

查看表結構:

?

?

恢復數據:

mysql -S /tmp/mysql3307.sock -uroot -pmysql test <20180524t1_data.sql

?

?

備份test庫指定條件數據

?

mysqldump -S /tmp/mysql3307.sock -uroot -pmysql --single-transaction --set-gtid-purged=OFF test t1 --where="id>45000" >20180524_t_part.sql

?

?

注意:

where 后面建議為雙引號,以防止不識別條件。

?

查看備份文件:

?

?

轉載于:https://www.cnblogs.com/hmwh/p/9083399.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Mysqldump逻辑备份与恢复的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。