加入收藏 | 设为首页 | 会员中心 | 我要投稿 重庆站长网 (https://www.023zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

ubuntu 16.04配置MySQL主从同步的配置办法

发布时间:2022-03-02 14:59:27 所属栏目:MySql教程 来源:互联网
导读:准备工作 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 访问数据库的
      准备工作
 
     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
 
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-id
bind-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;" #刷新权限
3.查看master状态,记录二进制文件名(mysql-bin.000001)和位置(333802):
 
4.主库备份,为从库的第一次数据同步准备数据
 
使用如下脚本产生数据库备份文件
 
#此处以备份wordpress数据库为例子
datadump=`which mysqldump`
mysqluser="root"
userpass="password"
wordpressdb="wordpress"
backupwordpress_sql=$wordpressdb.`date +%Y%m%d`.sql
if $datadump -u $mysqluser --password=$userpass -h localhost --opt $wordpressdb > $backupwordpress_sql 2>&1
then
  echo " backup $wordpressdb success"
else
  echo " backup $wordpressdb error"
  exit 1
fi
#检验文件尾部是否存在 “-- Dump completed on”,如果存在不存在,则说明备份出错了。
if [ 0 -eq "$(sed '/^$/!h;$!d;g' $backupwordpress_sql | grep -c "Dump completed on")" ];
then
 echo " backup $wordpressdb error"
 exit 1
else
 echo " backup $wordpressdb success"
fi
执行脚本,确保最后输出备份成功
 
$ cd ~
$ sudo bash backup_wordpress.sh

(编辑:重庆站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读