mysql備份腳本shell
『壹』 如何用shell腳本將在mysql資料庫中得到的數據導入到oracle資料庫中
有一個工具是mysql到oracle做數據遷移的叫Convert Mysql to Oracle 你可以試試,不知道合不合適。
非要弄shell的話,那可真是麻煩可以選擇讓程序員寫個小程序轉換sql的讓後用shell調用。
真自己寫shell。。。那就折騰導出來的 create、insert語句吧。想想都頭大。是在沒必要完全用shell弄。
『貳』 MySQL 官方出品,比 mymper 更快的多線程邏輯備份工具-MySQL Shell Dump & Load
MySQL Shell Dump & Load 工具是 MySQL 官方提供的一款功能強大的邏輯備份工具,相比傳統的mysqlmp和mymper,它在數據恢復速度上有著顯著優勢。通過使用 LOAD DATA LOCAL INFILE 命令,MySQL Shell Load 操作比傳統的 INSERT 操作快 20 倍,因此,無論是從備份速度還是恢復速度上,MySQL Shell Dump & Load 都展現出了高效的特點,對資料庫服務的RTO(恢復時間目標)有著積極影響。
MySQL Shell Dump & Load 工具的使用包含幾個關鍵步驟和工具,具體包括 mpInstance、mpSchemas、mpTables 和 loadDump。通過這些工具,用戶可以靈活地對整個實例、特定庫或表進行備份,且支持多種參數配置以適應不同的備份需求。與傳統邏輯備份工具相比,MySQL Shell Dump & Load 更加靈活且高效,能夠滿足不同場景下的備份和恢復需求。
在安裝MySQL Shell時,用戶需根據操作系統選擇對應的版本進行下載和安裝,確保工具的正常運行。安裝後,用戶可通過命令行界面或集成的代碼編輯器進行備份和恢復操作,實現對資料庫的高效管理。
MySQL Shell Dump & Load 的核心優勢在於其強大的性能和靈活性。利用該工具,用戶可以實現快速、高效的資料庫備份和恢復,以提高數據安全性並縮短災難恢復時間。此外,工具還提供了多種配置選項,使得用戶可以根據具體需求進行優化,進一步提升備份和恢復的效率。
在使用MySQL Shell Dump & Load 時,用戶需注意以下幾個關鍵點:
- 保證備份和恢復過程中資料庫的主鍵或唯一索引存在,以便進行 chunk 級別的並行備份。
- 處理無法進行並行備份的表時,應關注導入過程中的自動切割,避免大事務問題。
- MySQL Shell Dump & Load 僅保證 InnoDB 表的一致性備份,並默認不備份特定的系統庫。
- 備份過程中,BLOB 等非文本安全的列會被轉換為 Base64,這可能導致數據大小增加,因此需注意 max_allowed_packet 的限制。
- 導入前,確保目標實例的 local_infile 參數已設置為 ON。
通過以上介紹,我們可以看到MySQL Shell Dump & Load 工具在資料庫管理領域的強大優勢,其提供的一系列功能和優化,使得資料庫的備份和恢復變得更加高效、安全。在實際應用中,正確使用該工具,將有助於提升資料庫管理的效率,降低數據丟失的風險,從而為業務穩定運行提供堅實保障。
『叄』 mysql是用的.sh寫的腳本,執行後提示沒有命令
在Shell中執行mysql的腳本,這里介紹比較容易使用的一種方法
首先寫好sql的腳本,後綴為.sql,比如
sql_file.sql:內容如下
#這是SQL的腳本
create table if not exists test_sql(id int(10),name varchar(20));
insert into test_sql values(1,'正餐');
select * from test_sql;
很簡單的創建、插入、查詢
之後shell的腳本,內容如下
#!/bin/bash #這是執行SQL的腳本,傳入資料庫表,和SQL文件名即可
name=$1
file_name=$2
cd /opt/lampp/bin ./mysql -uroot -p123456 <<EOF
use ${name};
source ${file_name};
EOF
./mysql -uroot -p123456是進入mysql的命令,前面的路徑可以改成自己的絕對路徑
<< EOF EOF 中間可以寫出任意的mysql腳本
其中,如果要執行某個.sql的命令,直接用 source 腳本.sql 即可執行該腳本上面的命令,這里使用的是source sql_file.sql
此外,如果在mysql中需要執行shell腳本
可以在EOF中 ./mysql -uroot -p123456<<EOF \! sh shell.sh EOF
前面加上 !\ +linux中執行的shell命令即可
『肆』 linux shell腳本執行mysql mysql資料庫在遠程伺服器上
方法一、適合所有格式的mysql資料庫,通過對資料庫導出導進寫個腳本定時執行:
1.導出整個資料庫 mysqlmp -u 用戶名 -p 資料庫名 > 導出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc > /存放路徑/wcnc.sql
2.導出一個表 mysqlmp -u 用戶名 -p 資料庫名 表名> 導出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc users> /存放路徑/wcnc_users.sql
3.導出一個資料庫結構 mysqlmp -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路徑/wcnc_db.sql
定義:
-d 沒有數據
--add-drop-table 在每個create語句之前增加一個drop table
4.導入資料庫 常用source 命令 進入mysql資料庫控制台:
如mysql -u root -p mysql>use 資料庫
方法二、針對mysql數據表格式為MyISAM的
假如數據文件在/var/lib/mysql
那麼直接寫個腳本
cp -r /var/lib/mysql /備份到的文件夾路徑
隔機備份用rsync增量,或定時完整備份。
『伍』 Linux 怎麼shell腳本定時備份mysql資料庫
每天定時備份mysql資料庫任務,刪除指定天數前的數據,保留指定天的數據;
需求:
1,每天4點備份mysql數據;
2,為節省空間,刪除超過3個月的所有備份數據;
3,刪除超過7天的備份數據,保留3個月里的
10號
20號
30號的備份數據;
#創建shell文件
vim
backup_mysql.sh
mysqlmp
-uroot
-p123456
--all-databases
>
/data/dbdata/mysqlbak/`date
+%Y%m%d`.sql
find
/data/dbdata/mysqlbak/
-mtime
+7
-name
'*[1-9].sql'
-exec
rm
-rf
{}
\;
find
/data/dbdata/mysqlbak/
-mtime
+92
-name
'*.sql'
-exec
rm
-rf
{}
\;
#創建定時任務
crontab
–e
0
4
*
*
*
/data/dbdata/backup_mysql.sh
『陸』 MySQL Shell 使用指南
MySQL Shell 使用概述
MySQL Shell 是 Oracle 推出的官方高級客戶端工具,自 MySQL 8.0 版本開始廣泛應用。盡管筆者之前較少使用,但近期在 MySQL 8.0 上的探索,促使我們深入學習這個新工具。MySQL Shell 不僅支持傳統的 SQL,還嵌入了 Python 和 JavaScript 語言,為用戶提供了更豐富的交互方式和靈活性,適用於 MySQL Server、MySQL Router、InnoDB Cluster 等多種產品,並集成了資料庫管理、集群控制、插件支持和備份恢復等功能。
安裝 MySQL Shell 非常簡便,官網提供了適用於不同系統的版本下載,包括二進制包和 rpm 包。在 CentOS 7.9 上,我們可通過選擇對應系統和版本下載並安裝。啟動時,MySQL Shell 允許在 SQL、JavaScript 或 Python 三種模式間切換,通過 sql、js 或 py 命令激活。
在 SQL 模式下,MySQL Shell 與傳統 mysql 客戶端相似,但提供自動補全功能,便於歷史命令查看。更重要的是,它支持 JavaScript 和 Python,為高級腳本操作提供了可能。比如,util 模塊提供了實用的備份恢復工具,包括全量備份、邏輯備份的創建與恢復,以及對 local_infile 參數的考慮。
在備份恢復方面,MySQL Shell 顯示詳細的信息,操作靈活,包括各種參數的設置,如 destinationPath 和 options。通過 util.loadDump 命令,可以方便地進行數據恢復。總結來說,MySQL Shell 以其強大的功能和智能化特性,為資料庫管理員(DBA)提供了高效、靈活的備份恢復解決方案,是新一代資料庫工具的有力補充。
『柒』 mysqladmin命令的用法
問題:
用shell寫一個腳本用來監控mysql進程運行狀態 測試一下能不能連上mysql 不能的話則發郵件報警 至於怎麼監控 其實有很多命令 比如大部分在mysql/bin目錄下的命令都可以用來測試mysql進程的運行狀態 只要掛掉了則命令就會返回錯誤
mysqladmin 如何創建新表!
用於執行管理性操作 語法是
shell>; mysqladmin [OPTIONS] mand [mand option] mand
通過執行mysqladmin help 你可以得到你mysqladmin的版本所支持的一個選項列表
目前mysqladmin支持下列命令
create databasename 創建一個新資料庫
drop databasename 刪除一個資料庫及其所有表
extended status 給出伺服器的一個擴展狀態消息
flush hosts 洗掉所有緩存的主機
flush logs 洗掉所有日誌
flush tables 洗掉所有表
flush privileges 再次裝載授權表(同reload)
kill id id 殺死mysql線程
password 新口令 將老口令改為新口令
ping 檢查mysqld是否活著
processlist 顯示服務其中活躍線程列表
reload 重載授權表
refresh 洗掉所有表並關閉和打開日誌文件
shutdown 關掉伺服器
status 給出伺服器的簡短狀態消息
variables 列印出可用變數
version 得到伺服器的版本信息
所有命令可以被縮短為其唯一的前綴 例如
shell>; mysqladminprocstat
+ + + + + + + + +
| Id|User|Host|db|Command|Time|State|Info|
+ + + + + + + + +
| |monty|localhost||Processlist| |||
+ + + + + + + + +
Uptime: Threads: Questions: Slowqueries: Opens: Flushtables:
Open tables: Memoryinuse: KMaxmemoryused: K
mysqladmin status命令結果有下述列
Uptime MySQL伺服器已經運行的秒數
Threads 活躍線程(客戶)的數量
Questions 從mysqld啟動起來自客戶問題的數量
Slow queries 已經超過long_query_time秒的查詢數量
Opens mysqld已經打開了多少表
Flush tables flush refresh和reload命令數量
Open tables 現在被打開的表數量
Memory in use 由mysqld代碼直接分配的內存(只有在MySQL用 with debug編譯時可用)
Max memory used 由mysqld代碼直接分配的最大內存(只有在MySQL用 with debug編譯時可用)
主要是管理 不是使用 使用的話直接進入mysql create table
也可以mysqldmin create database
/*** sql(這裡面是導出或者自己寫的語句)
lishixin/Article/program/MySQL/201311/29510
『捌』 如何使用shell腳本每天自動備份mysql資料庫
mysql備份用自帶的備份工具mysqlmp
每天自動執行用cron工具,把mysql的備份命令放在.sh文件裡面
.sh文件放在/etc/cron.daily目錄,就會每天自動執行了。