準備工作
1.主從數據庫版本最好一致
2.主從數據庫內數據保持一致
主數據庫:121.199.27.227 /ubuntu 16.04 MySQL 5.7.21 ( 阿里云 )
從數據庫:182.254.149.39 /ubuntu 16.04 MySQL 5.7.21 ( 騰訊云 )
防火墻配置
配置主服務器只允許特定 IP 訪問數據庫的端口,避免不必要的攻擊。
主庫防火墻配置
| # iptables -A INPUT -p tcp -s slave_ip --dport 3306 -j ACCEPT#刪除可能已經存在的配置,避免出現多條重復記錄$ sudo iptables -D INPUT -p tcp -s 182.254.149.39 --dport 3306 -j ACCEPT $ sudo iptables -D INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT $ sudo iptables -D INPUT -p tcp --dport 3306 -j DROP $ sudo iptables -D INPUT -p udp --dport 3306 -j DROP $ sudo iptables -D INPUT -p sctp --dport 3306 -j DROP#增加配置,只允許特定地址訪問數據庫端口$ sudo iptables -A INPUT -p tcp -s 182.254.149.39 --dport 3306 -j ACCEPT$ sudo iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT$ sudo iptables -A INPUT -p tcp --dport 3306 -j DROP$ sudo iptables -A INPUT -p udp --dport 3306 -j DROP$ sudo iptables -A INPUT -p sctp --dport 3306 -j DROP$ sudo iptables -L -n#保存配置$ sudo apt-get install iptables-persistent$ sudo netfilter-persistent save#配置被保存到/etc/iptables/rules.v4 /etc/iptables/rules.v6這兩個文件下面,#最好確認一下實際保存的內容,尤其是安裝了denyhosts等其他安全軟件的情況下,#可能會記錄了多余的規則,需要手工刪除從庫防火墻配置# iptables -A OUTPUT -p tcp -d master_ip --dport 3306 -j ACCEPT#刪除可能已經存在的配置,避免出現多條重復記錄$ sudo iptables -D OUTPUT -p tcp -d 121.199.27.227 --dport 3306 -j ACCEPT#增加配置$ sudo iptables -A OUTPUT -p tcp -d 121.199.27.227 --dport 3306 -j ACCEPT$ sudo iptables -L -n#保存配置$ sudo apt-get install iptables-persistent$ sudo netfilter-persistent save#配置被保存到/etc/iptables/rules.v4 /etc/iptables/rules.v6這兩個文件下面,#最好確認一下實際保存的內容,尤其是安裝了denyhosts等其他安全軟件的情況下,#可能會記錄了多余的規則,需要手工刪除 |
主數據庫master配置
1.修改mysql配置
| $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf |
在[mysqld]部分進行如下修改:
| [mysqld]log-bin = /var/log/mysql/mysql-bin.log #開啟二進制日志,默認是注釋掉的,我們去掉注釋server-id = 1 #設置server-idbind-address = 0.0.0.0 #默認是127.0.0.1,此處我們設置為任意地址,放開遠程訪問,這么操作之前一定要確保防火墻配置正確,否則會產生安全風險 |
2.重啟mysql,創建用于同步的用戶賬號
創建用戶并授權:用戶:repl 密碼:slavepass
| $ sudo service mysql restart$ mysql -u root -p -e "CREATE USER 'repl'@'182.254.149.39' IDENTIFIED BY 'slavepass';" #創建用戶$ mysql -u root -p -e "GRANT REPLICATION SLAVE ON *.* TO 'repl'@'182.254.149.39';" #分配權限$ mysql -u root -p -e "flush privileges;" #刷新權限 |