當前位置:首頁 » 網頁前端 » mysql遠程腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql遠程腳本

發布時間: 2022-10-03 08:55:46

㈠ mysql 設置遠程訪問許可權 需要重啟嗎

重啟mysql 服務就可以 , 無需重啟電腦

㈡ 如何遠程備份MySQL binlog

腳本對遠程伺服器進行備份的方式,有個缺點:無法對MySQL伺服器當前正在寫的二進制日誌文件進行備份。所以,只能等到MySQL伺服器全部寫完才能進行備份。而寫完一個binlog的時間並不固定,這就導致備份周期的不確定。
從MySQL5.6開始,mysqlbinlog支持將遠程伺服器上的binlog實時復制到本地伺服器上。
mysqlbinlog的實時二進制復制功能並非簡單的將遠程伺服器的日誌復制過來,它是通過MySQL 5.6公布的Replication API實時獲取二進制事件。本質上,就相當於MySQL的從伺服器。與普通伺服器類似,主伺服器發生事件後,一般都會在0.5~1秒內進行備份。
備份命令

mysqlbinlog --read-from-remote-server --raw --host=192.168.244.145 --port=3306 --user=repl --password=repl --stop-never mysql-bin.000001

㈢ 如何執行一個mysql的sql腳本文件

基本步驟如下:
一、創建包含sql命令的sql腳本文件
文件中包含一系列的sql語句,每條語句最後以;結尾,假設文件名為ss.sql,文件內容示例如下(使用「--」進行注釋):--創建表create table 表名稱(Guid Varchar(38) not null primary key,
Title Varchar(255),
) TYPE=InnoDB;--在表A中增加欄位Status
alter table A add Status TinyInt default '0';--在表A上創建索引
create index XX_TaskId_1 on A(Id_);
--在A表中添加一條記錄
Insert into A (Id,ParentId, Name) values(1,0,'名稱');
--添加、修改、刪除數據後,有可能需要提交事務
Commit;二、執行sql腳本文件方法一 使用cmd命令執行(以windows為例,unix或linux的在其類似的控制台下運行)
格式:【Mysql的bin目錄】\mysql –u用戶名 –p密碼 –D資料庫<【sql腳本文件路徑全名】
示例:D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\ss.sql注意事項:1、如果在sql腳本文件中使用了use 資料庫,則-D資料庫選項可以忽略
2、如果【Mysql的bin目錄】中包含空格,則需要使用「」包含,如:
「C:\Program Files\mysql\bin\mysql」 –u用戶名 –p密碼 –D資料庫<【sql腳本文件路徑全名】
3、如果需要將執行結果輸出到文件,可以採用以下模式
D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\ss.sql>d:\dd.txt
方法二 進入mysql的控制台後,使用source命令執行
1、進入mysql控制台
D:\mysql\bin\mysql –uroot –p123456 -Dtest
2、執行sql腳本文件

㈣ 怎麼備份遠程mysql資料庫的腳本文件

在MySQL中進行數據備份的方法有兩種:
1. mysqlhot
這個命令會在拷貝文件之前會把表鎖住,並把數據同步到數據文件中,以避免拷貝到不完整的數據文件,是最安全快捷的備份方法。
命令的使用方法是:
mysqlhot -u root -p<rootpass> db1 db2 … dbn <output_dir>
如果需要備份全部資料庫,可以加上–regexp=」.*」參數。
Mysqlhot命令可自動完成數據鎖定工作,備份時不用關閉伺服器。它還可以刷新日誌,使備份文件和日誌文件的檢查點能保持同步。
2. mysqlmp
這個命令是用來把資料庫倒成sql文件的,是非常古老的命令了。
命令的使用方法是:
mysqlmp -u root -p<rootpass> –hex-blob db1 > db1.sql
加上–hex-blob參數以後,blob數據會被類似BASE64的方法轉換為文本來存儲在sql文件中,就不會導致sql文件格式問題了。經過測試,通過這種方法備份的blob數據再重新恢復回去能夠完全正確。
如果要備份所有的資料庫,可以加上–all-databases參數。
用mysqlmp命令還可直接把資料庫轉移到另外一台伺服器上,不用生成備份文件。重復執行可定期更新遠程資料庫。
% mysqladmin -h remote_host create testdb
% mysqlmp –opt testdb | mysql -h remote_host testdb
另外還可通過ssh遠程調用伺服器上的程序,如:
% ssh remote_host mysqladmin create testdb

㈤ 如何遠程備份MySQL binlog

用腳本對遠程伺服器進行備份的方式,有個缺點:無法對MySQL伺服器當前正在寫的二進制日誌文件進行備份。所以,只能等到MySQL伺服器全部寫完才能進行備份。而寫完一個binlog的時間並不固定,這就導致備份周期的不確定。

從MySQL5.6開始,mysqlbinlog支持將遠程伺服器上的binlog實時復制到本地伺服器上。

mysqlbinlog的實時二進制復制功能並非簡單的將遠程伺服器的日誌復制過來,它是通過MySQL 5.6公布的Replication API實時獲取二進制事件。本質上,就相當於MySQL的從伺服器。與普通伺服器類似,主伺服器發生事件後,一般都會在0.5~1秒內進行備份。

備份命令

mysqlbinlog--read-from-remote-server--raw--host=192.168.244.145--port=3306--user=repl--password=repl--stop-nevermysql-bin.000001

解釋如下:

--read-from-remote-server:用於備份遠程伺服器的binlog。如果不指定該選項,則會查找本地的binlog。

--raw:binlog日誌會以二進制格式存儲在磁碟中,如果不指定該選項,則會以文本形式保存。

--user:復制的MySQL用戶,只需要授予REPLICATION SLAVE許可權。

--stop-never:mysqlbinlog可以只從遠程伺服器獲取指定的幾個binlog,也可將不斷生成的binlog保存到本地。指定此選項,代表只要遠程伺服器不關閉或者連接未斷開,mysqlbinlog就會不斷的復制遠程伺服器上的binlog。

mysql-bin.000001:代表從哪個binlog開始復制。

除了以上選項外,還有以下幾個選項需要注意:

--stop-never-slave-server-id:在備份遠程伺服器的binlog時,mysqlbinlog本質上就相當於一個從伺服器,該選項就是用來指定從伺服器的server-id的。默認為-1。

--to-last-log:代表mysqlbinlog不僅能夠獲取指定的binlog,還能獲取其後生成的binlog,獲取完了,才終止。如果指定了--stop-never選項則會隱式打開--to-last-log選項。

--result-file:用於設置遠程伺服器的binlog,保存到本地的前綴。譬如對於mysql-bin.000001,如果指定--result-file=/test/backup-,則保存到本地後的文件名為/test/backup-mysql-bin.000001。注意:如果將--result-file設置為目錄,則一定要帶上目錄分隔符「/」。譬如--result-file=/test/,而不是--result-file=/test,不然保存到本地的文件名為/testmysql-bin.000001。

不足:

這個方式有個問題,對於常規的主從復制來說,如果主從直接的連接斷開了,則從會自動再次連接,而對於mysqlbinlog,如果斷開了,並不會自動連接。

解決方案:

可通過腳本來彌補上述不足

#!/bin/sh
BACKUP_BIN=/usr/bin/mysqlbinlog
LOCAL_BACKUP_DIR=/backup/binlog/
BACKUP_LOG=/backup/binlog/backuplog
REMOTE_HOST=192.168.244.145
REMOTE_PORT=3306
REMOTE_USER=repl
REMOTE_PASS=repl
FIRST_BINLOG=mysql-bin.000001
#
SLEEP_SECONDS=10
##createlocal_backup_dirifnecessary
mkdir-p${LOCAL_BACKUP_DIR}
cd${LOCAL_BACKUP_DIR}
##運行while循環,連接斷開後等待指定時間,重新連接
while:
do
if[`ls-A"${LOCAL_BACKUP_DIR}"|wc-l`-eq0];then
LAST_FILE=${FIRST_BINLOG}
else
LAST_FILE=`ls-l${LOCAL_BACKUP_DIR}|grep-vbackuplog|tail-n1|awk'{print$9}'`
fi
${BACKUP_BIN}--raw--read-from-remote-server--stop-never--host=${REMOTE_HOST}--port=${REMOTE_PORT}--user=${REMOTE_USER}--password=${REMOTE_PASS}${LAST_FILE}
echo"`date+"%Y/%m/%d%H:%M:%S"`mysqlbinlog停止,返回代碼:$?"|tee-a${BACKUP_LOG}
echo"${SLEEP_SECONDS}秒後再次連接並繼續備份"|tee-a${BACKUP_LOG}
sleep${SLEEP_SECONDS}
done

腳本解讀:

1. 實際上定義了一個死循環,如果備份失敗,則10s後重新連接。

2. 第一次運行時需指定FIRST_BINLOG的值,指從哪個binlog開始復制,一般為mysql-bin.000001。後續執行的時候就直接獲取備份目錄下最新的binlog,從最新的binlog開始復制。

總結:

1. 如果指定了--raw,mysqlbinlog獲取事件後,並不會實時落盤,而是先保存在本地伺服器的內存中,每4K刷盤一次。這也就減少了頻繁的日誌寫操作。如果此時mysqlbinlog和主伺服器之間的連接斷開了,則內存中的binlog會馬上刷新到磁碟中。

2. 盡管mysqlbinlog類似於從伺服器,但從伺服器上的relaylog卻是實時存檔的,即從伺服器獲取主伺服器產生的事件後,會實時寫入到relaylog中。

3. 如果不指定--raw,這個時候會以文本格式存檔,此時,--result-file=/test/不能指定為目錄,必須明確寫上文件名,譬如--result-file=/test/1.sql,此時,mysqlbinlog獲取事件後,是實時落盤的,不會每4K刷盤一次。

㈥ 如何把本地的mysql導出為.sql的腳本,發布到遠程的資料庫上

不知道你是 win還是linux
win下可以用 第三方管理軟體,比如:Navicat for MySQL

你就找個windows用軟體連接.
然後查詢導出吧

㈦ 如何編寫一個mysql資料庫腳本

導出正式伺服器的資料庫和測試伺服器資料庫,並按照指定格式命名。
打開Beyond
Compare軟體,如圖,選擇文本比較,進入到文本比較主界面之後
,如圖選擇要比較的sql文件,然後,軟體會呈現出如圖資料庫結構的不同之處。
即使在比較出兩個資料庫的結構不同之後,對於sql語句的小白來說,很難寫出升級資料庫的升級腳本,下面我們將講解如何利用mysql
workbench來幫你寫sql。
首先,在本地資料庫創建test和release資料庫,創建步驟如圖所示。然後,將第二步導出的資料庫分別導入到新建的資料庫,接下來就可以對release資料庫動手了。
下面以增加資料庫表的一個欄位為例,講解sql語句的生成。由圖中的7個步驟,便可以得到對一個表增加一個欄位的sql語句,對表欄位的增刪改,對表內容的增刪改操作,刪除表操作類似可得。下面講如何得到新建一個表的sql語句。
如圖,便可得到創建表的語句。
上述的sql語句的集合便是資料庫生成腳本,腳本通常是在workbench裡面編輯查看和執行的,幾個基本按鈕的使用如圖。
執行完上述sql腳本之後,正式伺服器的資料庫和測試伺服器的資料庫結構除了主鍵自增值,host差異之外,其餘內容應全部相同,如果不是,則調整腳本內容,直至兩個資料庫的結構相同為止。
此時的資料庫升級腳本仍為資料庫升級暫時腳本,臨時腳本需交由項目負責人審核檢查之後,按照:工程名+版本+時間+正式+資料庫升級腳本.sql保存,並上傳svn,用於新版本發布。

㈧ 用MysQL怎麼進行遠程連接資料庫

1、首先在電腦端登陸數據伺服器進行操作,如圖所示。