login_db和user_db分布在2臺mysql伺服器。uin和username的對應關係存放在user_db,login_db只有uin。
所以匯出login流水時,無法直接關聯username,不方便。
因為對一致性沒有要求,不需要強同步。所以懶得費周章的去弄主從,網上找了下資料,實現方法so easy,在login_db上執行:
1、shell> mysqldump -h$user_db_svr_ip --add-drop-table -u$mysql_user $database_name $table_name1
$table_name2
> result.sql
2、shell> mysql -u $mysql_user $database_name
< /data/result.sql
查好命令,寫個指令碼丟到crontab就好。先手動跑一次試試,結果遇到的報錯:
mysqldump: got error: 1044: access denied for user '$mysql_user
'@'$ip' to database '$database_name
' when doing lock tables
啥?!mysqldump備份時,還要鎖表?!
在生產環境鎖表可能帶來一堆麻煩事,怎麼破?
再次祭出大招:google,,,原來mysqldump可以加個引數:--single-transaction
下文翻譯自:
該選項設定事務隔離模式為repeatable read
,並在 dumping data 之前傳送乙個start transaction sql 的狀態到伺服器。該選項僅對事務表有用,如 innodb,因為dump資料庫的一致狀態時,start transaction 不會阻塞應用。
使用該選項時應牢記,只有 dump innodb表時會保持一致狀態。例如,dump 任何 myisam 或 memory表時,就算用了此選項,仍可改變狀態。
mysql 5.5.3以前的版本中,當 --single-transaction dump 進行時,確保有效的dump檔案(正確的表內容和二進位制日誌座標) ,沒有其他的連線應使用以下語句:alter table, create table, drop table, rename table, truncate table。a consistent read沒有被從這些狀態中隔離,所以在dump時使用前面的語句會導致mysqldump 執行 select 取到的內容包含不正確的資料或直接失敗。從mysql 5.5.3開始,metadata(元資料) locking可防止這種情況。
--single-transaction 和 --lock-tables 是互斥的,因為 lock tables 導致任何pending的事務被隱式的提交.
該選項不支援mysql 集群 tables,ndbcluster 儲存引擎僅支援 read_committed 事務隔離級別,不能保證結果的一致性。你應該總是使用 ndb 備份和還原。
dump大表時,結合 --single-transaction 和 --quick 選項。
mysql> select version();
好吧,mysql版本確實有點舊了,下次找個時間公升級5.6
sqlserver跨伺服器備份表資料
跨伺服器資料庫 資料查詢可以用 openrowset 用法如下 select into 表名 from openrowset sqloledb 資料庫ip 賬號 密碼 資料庫名稱.dbo.表名 如果發現下面錯誤 訊息 15281,級別 16,狀態 1,第 1 行 sql server 阻止了對元件 ...
Linux伺服器系統備份還原
利用tar指令對linux系統下面的檔案打包成為乙個壓縮檔案。tar cvpzf backup.tgz exclude proc exclude lost found exclude mnt exclude sys exclude media 利用scp命令進行不同伺服器間資料拷貝傳輸,只需在備份端...
mysql跨伺服器查詢
2013 8 22 10 34 發布者 天空之城 檢視 16547 摘要 本地mysql資料庫要訪問遠端mysql資料庫的表中的資料,必須通過federated儲存引擎來實現.有點類似oracle中的資料庫鏈結 dblink 要允許這個儲存引擎,當構建mysql時使用 with federated ...