mysql同步資料庫的操作實在有些麻煩,又常會出現一些資料庫不同步時的問題,不容易掌控。所以退而求其次,採用非即時的複製方式。
前置作業:
1.先將僅在內部進行偵聽的安全機制打開,讓外面的主機可以讀取資料庫
原因是mysql的安全機制
用telnet 192.168.1.9 3306 會發現被拒絕,無法連入
問題在於服務器僅在內部進行偵聽。
較新版本的Ubuntu(≥16.04)在/etc/mysql/mysql.conf.d/mysqld.cnf
中可能有此行。
2.複mysql user中的rootI權限,指定讀取主機。
用mysqldump工具讀取遠端資料庫
mysqldump -h sa.xxx.xxx -u root -p'xxxxxx' demo > /tmp/demo.sql
可以指定讀取不同主機的資料庫,會出現安全性的警告,不可以在命令列打密碼
mysqldump: [Warning] Using a password on the command line interface can be insecure.
用變數將密碼傳入可以解決這個問題
最終程式碼:
單一行的寫法 export MYPW=xxxxxx && mysqldump -h 125.x.xxx.xxx -u root -p$MYPW --databases gtnpa | mysql -u root -p$MYPW .sh的寫法 #!/bin/sh MYPW=xxxxxx mysqldump -h 125.x.xxx.xxx -u root -p$MYPW --databases gtnpa | mysql -u root -p$MYPW