2016-11-25 63 views
0

嗨,我正在做一个数据库从主人到奴隶copy and paste。但是,从服务器上有一张表格,我不想被主人覆盖。忽略mysqldump中的表?

我一直在尝试通过cron作业运行下面的bash脚本 - 但它一直覆盖我想忽略的从表。我究竟做错了什么?

#!/bin/bash 

#Database login credentials - need to be changed accordingly 
dbHost="localhost" 

#Master (Staging) 
dbMastUser="admin_site" 
dbMastName="admin_site_pineapple_master" 

#Slave (Live) 
dbSlavUser="admin_sync" 
dbSlavName="admin_site_pineapple_slave" 

dbPass="ExamplePassword" 


EXCLUDED_TABLES=(
forms-responses 
) 

IGNORED_TABLES='' 
for TABLE in "${EXCLUDED_TABLES[@]}" 
do : 
    IGNORED_TABLES+=" --ignore-table=${dbMastName}.${TABLE}" 
done 

#Update the database from the Master to the Slave 
mysqldump -h ${dbHost} -u ${dbMastUser} -p${dbPass} ${dbMastName} ${IGNORED_TABLES} | mysql -h ${dbHost} -u ${dbSlavUser} -p${dbPass} ${dbSlavName} 
+0

你的问题是什么? – Inian

+0

将'localhost' var设置为'$(localhost)'。 –

+0

请参阅[本](http://www.tldp.org/LDP/LG/issue38/tag/6.html) –

回答

1

无视表,你必须使用该语法

mysqldump -h {hostname} -u {username} -p{password} --ignore-table test.votes test > E:/db_backups/test_1480080906.sql 

一般语法

mysqldump -h {hostname} -u {username} -p{password} --ignore-table dbname.tbl_name db_name > E:/db_backups/test_1480080906.sql 

注:我们需要设置的选项忽略一些表

感谢 网速慢W.

+0

感谢您的回复 - 您能否修改您的答案以澄清本节“test.votes测试” –

0
/usr/local/mysql/bin/mysqldump -uroot -p{pwd} --skip-lock-tables --databases f6dms $(mysql -uroot -p{pwd} -Df6dms -Bse "show tables like 'tm_monitor_avg_price_%'"|awk '{print "--ignore-table=f6dms."$1}'|xargs)| gzip > /data/backup/database_f6dms_`date '+%m-%d-%Y'`.sql.gz;