[mysql]複製資料庫

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

 

本篇發表於 程式設計。將永久鏈結加入書籤。