准备工作
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;" #刷新权限 |