當前位置:首頁 » 數據倉庫 » mysql備份多個資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql備份多個資料庫

發布時間: 2022-11-12 06:24:12

① mysql怎麼備份多個的資料庫

這個要用到mysql下的存取過程了,先把下面的那段代碼做為了一個批處理文件,命名為:
mysql_bak.bat
具體的操作步驟如下:

1. 將上面的兩段代碼分別保存為 mysql_bak.bat 並根據注釋修改相關參數
確定好目錄之後,運行 mysql_bak.bat 將計劃任務添加到系統中。
2. Windows Server 2003 / XP 可以通過 開始,控制面板,計劃任務進入計劃任務管理界面;
Windows Vista / 7 可以通過 計算機,右鍵,管理,系統工具,任務計劃程序,任務計劃程序庫,進入計劃任務管理界面。
3. 手動運行該任務,查看備份目錄來確認下備份是否成功。

具體實現在代碼:

@echo off & setlocal ENABLEEXTENSIONS
:: ---------- 配置項 ----------
:: 備份放置的路徑,加 \
set BACKUP_PATH=D:\Backup\
:: 要備份的資料庫名稱,多個用空格分隔
set DATABASES=database1 database2 database3
:: MySQL 用戶名
set USERNAME=root
:: MySQL 密碼
set PASSWORD=123456
:: MySQL Bin 目錄,加 \
:: 如果可以直接使用 mysqlmp(安裝時添加 MySQL Bin 目錄到了環境變數),此處留空即可
set MYSQL=D:\SERVER\MySQL\bin\
:: WinRAR 自帶命令行工具的可執行文件路徑,長文件名注意用 Dos 長文件名書寫方式
set WINRAR=C:\Progra~1\WinRAR\Rar.exe
:: ---------- 以下請勿修改 ----------

set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
:: 如果在 dos 下輸入 time 返回的不是 24 小時制(沒有 0 填充),請自行修改此處
set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%

set DIR=%BACKUP_PATH%%YEAR%\%MONTH%\%DAY%\
set ADDON=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND%
:: create dir
if not exist %DIR% (
mkdir %DIR% 2>nul
)
if not exist %DIR% (
echo Backup path: %DIR% not exists, create dir failed.
goto exit
)
cd /d %DIR%
:: backup
echo Start mp databases...
for %%D in (%DATABASES%) do (
echo Dumping database %%D ...
%MYSQL%mysqlmp -u%USERNAME% -p%PASSWORD% %%D > %%D.%ADDON%.sql 2>nul
:: winrar
if exist %WINRAR% (
%WINRAR% a -k -r -s -m1 -ep1 %%D.%ADDON%.rar %%D.%ADDON%.sql 2>nul
del /F /S /Q %%D.%ADDON%.sql 2>nul
)
)
echo Done

:exit

② 備份資料庫的命令

備份MySQL資料庫的命令mysqlmp -hhostname -uusername -ppassword databasename > backupfile.sql

02
備份MySQL資料庫為帶刪除表的格式備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫.mysqlmp -–add-drop-table -uusername -ppassword databasename > backupfile.sql

03
直接將MySQL資料庫壓縮備份mysqlmp -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz

04
備份MySQL資料庫某個(些)表mysqlmp -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

05
同時備份多個MySQL資料庫mysqlmp -hhostname -uusername -ppassword –databases dbname1 dbname2 dbname3> multibackupfile.sql

06
僅僅備份資料庫結構mysqlmp –no-data –databases dbname1 dbname2 dbname3 > structurebackupfile.sql

07
備份伺服器上所有資料庫mysqlmp –all-databases > allbackupfile.sql

08
還原MySQL資料庫的命令mysql -hhostname -uusername -ppassword databasename < backupfile.sql

09
還原壓縮的MySQL資料庫gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

10
將資料庫轉移到新伺服器mysqlmp -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

③ mysql怎樣利用對所有資料庫進行備份的備份

Mysql資料庫的常用備份方法是使用使用實用程序mysqlmp, 其命令格式如下

# mysqlmp [options] database [tables]

其參數的含義為:

options:代表mysqlmp的選項,通過mysqlmp –help可以查到。

database: 代表將要備份的資料庫

tables: 代表將要備份的表,如果不指定任何錶,則備份整個資料庫。

使用 mysqlmp進行備份非常簡單,如果要備份資料庫」 phpbb_db_backup 」,使用命令:

#mysqlmp –u -p phpbb_db_backup > /usr/backups/mysql/ phpbb_db_backup.2005.5.6

還可以使用gzip命令對備份文件進行壓縮:

#mysqlmp phpbb_db_backup | gzip > /usr/backups/mysql/ phpbb_db_backup.2005.5.6。gz

恢復數據使用命令:

#mysql –u -p phpbb_db_backup </usr/backups/mysql/phpbb_db_backup.2005

④ 怎樣實現MySQL資料庫雙機熱備份

1、MySQL資料庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好MySQL資料庫提供了一種主從備份的機制,其實就是把主資料庫的所有的數據同時寫到備份資料庫中。實現MySQL資料庫的熱備份。
2、要想實現雙機的熱備首先要了解主從資料庫伺服器的版本的需求。要實現熱備MySQL的版本都要高於3.2,還有一個基本的原則就是作為從資料庫的資料庫版本可以高於主伺服器資料庫的版本,但是不可以低於主伺服器的資料庫版本。
3、設置主資料庫伺服器:
a.首先查看主伺服器的版本是否是支持熱備的版本。然後查看my.cnf(類Unix)或者my.ini(Windows)中MySQLd配置塊的配置有沒有log-bin(記錄資料庫更改日誌),因為MySQL的復制機制是基於日誌的復制機制,所以主伺服器一定要支持更改日誌才行。然後設置要寫入日誌的資料庫或者不要寫入日誌的資料庫。這樣只有您感興趣的資料庫的更改才寫入到資料庫的日誌中。
server-id=1 //資料庫的id這個應該默認是1就不用改動 log-bin=log_name //日誌文件的名稱, //這里可以制定日誌到別的目錄 如果沒有設置則默認主機名的一個日誌名稱 binlog-do-db=db_name //記錄日誌的資料庫 binlog-ignore-db=db_name //不記錄日誌的資料庫
以上的如果有多個資料庫用","分割開
然後設置同步資料庫的用戶賬號
MySQL> GRANT REPLICATION SLAVE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能
MySQL> GRANT FILE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
設置好主伺服器的配置文件後重新啟動資料庫
b.鎖定現有的資料庫並備份現在的數據
鎖定資料庫
MySQL> FLUSH TABLES WITH READ LOCK;
備份資料庫有兩種辦法一種是直接進入到MySQL的data目錄然後打包你需要備份資料庫的文件夾,第二種是使用MySQLmp的方式來備份資料庫但是要加上"--master-data " 這個參數,建議使用第一種方法來備份資料庫
c.查看主伺服器的狀態
MySQL> show master status\G; +---------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | MySQL-bin.003 | 73 | test | manual,MySQL | +---------------+----------+--------------+------------------+
記錄File 和 Position 項目的值,以後要用的。
d.然後把資料庫的鎖定打開
MySQL> UNLOCK TABLES;
4、設置從伺服器
a.首先設置資料庫的配置文件
server-id=n //設置資料庫id默認主伺服器是1 //可以隨便設置但是如果有多台從伺服器則不能重復。 master-host=db-master.mycompany.com //主伺服器的IP地址或者域名 master-port=3306 //主資料庫的埠號 master-user=pertinax //同步資料庫的用戶 master-password=freitag //同步資料庫的密碼 master-connect-retry=60 //如果從伺服器發現主伺服器斷掉,重新連接的時間差 report-host=db-slave.mycompany.com //報告錯誤的伺服器
b.把從主資料庫伺服器備份出來的資料庫導入到從伺服器中
c.然後啟動從資料庫伺服器,如果啟動的時候沒有加上"--skip-slave-start"這個參數則進入到MySQL中
MySQL> slave stop; //停止slave的服務
d.設置主伺服器的各種參數
MySQL> CHANGE MASTER TO -> MASTER_HOST='master_host_name', //主伺服器的IP地址 -> MASTER_USER='replication_user_name', //同步資料庫的用戶 -> MASTER_PASSWORD='replication_password', //同步資料庫的密碼 -> MASTER_LOG_FILE='recorded_log_file_name', //主伺服器二進制日誌的文件名(前面要求記住的參數) -> MASTER_LOG_POS=recorded_log_position; //日誌文件的開始位置(前面要求記住的參數)
e.啟動同步資料庫的線程
MySQL> slave start;
查看資料庫的同步情況吧。如果能夠成功同步那就恭喜了!
查看主從伺服器的狀態
MySQL> SHOW PROCESSLIST\G //可以查看MySQL的進程看看是否有監聽的進程
如果日誌太大清除日誌的步驟如下:
1>.鎖定主資料庫
MySQL> FLUSH TABLES WITH READ LOCK;
2>.停掉從資料庫的slave
MySQL> slave stop;
3>.查看主資料庫的日誌文件名和日誌文件的position
show master status; +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | louis-bin.001 | 79 | | MySQL | +---------------+----------+--------------+------------------+
4>.解開主資料庫的鎖
MySQL> unlock tables;
5>.更新從資料庫中主資料庫的信息
MySQL> CHANGE MASTER TO -> MASTER_HOST='master_host_name', //主伺服器的IP地址 -> MASTER_USER='replication_user_name', //同步資料庫的用戶 -> MASTER_PASSWORD='replication_password', //同步資料庫的密碼 -> MASTER_LOG_FILE='recorded_log_file_name', //主伺服器二進制日誌的文件名(前面要求記住的參數) -> MASTER_LOG_POS=recorded_log_position; //日誌文件的開始位置(前面要求記住的參數)
6>.啟動從資料庫的slave
MySQL> slave start;

⑤ MySQL的備份與還原,非常規備份,全量備份,增量備份

1:官方百萬級別的測試資料庫:

官方測試資料庫github網址:https://github.com/datacharmer/test_db

下載到目錄,解壓即可,運行命令:

2:自己創建簡單測試資料庫:

快速隨機生成測試語言的網站:https://generatedata.com/

選擇sql和想生成的欄位,點擊生成Generate!生成即可。

在MySQL輸入生成的語句即可。

3:測試備份還原時用到的命令

刪庫跑路測試(先備份好)

還原後查詢庫的表數據是否完整。

採用復制整個數據存放目錄

1:查看資料庫數據存放位置

有兩種方法:

1):在資料庫中用命令 show variables like 'datadir' 查看

2):在配置文件中查看,配置了 datadir 目錄的可查看。沒有配置的默認為 /var/lib/mysql/ 位置

Linux中查看配置文件


2:復制目錄或者目錄下某個資料庫名

3:還原時直接復制文件夾到資料庫目錄即可


mysqlmp又可叫做全量備份。

參數 --databases 同 -B ,單獨一個庫,也可省略。

1、備份命令mysqlmp格式

格式:mysqlmp -h主機名 -P埠 -u用戶名 -p密碼 database 資料庫名 > 文件名.sql

備份testDatabase資料庫

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

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

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

備份並壓縮

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

備份testDatabase中的myTable表,不需要用參數 --databases 或者 -B

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

同時備份testDatabase和 employees兩個庫

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

參數 --all-databases 同 -A

7、還原MySQL資料庫的命令

1) 不指定數據名還原,默認生成原資料庫名稱,還原所有資料庫。

2) 指定數據名還原,還原指定單個資料庫,需在資料庫種預先創建一個testDatabase名稱。

3) 還原壓縮的MySQL資料庫

4) 進入資料庫用source導入

增量備份是針對於資料庫的bin-log日誌進行備份的,增量備份是在全量的基礎上進行操作的。增量備份主要是靠mysql記錄的bin-log日誌。

1:查看是否開啟bin-log日誌

進入mysql輸入命令可查看。

顯示如下為開啟狀態,日誌文件在/var/lib/mysql/以binlog.00001的格式保存。

如未開啟,需要在配置文件種配置


2:查看目前使用的bin-log日誌文件

進入mysql查看命令。

顯示如下,目前使用的是binlog.000022文件,所有操作都記錄在此文件。

查看當前testDatabase的表myTable數據如下,

3:刷新日誌,使用新的日誌文件(備份)

在命令端執行命令

日誌文件從 binlog.000022 變為 binlog.000023

這時相當與已經備份成功,備份文件即為上次的binlog.000022日誌文件。

4:刪除數量,從日誌還原數據

1) 刪除ABC行

查詢以及沒有ABC行列。

2) 恢復數據ABC行

退出mysql,在命令端用mysqlbinlog命令恢復到binlog.000022日誌狀態。

進入資料庫再次查看數據,ABC已經恢復。

增量備份完成。

⑥ mysql備份方式有哪些

資料庫最直接的備份方法就是使用自帶的mysqlmp命令進行備份。
1、 mysqlmp命令備份數據
在MySQL中提供了命令行導出資料庫數據以及文件的一種方便的工具mysqlmp,我們可以通過命令行直接實現資料庫內容的導出mp,首先我們簡單了解一下mysqlmp命令用法:
#MySQLmp常用
mysqlmp -u root -p --databases 資料庫1 資料庫2 > xxx.sql
2、 mysqlmp常用操作實例
2.1備份全部資料庫的數據和結構
mysqlmp -uroot -p123456 -A > /data/mysqlDump/mydb.sql
2.2備份全部資料庫的結構(加 -d 參數)
mysqlmp -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql
2.3 備份全部資料庫的數據(加 -t 參數)
mysqlmp -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql
2.4 備份單個資料庫的數據和結構(,資料庫名mydb)
mysqlmp -uroot-p123456 mydb > /data/mysqlDump/mydb.sql
2.5 備份單個資料庫的結構
mysqlmp -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
2.6 備份單個資料庫的數據
mysqlmp -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql2
2.7 備份多個表的數據和結構(數據,結構的單獨備份方法與上同)
mysqlmp -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
2.8 一次備份多個資料庫
mysqlmp -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

⑦ mysql如何用一條命令備份兩個資料庫中的表

咨詢記錄 · 回答於2021-11-25